diff --git a/lua/app/common/bi_report.lua b/lua/app/common/bi_report.lua
index f91aab77..039da2d7 100644
--- a/lua/app/common/bi_report.lua
+++ b/lua/app/common/bi_report.lua
@@ -154,6 +154,8 @@ BIReport.ITEM_GET_TYPE = {
DUNGEON_RUNE_SETTLEMENT = "DungeonRuneSettlement",
DUNGEON_RUNE_SWEEP = "DungeonRuneSweep",
DUNGEON_RUNE_BUY_WING = "DungeonRunebuyWing",
+ RUNES_QUENCHING = "RuneQuenching",
+ RUNES_GIFT = "RuneGift",
}
BIReport.ADS_CLICK_TYPE = {
@@ -227,6 +229,7 @@ BIReport.GIFT_TYPE = {
ACT_SUMMER = "ActSummer",
ACT_HERO_FUND = "ActHeroFund",
FOURTEEN_DAY_GIFT = "FourteenDayGift",
+ RUNES_GIFT = "RunesGift",
}
BIReport.COIN_TYPE = {
diff --git a/lua/app/common/data_manager.lua b/lua/app/common/data_manager.lua
index d38f5f9a..e68db3fb 100644
--- a/lua/app/common/data_manager.lua
+++ b/lua/app/common/data_manager.lua
@@ -16,6 +16,7 @@ function DataManager:init()
self:initManager("BagData", "app/userdata/bag/bag_data")
self:initManager("EquipData", "app/userdata/equip/equip_data")
self:initManager("SkinData", "app/userdata/skin/skin_data")
+ self:initManager("RunesData", "app/userdata/runes/runes_data")
self:initManager("BattleData", "app/userdata/battle/battle_data")
self:initManager("BattlePVPData", "app/userdata/battle/battle_pvp_data")
self:initManager("FormationData", "app/userdata/formation/formation_data")
@@ -106,6 +107,7 @@ function DataManager:clear()
self.BagData:clear()
self.EquipData:clear()
self.SkinData:clear()
+ self.RunesData:clear()
self.FormationData:clear()
self.ActivityData:clear()
self.MailData:clear()
@@ -151,7 +153,8 @@ function DataManager:initWithServerData(data)
self.EquipData:init(data.heroes_equips)
self.EquipData:initGifts(data.act_weapon_armor_gift)
self.SkinData:init(data.bag.skins)
- -- HeroData要在EquipData和SkinData之后初始化,依赖它们的属性数据
+ self.RunesData:init(data.rune)
+ -- HeroData要在EquipData、SkinData、RunesData之后初始化,依赖它们的属性数据
self.HeroData:init(data.bag.heroes)
self.BagData:init(data.bag)
self.FormationData:init(data.fight_info)
diff --git a/lua/app/common/module_manager.lua b/lua/app/common/module_manager.lua
index 684868be..e7561401 100644
--- a/lua/app/common/module_manager.lua
+++ b/lua/app/common/module_manager.lua
@@ -69,6 +69,8 @@ local MODULE_PATHS = {
EquipManager = "app/module/equip/equip_manager",
-- 皮肤
SkinManager = "app/module/skin/skin_manager",
+ -- 皮肤
+ RunesManager = "app/module/runes/runes_manager",
-- 英雄基金
HeroFundManager = "app/module/activity/hero_fund/hero_fund_manager",
-- 世界首领活动
diff --git a/lua/app/common/pay_manager.lua b/lua/app/common/pay_manager.lua
index e6c6b0b1..1e860e1c 100644
--- a/lua/app/common/pay_manager.lua
+++ b/lua/app/common/pay_manager.lua
@@ -27,6 +27,7 @@ PayManager.PURCHARSE_ACT_TYPE = {
WEAPON_UPGRADE_GIFT = 15,
ARMOR_UPGRADE_GIFT = 16,
FOURTEEN_DAY_GIFT = 17,
+ RUNES_GIFT = 21,
}
PayManager.PURCHARSE_TYPE_CONFIG = {
@@ -56,6 +57,7 @@ PayManager.BI_ITEM_GET_TYPE = {
[PayManager.PURCHARSE_ACT_TYPE.WEAPON_UPGRADE_GIFT] = BIReport.ITEM_GET_TYPE.WEAPON_GIFT,
[PayManager.PURCHARSE_ACT_TYPE.ARMOR_UPGRADE_GIFT] = BIReport.ITEM_GET_TYPE.ARMOR_GIFT,
[PayManager.PURCHARSE_ACT_TYPE.FOURTEEN_DAY_GIFT] = BIReport.ITEM_GET_TYPE.FOURTEEN_DAY_GIFT,
+ [PayManager.PURCHARSE_ACT_TYPE.RUNES_GIFT] = BIReport.ITEM_GET_TYPE.RUNES_GIFT,
},
[PayManager.PURCHARSE_TYPE.ACT_GOLD_PIG] = BIReport.ITEM_GET_TYPE.GOLD_PIG,
[PayManager.PURCHARSE_TYPE.MALL_TREASURE] = BIReport.ITEM_GET_TYPE.MALL_TREASURE,
@@ -82,6 +84,7 @@ PayManager.BI_GIFT_TYPE = {
[PayManager.PURCHARSE_ACT_TYPE.WEAPON_UPGRADE_GIFT] = BIReport.GIFT_TYPE.WEAPON_GIFT,
[PayManager.PURCHARSE_ACT_TYPE.ARMOR_UPGRADE_GIFT] = BIReport.GIFT_TYPE.ARMOR_GIFT,
[PayManager.PURCHARSE_ACT_TYPE.FOURTEEN_DAY_GIFT] = BIReport.GIFT_TYPE.FOURTEEN_DAY_GIFT,
+ [PayManager.PURCHARSE_ACT_TYPE.RUNES_GIFT] = BIReport.GIFT_TYPE.RUNES_GIFT,
},
[PayManager.PURCHARSE_TYPE.ACT_GOLD_PIG] = BIReport.GIFT_TYPE.GOLD_PIG,
[PayManager.PURCHARSE_TYPE.MALL_TREASURE] = BIReport.GIFT_TYPE.MALL_TREASURE,
diff --git a/lua/app/common/server_push_manager.lua b/lua/app/common/server_push_manager.lua
index f7c33fae..495667e0 100644
--- a/lua/app/common/server_push_manager.lua
+++ b/lua/app/common/server_push_manager.lua
@@ -23,6 +23,7 @@ function ServerPushManager:initWhenLogin()
self:addServerPushListener(ProtoMsgType.FromMsgEnum.AIHelpUnreadNtf, ModuleManager.GameSettingManager, ModuleManager.GameSettingManager.rspAiHelperNtf)
self:addServerPushListener(ProtoMsgType.FromMsgEnum.RecoveryNtf, ModuleManager.ItemManager, ModuleManager.ItemManager.rspRecoveryNtf)
self:addServerPushListener(ProtoMsgType.FromMsgEnum.BossRushBoughtNtf, ModuleManager.ActBossRushManager, ModuleManager.ActBossRushManager.rspBossRushBoughtNtf)
+ self:addServerPushListener(ProtoMsgType.FromMsgEnum.RuneUpdateNtf, ModuleManager.RunesManager, ModuleManager.RunesManager.rspUpdate)
end
---- 移除全局推送监听
diff --git a/lua/app/config/activity_pvp_wingift.lua b/lua/app/config/activity_pvp_wingift.lua
index 0eddda0a..1bcccc12 100644
--- a/lua/app/config/activity_pvp_wingift.lua
+++ b/lua/app/config/activity_pvp_wingift.lua
@@ -1,5 +1,6 @@
local activity_pvp_wingift = {
[1]={
+ ["win"]=1,
["reward"]={
{
["type"]=1,
@@ -20,6 +21,7 @@ local activity_pvp_wingift = {
}
},
[2]={
+ ["win"]=4,
["reward"]={
{
["type"]=1,
@@ -40,6 +42,7 @@ local activity_pvp_wingift = {
}
},
[3]={
+ ["win"]=7,
["reward"]={
{
["type"]=1,
@@ -60,6 +63,7 @@ local activity_pvp_wingift = {
}
},
[4]={
+ ["win"]=10,
["reward"]={
{
["type"]=1,
diff --git a/lua/app/config/arena_rank.lua b/lua/app/config/arena_rank.lua
index aaaf7bdf..7ed06955 100644
--- a/lua/app/config/arena_rank.lua
+++ b/lua/app/config/arena_rank.lua
@@ -3303,8 +3303,8 @@ local arena_rank = {
["type_for_nothing"]="Vw==",
["id"]=1,
["id_for_nothing"]="Vw==",
- ["num"]=46000,
- ["num_for_nothing"]="Ug5cA2U="
+ ["num"]=25000,
+ ["num_for_nothing"]="VA1cA2U="
},
{
["type"]=1,
@@ -5383,8 +5383,8 @@ local arena_rank = {
["type_for_nothing"]="Vw==",
["id"]=1,
["id_for_nothing"]="Vw==",
- ["num"]=54000,
- ["num_for_nothing"]="UwxcA2U="
+ ["num"]=25000,
+ ["num_for_nothing"]="VA1cA2U="
},
{
["type"]=1,
diff --git a/lua/app/config/buff.lua b/lua/app/config/buff.lua
index 1d56329c..7e0ced84 100644
--- a/lua/app/config/buff.lua
+++ b/lua/app/config/buff.lua
@@ -53,7 +53,9 @@ local buff = {
["stack"]=2,
["position"]=1,
["decr"]=1,
- ["icon"]="dec_dmg_red_add"
+ ["icon"]="dec_dmg_red_add",
+ ["show_name"]=true,
+ ["ispercent"]=1
},
[8]={
["id"]=8,
@@ -62,7 +64,9 @@ local buff = {
["stack"]=2,
["position"]=2,
["decr"]=1,
- ["icon"]="dec_dmg_yellow_add"
+ ["icon"]="dec_dmg_yellow_add",
+ ["show_name"]=true,
+ ["ispercent"]=1
},
[9]={
["id"]=9,
@@ -71,7 +75,9 @@ local buff = {
["stack"]=2,
["position"]=3,
["decr"]=1,
- ["icon"]="dec_dmg_green_add"
+ ["icon"]="dec_dmg_green_add",
+ ["show_name"]=true,
+ ["ispercent"]=1
},
[10]={
["id"]=10,
@@ -80,7 +86,9 @@ local buff = {
["stack"]=2,
["position"]=4,
["decr"]=1,
- ["icon"]="dec_dmg_blue_add"
+ ["icon"]="dec_dmg_blue_add",
+ ["show_name"]=true,
+ ["ispercent"]=1
},
[11]={
["id"]=11,
@@ -89,7 +97,9 @@ local buff = {
["stack"]=2,
["position"]=5,
["decr"]=1,
- ["icon"]="dec_dmg_purple_add"
+ ["icon"]="dec_dmg_purple_add",
+ ["show_name"]=true,
+ ["ispercent"]=1
},
[12]={
["id"]=12,
@@ -97,7 +107,9 @@ local buff = {
["buff_type"]=1,
["stack"]=2,
["decr"]=1,
- ["icon"]="dec_dmg_all_add"
+ ["icon"]="dec_dmg_all_add",
+ ["show_name"]=true,
+ ["ispercent"]=1
},
[13]={
["id"]=13,
@@ -192,7 +204,8 @@ local buff = {
["buff_type"]=1,
["stack"]=2,
["decr"]=1,
- ["icon"]="weakness_all_add"
+ ["icon"]="weakness_all_add",
+ ["ispercent"]=1
},
[25]={
["id"]=25,
@@ -406,6 +419,7 @@ local buff = {
["formula"]=4,
["icon"]="burn",
["show_name"]=true,
+ ["ispercent"]=1,
["fx_take"]={
36
}
@@ -416,6 +430,8 @@ local buff = {
["buff_type"]=1,
["decr"]=2,
["icon"]="vulnerable",
+ ["show_name"]=true,
+ ["ispercent"]=1,
["fx_get"]={
34
}
@@ -444,6 +460,7 @@ local buff = {
["formula"]=4,
["icon"]="poison",
["show_name"]=true,
+ ["ispercent"]=1,
["fx_take"]={
35
}
@@ -467,6 +484,7 @@ local buff = {
["decr"]=2,
["icon"]="corrupt",
["show_name"]=true,
+ ["ispercent"]=1,
["fx_get"]={
19
}
@@ -479,6 +497,7 @@ local buff = {
["formula"]=4,
["icon"]="bleed",
["show_name"]=true,
+ ["ispercent"]=1,
["fx_take"]={
31
}
@@ -490,6 +509,7 @@ local buff = {
["decr"]=2,
["icon"]="weaken",
["show_name"]=true,
+ ["ispercent"]=1,
["fx_continued"]={
33
}
@@ -530,7 +550,7 @@ local buff = {
["id"]=59,
["name"]="first_hand",
["buff_type"]=1,
- ["decr"]=3,
+ ["decr"]=1,
["icon"]="first_hand"
},
[60]={
@@ -559,7 +579,8 @@ local buff = {
["stack"]=1,
["decr"]=1,
["icon"]="counterattack",
- ["show_name"]=true
+ ["show_name"]=true,
+ ["ispercent"]=1
},
[63]={
["id"]=63,
@@ -568,6 +589,7 @@ local buff = {
["decr"]=1,
["icon"]="thorns",
["show_name"]=true,
+ ["ispercent"]=1,
["fx_continued"]={
18
}
@@ -765,7 +787,7 @@ local buff = {
["decr"]=1,
["formula"]=3,
["icon"]="rebirth",
- ["fx_take"]={
+ ["fx_disappear"]={
44
}
},
@@ -790,6 +812,7 @@ local buff = {
["decr"]=1,
["formula"]=3,
["icon"]="self_heal",
+ ["show_name"]=true,
["fx_take"]={
300027
}
@@ -799,14 +822,103 @@ local buff = {
["name"]="charm",
["buff_type"]=7,
["decr"]=2,
- ["icon"]="charm"
+ ["icon"]="charm",
+ ["show_name"]=true
},
[88]={
["id"]=88,
["name"]="immune",
["buff_type"]=7,
["decr"]=1,
- ["icon"]="immune"
+ ["icon"]="immune",
+ ["show_name"]=true
+ },
+ [89]={
+ ["id"]=89,
+ ["name"]="forever_first_hand",
+ ["buff_type"]=1,
+ ["decr"]=3,
+ ["icon"]="first_hand"
+ },
+ [90]={
+ ["id"]=90,
+ ["name"]="forever_counterattack",
+ ["buff_type"]=1,
+ ["stack"]=1,
+ ["decr"]=3,
+ ["icon"]="counterattack",
+ ["ispercent"]=1
+ },
+ [91]={
+ ["id"]=91,
+ ["name"]="forever_dec_dmg_red_add",
+ ["buff_type"]=1,
+ ["stack"]=2,
+ ["position"]=1,
+ ["decr"]=3,
+ ["icon"]="dec_dmg_red_add",
+ ["ispercent"]=1
+ },
+ [92]={
+ ["id"]=92,
+ ["name"]="forever_dec_dmg_yellow_add",
+ ["buff_type"]=1,
+ ["stack"]=2,
+ ["position"]=2,
+ ["decr"]=3,
+ ["icon"]="dec_dmg_yellow_add",
+ ["ispercent"]=1
+ },
+ [93]={
+ ["id"]=93,
+ ["name"]="forever_dec_dmg_green_add",
+ ["buff_type"]=1,
+ ["stack"]=2,
+ ["position"]=3,
+ ["decr"]=3,
+ ["icon"]="dec_dmg_green_add",
+ ["ispercent"]=1
+ },
+ [94]={
+ ["id"]=94,
+ ["name"]="forever_dec_dmg_blue_add",
+ ["buff_type"]=1,
+ ["stack"]=2,
+ ["position"]=4,
+ ["decr"]=3,
+ ["icon"]="dec_dmg_blue_add",
+ ["ispercent"]=1
+ },
+ [95]={
+ ["id"]=95,
+ ["name"]="forever_dec_dmg_purple_add",
+ ["buff_type"]=1,
+ ["stack"]=2,
+ ["position"]=5,
+ ["decr"]=3,
+ ["icon"]="dec_dmg_purple_add",
+ ["ispercent"]=1
+ },
+ [96]={
+ ["id"]=96,
+ ["name"]="forever_dec_dmg_all_add",
+ ["buff_type"]=1,
+ ["stack"]=2,
+ ["decr"]=3,
+ ["icon"]="dec_dmg_all_add",
+ ["ispercent"]=1
+ },
+ [97]={
+ ["id"]=97,
+ ["name"]="forever_thorns",
+ ["buff_type"]=1,
+ ["decr"]=3,
+ ["icon"]="thorns",
+ ["show_name"]=true,
+ ["ispercent"]=1,
+ ["fx_continued"]={
+ 18
+ }
}
}
local keys = {
@@ -898,12 +1010,21 @@ local keys = {
["ocean_shield"]=buff[85],
["self_heal"]=buff[86],
["charm"]=buff[87],
- ["immune"]=buff[88]
+ ["immune"]=buff[88],
+ ["forever_first_hand"]=buff[89],
+ ["forever_counterattack"]=buff[90],
+ ["forever_dec_dmg_red_add"]=buff[91],
+ ["forever_dec_dmg_yellow_add"]=buff[92],
+ ["forever_dec_dmg_green_add"]=buff[93],
+ ["forever_dec_dmg_blue_add"]=buff[94],
+ ["forever_dec_dmg_purple_add"]=buff[95],
+ ["forever_dec_dmg_all_add"]=buff[96],
+ ["forever_thorns"]=buff[97]
}
}
local config = {
data=buff,
keys=keys,
-count=88
+count=97
}
return config
\ No newline at end of file
diff --git a/lua/app/config/const.lua b/lua/app/config/const.lua
index 61d527c4..af101080 100644
--- a/lua/app/config/const.lua
+++ b/lua/app/config/const.lua
@@ -492,6 +492,19 @@ local const = {
["activity_pvp_bounty_point"]={
["value"]=10
},
+ ["activity_pvp_refresh_ad_times"]={
+ ["value"]=1
+ },
+ ["activity_pvp_refresh_cost"]={
+ ["reward"]={
+ ["type"]=1,
+ ["type_for_nothing"]="Vw==",
+ ["id"]=2,
+ ["id_for_nothing"]="VA==",
+ ["num"]=10,
+ ["num_for_nothing"]="Vwg="
+ }
+ },
["activity_skin_fight_id_1"]={
["value"]=4104
},
@@ -510,6 +523,6 @@ local const = {
}
}
local config = {
-data=const,count=102
+data=const,count=104
}
return config
\ No newline at end of file
diff --git a/lua/app/config/grid_type.lua b/lua/app/config/grid_type.lua
index 5a6895df..f01dad05 100644
--- a/lua/app/config/grid_type.lua
+++ b/lua/app/config/grid_type.lua
@@ -440,7 +440,7 @@ local grid_type = {
["break_sfx"]="sfx_piece_zhongrushi_b01"
},
[31]={
- ["icon"]="battle_obstacle_lron_1",
+ ["icon"]="battle_obstacle_iron_1",
["next_type"]=0,
["break_condition"]={
1,
@@ -453,7 +453,7 @@ local grid_type = {
["break_sfx"]="sfx_piece_tiexie_b01"
},
[32]={
- ["icon"]="battle_obstacle_lron_2",
+ ["icon"]="battle_obstacle_iron_2",
["next_type"]=31,
["break_condition"]={
1,
@@ -466,7 +466,7 @@ local grid_type = {
["break_sfx"]="sfx_piece_tiexie_b01"
},
[33]={
- ["icon"]="battle_obstacle_lron_3",
+ ["icon"]="battle_obstacle_iron_3",
["next_type"]=32,
["break_condition"]={
1,
diff --git a/lua/app/config/localization/localization_global_const.lua b/lua/app/config/localization/localization_global_const.lua
index f1be157a..c221884f 100644
--- a/lua/app/config/localization/localization_global_const.lua
+++ b/lua/app/config/localization/localization_global_const.lua
@@ -527,13 +527,42 @@ local LocalizationGlobalConst =
DUNGEON_RUNE_TIP_4 = "DUNGEON_RUNE_TIP_4",
DUNGEON_RUNE_TIP_5 = "DUNGEON_RUNE_TIP_5",
UNFINISHED = "UNFINISHED",
-
- ["DUNGEON_RUNE_DESC_1"]= "DUNGEON_RUNE_DESC_1",
- ["DUNGEON_RUNE_DESC_2"] = "DUNGEON_RUNE_DESC_2",
- ["DUNGEON_RUNE_DESC_3"] = "DUNGEON_RUNE_DESC_3",
- ["DUNGEON_RUNE_DESC_4"] = "DUNGEON_RUNE_DESC_4",
- ["DUNGEON_RUNE_DESC_5"] = "DUNGEON_RUNE_DESC_5",
+ RUNES_DESC_1 = "RUNES_DESC_1",
+ RUNES_DESC_2 = "RUNES_DESC_2",
+ RUNES_DESC_3 = "RUNES_DESC_3",
+ RUNES_DESC_4 = "RUNES_DESC_4",
+ RUNES_DESC_5 = "RUNES_DESC_5",
+ RUNES_DESC_6 = "RUNES_DESC_6",
+ RUNES_DESC_7 = "RUNES_DESC_7",
+ RUNES_DESC_8 = "RUNES_DESC_8",
+ RUNES_DESC_9 = "RUNES_DESC_9",
+ RUNES_DESC_10 = "RUNES_DESC_10",
+ RUNES_DESC_11 = "RUNES_DESC_11",
+ RUNES_DESC_12 = "RUNES_DESC_12",
+ RUNES_DESC_13 = "RUNES_DESC_13",
+ RUNES_DESC_14 = "RUNES_DESC_14",
+ RUNES_DESC_15 = "RUNES_DESC_15",
+ RUNES_DESC_16 = "RUNES_DESC_16",
+ RUNES_DESC_17 = "RUNES_DESC_17",
+ RUNES_DESC_18 = "RUNES_DESC_18",
+ RUNES_DESC_19 = "RUNES_DESC_19",
+ RUNES_DESC_20 = "RUNES_DESC_20",
+ RUNES_DESC_21 = "RUNES_DESC_21",
+ RUNES_DESC_22 = "RUNES_DESC_22",
+ RUNES_DESC_23 = "RUNES_DESC_23",
+ RUNES_DESC_24 = "RUNES_DESC_24",
+ RUNES_DESC_25 = "RUNES_DESC_25",
+ DUNGEON_RUNE_DESC_1 = "DUNGEON_RUNE_DESC_1",
+ DUNGEON_RUNE_DESC_2 = "DUNGEON_RUNE_DESC_2",
+ DUNGEON_RUNE_DESC_3 = "DUNGEON_RUNE_DESC_3",
+ DUNGEON_RUNE_DESC_4 = "DUNGEON_RUNE_DESC_4",
+ DUNGEON_RUNE_DESC_5 = "DUNGEON_RUNE_DESC_5",
DUNGEON_RUNE_DESC_6 = "DUNGEON_RUNE_DESC_6",
+ DUNGEON_RUNE_DESC_7 = "DUNGEON_RUNE_DESC_7",
+ DUNGEON_RUNE_DESC_8 = "DUNGEON_RUNE_DESC_8",
+ DUNGEON_RUNE_DESC_9 = "DUNGEON_RUNE_DESC_9",
+ DUNGEON_RUNE_DESC_10 = "DUNGEON_RUNE_DESC_10",
+ DUNGEON_RUNE_DESC_11 = "DUNGEON_RUNE_DESC_11",
}
return LocalizationGlobalConst
\ No newline at end of file
diff --git a/lua/app/config/monster_dungeon_rune.lua b/lua/app/config/monster_dungeon_rune.lua
index a7aeb674..151cd5c8 100644
--- a/lua/app/config/monster_dungeon_rune.lua
+++ b/lua/app/config/monster_dungeon_rune.lua
@@ -2,8 +2,8 @@ local monster_dungeon_rune = {
[108]={
["none"]="大史莱姆(红)",
["monster_base"]=10027,
- ["hp"]=681920000,
- ["atk"]=6080000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20076,
@@ -15,8 +15,8 @@ local monster_dungeon_rune = {
[208]={
["none"]="大史莱姆(黄)",
["monster_base"]=10025,
- ["hp"]=278310000,
- ["atk"]=4040000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20070,
@@ -28,8 +28,8 @@ local monster_dungeon_rune = {
[308]={
["none"]="大史莱姆(蓝)",
["monster_base"]=10026,
- ["hp"]=278310000,
- ["atk"]=4040000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20073,
@@ -41,8 +41,8 @@ local monster_dungeon_rune = {
[408]={
["none"]="大史莱姆(绿)",
["monster_base"]=10024,
- ["hp"]=205490000,
- ["atk"]=3950000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20067,
@@ -54,8 +54,8 @@ local monster_dungeon_rune = {
[508]={
["none"]="盾刀骷髅兵",
["monster_base"]=10009,
- ["hp"]=482700000,
- ["atk"]=5690000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20025,
@@ -67,8 +67,8 @@ local monster_dungeon_rune = {
[608]={
["none"]="盾刀骷髅兵(有头盔)",
["monster_base"]=10039,
- ["hp"]=593840000,
- ["atk"]=5780000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20112,
@@ -80,8 +80,8 @@ local monster_dungeon_rune = {
[708]={
["none"]="哥布林匕首(蓝)",
["monster_base"]=10001,
- ["hp"]=474020000,
- ["atk"]=5340000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20001,
@@ -93,8 +93,8 @@ local monster_dungeon_rune = {
[808]={
["none"]="哥布林匕首(紫)",
["monster_base"]=10003,
- ["hp"]=554250000,
- ["atk"]=5310000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20007,
@@ -106,8 +106,8 @@ local monster_dungeon_rune = {
[908]={
["none"]="哥布林法师(红)",
["monster_base"]=10008,
- ["hp"]=298160000,
- ["atk"]=4390000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20022,
@@ -119,8 +119,8 @@ local monster_dungeon_rune = {
[1008]={
["none"]="哥布林法师(蓝)",
["monster_base"]=10005,
- ["hp"]=525000000,
- ["atk"]=5020000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20013,
@@ -132,8 +132,8 @@ local monster_dungeon_rune = {
[1108]={
["none"]="哥布林法师(绿)",
["monster_base"]=10006,
- ["hp"]=372560000,
- ["atk"]=4530000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20016,
@@ -145,8 +145,8 @@ local monster_dungeon_rune = {
[1208]={
["none"]="哥布林法师(紫)",
["monster_base"]=10007,
- ["hp"]=450590000,
- ["atk"]=5230000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20019,
@@ -158,8 +158,8 @@ local monster_dungeon_rune = {
[1308]={
["none"]="哥布林斧头(红)",
["monster_base"]=10002,
- ["hp"]=426740000,
- ["atk"]=4940000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20004,
@@ -171,8 +171,8 @@ local monster_dungeon_rune = {
[1408]={
["none"]="哥布林棍棒(绿)",
["monster_base"]=10004,
- ["hp"]=391500000,
- ["atk"]=5410000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20010,
@@ -184,8 +184,8 @@ local monster_dungeon_rune = {
[1508]={
["none"]="黑色食人花",
["monster_base"]=10050,
- ["hp"]=474020000,
- ["atk"]=5340000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20145,
@@ -197,8 +197,8 @@ local monster_dungeon_rune = {
[1608]={
["none"]="红色蝙蝠恶魔",
["monster_base"]=10052,
- ["hp"]=507910000,
- ["atk"]=5800000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20151,
@@ -210,8 +210,8 @@ local monster_dungeon_rune = {
[1708]={
["none"]="红色恶魔野猪",
["monster_base"]=10051,
- ["hp"]=347620000,
- ["atk"]=4170000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20148,
@@ -223,8 +223,8 @@ local monster_dungeon_rune = {
[1808]={
["none"]="红色蜥蜴剑士",
["monster_base"]=10047,
- ["hp"]=324830000,
- ["atk"]=4460000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20136,
@@ -236,8 +236,8 @@ local monster_dungeon_rune = {
[1908]={
["none"]="红色幽灵恶魔",
["monster_base"]=10055,
- ["hp"]=309200000,
- ["atk"]=3730000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20160,
@@ -249,8 +249,8 @@ local monster_dungeon_rune = {
[2008]={
["none"]="红色蜘蛛",
["monster_base"]=10046,
- ["hp"]=507910000,
- ["atk"]=5800000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20133,
@@ -262,8 +262,8 @@ local monster_dungeon_rune = {
[2108]={
["none"]="黄发剑士",
["monster_base"]=10030,
- ["hp"]=554250000,
- ["atk"]=5310000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20085,
@@ -275,8 +275,8 @@ local monster_dungeon_rune = {
[2208]={
["none"]="火山甲壳虫",
["monster_base"]=10061,
- ["hp"]=482700000,
- ["atk"]=5690000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20178,
@@ -288,8 +288,8 @@ local monster_dungeon_rune = {
[2308]={
["none"]="火山岩石怪",
["monster_base"]=10060,
- ["hp"]=298160000,
- ["atk"]=4390000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20175,
@@ -301,8 +301,8 @@ local monster_dungeon_rune = {
[2408]={
["none"]="剑盾士兵(黄发)",
["monster_base"]=10034,
- ["hp"]=298160000,
- ["atk"]=4390000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20097,
@@ -314,8 +314,8 @@ local monster_dungeon_rune = {
[2508]={
["none"]="剑盾士兵(蓝发)",
["monster_base"]=10035,
- ["hp"]=372560000,
- ["atk"]=4530000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20100,
@@ -327,8 +327,8 @@ local monster_dungeon_rune = {
[2608]={
["none"]="骷髅弓箭手",
["monster_base"]=10038,
- ["hp"]=391500000,
- ["atk"]=5410000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20109,
@@ -340,8 +340,8 @@ local monster_dungeon_rune = {
[2708]={
["none"]="骷髅枪兵",
["monster_base"]=10010,
- ["hp"]=347620000,
- ["atk"]=4170000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20028,
@@ -353,8 +353,8 @@ local monster_dungeon_rune = {
[2808]={
["none"]="骷髅小法师",
["monster_base"]=10040,
- ["hp"]=482700000,
- ["atk"]=5690000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20115,
@@ -366,8 +366,8 @@ local monster_dungeon_rune = {
[2908]={
["none"]="蓝发剑士",
["monster_base"]=10031,
- ["hp"]=345780000,
- ["atk"]=4720000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20088,
@@ -379,8 +379,8 @@ local monster_dungeon_rune = {
[3008]={
["none"]="蓝色蝙蝠恶魔",
["monster_base"]=10041,
- ["hp"]=391500000,
- ["atk"]=5410000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20118,
@@ -392,8 +392,8 @@ local monster_dungeon_rune = {
[3108]={
["none"]="蓝色独眼蝙蝠",
["monster_base"]=10044,
- ["hp"]=191410000,
- ["atk"]=3630000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20127,
@@ -405,8 +405,8 @@ local monster_dungeon_rune = {
[3208]={
["none"]="蓝色恶魔野猪",
["monster_base"]=10042,
- ["hp"]=365170000,
- ["atk"]=4980000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20121,
@@ -418,8 +418,8 @@ local monster_dungeon_rune = {
[3308]={
["none"]="绿色食人花",
["monster_base"]=10049,
- ["hp"]=409220000,
- ["atk"]=4500000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20142,
@@ -431,8 +431,8 @@ local monster_dungeon_rune = {
[3408]={
["none"]="绿色蜥蜴剑士",
["monster_base"]=10048,
- ["hp"]=482700000,
- ["atk"]=5690000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20139,
@@ -444,8 +444,8 @@ local monster_dungeon_rune = {
[3508]={
["none"]="魔都小枪兵(红)",
["monster_base"]=10057,
- ["hp"]=191410000,
- ["atk"]=3630000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20166,
@@ -457,8 +457,8 @@ local monster_dungeon_rune = {
[3608]={
["none"]="魔都小枪兵(紫)",
["monster_base"]=10058,
- ["hp"]=164360000,
- ["atk"]=3050000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20169,
@@ -470,8 +470,8 @@ local monster_dungeon_rune = {
[3708]={
["none"]="女巫师(蓝)",
["monster_base"]=10032,
- ["hp"]=525000000,
- ["atk"]=5020000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20091,
@@ -483,8 +483,8 @@ local monster_dungeon_rune = {
[3808]={
["none"]="女巫师(紫)",
["monster_base"]=10033,
- ["hp"]=278310000,
- ["atk"]=4040000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20094,
@@ -496,8 +496,8 @@ local monster_dungeon_rune = {
[3908]={
["none"]="青绿鬼火",
["monster_base"]=10054,
- ["hp"]=191410000,
- ["atk"]=3630000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20157,
@@ -509,8 +509,8 @@ local monster_dungeon_rune = {
[4008]={
["none"]="人类弓箭手(红)",
["monster_base"]=10036,
- ["hp"]=554250000,
- ["atk"]=5310000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20103,
@@ -522,8 +522,8 @@ local monster_dungeon_rune = {
[4108]={
["none"]="人类弓箭手(绿)",
["monster_base"]=10037,
- ["hp"]=205490000,
- ["atk"]=3950000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20106,
@@ -535,8 +535,8 @@ local monster_dungeon_rune = {
[4208]={
["none"]="人鱼双匕首(红)",
["monster_base"]=10065,
- ["hp"]=243300000,
- ["atk"]=2900000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20187,
@@ -548,8 +548,8 @@ local monster_dungeon_rune = {
[4308]={
["none"]="人鱼双匕首(蓝)",
["monster_base"]=10063,
- ["hp"]=191500000,
- ["atk"]=2660000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20184,
@@ -561,8 +561,8 @@ local monster_dungeon_rune = {
[4408]={
["none"]="兽人大刀兵(红)",
["monster_base"]=10014,
- ["hp"]=450590000,
- ["atk"]=5230000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20037,
@@ -574,8 +574,8 @@ local monster_dungeon_rune = {
[4508]={
["none"]="兽人大刀兵(黄)",
["monster_base"]=10015,
- ["hp"]=507910000,
- ["atk"]=5800000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20040,
@@ -587,8 +587,8 @@ local monster_dungeon_rune = {
[4608]={
["none"]="兽人大刀兵(蓝)",
["monster_base"]=10013,
- ["hp"]=205490000,
- ["atk"]=3950000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20034,
@@ -600,8 +600,8 @@ local monster_dungeon_rune = {
[4708]={
["none"]="兽人大刀兵(绿)",
["monster_base"]=10012,
- ["hp"]=482700000,
- ["atk"]=5690000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20031,
@@ -613,8 +613,8 @@ local monster_dungeon_rune = {
[4808]={
["none"]="兽人盾骨兵(红)",
["monster_base"]=10017,
- ["hp"]=593840000,
- ["atk"]=5780000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20046,
@@ -626,8 +626,8 @@ local monster_dungeon_rune = {
[4908]={
["none"]="兽人盾骨兵(黄)",
["monster_base"]=10018,
- ["hp"]=593840000,
- ["atk"]=5780000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20049,
@@ -639,8 +639,8 @@ local monster_dungeon_rune = {
[5008]={
["none"]="兽人盾骨兵(蓝)",
["monster_base"]=10019,
- ["hp"]=372560000,
- ["atk"]=4530000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20052,
@@ -652,8 +652,8 @@ local monster_dungeon_rune = {
[5108]={
["none"]="兽人盾骨兵(绿)",
["monster_base"]=10016,
- ["hp"]=593840000,
- ["atk"]=5780000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20043,
@@ -665,8 +665,8 @@ local monster_dungeon_rune = {
[5208]={
["none"]="双斧莫西干(红)",
["monster_base"]=10029,
- ["hp"]=391500000,
- ["atk"]=5410000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20082,
@@ -678,8 +678,8 @@ local monster_dungeon_rune = {
[5308]={
["none"]="双斧莫西干(紫)",
["monster_base"]=10028,
- ["hp"]=298160000,
- ["atk"]=4390000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20079,
@@ -691,8 +691,8 @@ local monster_dungeon_rune = {
[5408]={
["none"]="水蜥蜴",
["monster_base"]=10064,
- ["hp"]=224450000,
- ["atk"]=3190000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20190,
@@ -704,8 +704,8 @@ local monster_dungeon_rune = {
[5508]={
["none"]="小史莱姆(红)",
["monster_base"]=10023,
- ["hp"]=507910000,
- ["atk"]=5800000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20064,
@@ -717,8 +717,8 @@ local monster_dungeon_rune = {
[5608]={
["none"]="小史莱姆(黄)",
["monster_base"]=10021,
- ["hp"]=593840000,
- ["atk"]=5780000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20058,
@@ -730,8 +730,8 @@ local monster_dungeon_rune = {
[5708]={
["none"]="小史莱姆(蓝)",
["monster_base"]=10022,
- ["hp"]=205490000,
- ["atk"]=3950000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20061,
@@ -743,8 +743,8 @@ local monster_dungeon_rune = {
[5808]={
["none"]="小史莱姆(绿)",
["monster_base"]=10020,
- ["hp"]=602910000,
- ["atk"]=5280000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20055,
@@ -756,8 +756,8 @@ local monster_dungeon_rune = {
[5908]={
["none"]="紫色独眼蝙蝠",
["monster_base"]=10043,
- ["hp"]=474020000,
- ["atk"]=5340000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20124,
@@ -769,8 +769,8 @@ local monster_dungeon_rune = {
[6008]={
["none"]="紫色鬼火",
["monster_base"]=10053,
- ["hp"]=549890000,
- ["atk"]=4690000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20154,
@@ -782,8 +782,8 @@ local monster_dungeon_rune = {
[6108]={
["none"]="紫色幽灵恶魔",
["monster_base"]=10056,
- ["hp"]=191410000,
- ["atk"]=3630000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20163,
@@ -795,8 +795,8 @@ local monster_dungeon_rune = {
[6208]={
["none"]="紫色蜘蛛",
["monster_base"]=10045,
- ["hp"]=205490000,
- ["atk"]=3950000,
+ ["hp"]=999999999,
+ ["atk"]=999999999,
["atk_times"]=3,
["hurt_skill"]={
20130,
@@ -939,6 +939,9 @@ local monster_dungeon_rune = {
30206,
30207
},
+ ["passive_skill"]={
+ 10013
+ },
["monster_exp"]=0
},
[7008]={
@@ -979,7 +982,6 @@ local monster_dungeon_rune = {
30220
},
["passive_skill"]={
- 10013,
10014,
30218
},
@@ -1001,7 +1003,8 @@ local monster_dungeon_rune = {
30226,
30227,
30228,
- 30229
+ 30229,
+ 30230
},
["passive_skill"]={
10013,
diff --git a/lua/app/config/runes_sub.lua b/lua/app/config/runes_sub.lua
index a530cb16..0df40356 100644
--- a/lua/app/config/runes_sub.lua
+++ b/lua/app/config/runes_sub.lua
@@ -90,45 +90,45 @@ local runes_sub = {
},
["attr_5"]={
{
- ["type"]="attr_normal_hurtp_red",
+ ["type"]="attr_normal_hurt_red",
["num"]=10000
},
{
- ["type"]="attr_normal_hurtp_yellow",
+ ["type"]="attr_normal_hurt_yellow",
["num"]=10000
},
{
- ["type"]="attr_normal_hurtp_green",
+ ["type"]="attr_normal_hurt_green",
["num"]=10000
},
{
- ["type"]="attr_normal_hurtp_blue",
+ ["type"]="attr_normal_hurt_blue",
["num"]=10000
},
{
- ["type"]="attr_normal_hurtp_purple",
+ ["type"]="attr_normal_hurt_purple",
["num"]=10000
}
},
["attr_6"]={
{
- ["type"]="attr_skill_hurtp_red",
+ ["type"]="attr_skill_hurt_red",
["num"]=10000
},
{
- ["type"]="attr_skill_hurtp_yellow",
+ ["type"]="attr_skill_hurt_yellow",
["num"]=10000
},
{
- ["type"]="attr_skill_hurtp_green",
+ ["type"]="attr_skill_hurt_green",
["num"]=10000
},
{
- ["type"]="attr_skill_hurtp_blue",
+ ["type"]="attr_skill_hurt_blue",
["num"]=10000
},
{
- ["type"]="attr_skill_hurtp_purple",
+ ["type"]="attr_skill_hurt_purple",
["num"]=10000
}
},
@@ -334,45 +334,45 @@ local runes_sub = {
},
["attr_5"]={
{
- ["type"]="attr_normal_hurtp_red",
+ ["type"]="attr_normal_hurt_red",
["num"]=20000
},
{
- ["type"]="attr_normal_hurtp_yellow",
+ ["type"]="attr_normal_hurt_yellow",
["num"]=20000
},
{
- ["type"]="attr_normal_hurtp_green",
+ ["type"]="attr_normal_hurt_green",
["num"]=20000
},
{
- ["type"]="attr_normal_hurtp_blue",
+ ["type"]="attr_normal_hurt_blue",
["num"]=20000
},
{
- ["type"]="attr_normal_hurtp_purple",
+ ["type"]="attr_normal_hurt_purple",
["num"]=20000
}
},
["attr_6"]={
{
- ["type"]="attr_skill_hurtp_red",
+ ["type"]="attr_skill_hurt_red",
["num"]=20000
},
{
- ["type"]="attr_skill_hurtp_yellow",
+ ["type"]="attr_skill_hurt_yellow",
["num"]=20000
},
{
- ["type"]="attr_skill_hurtp_green",
+ ["type"]="attr_skill_hurt_green",
["num"]=20000
},
{
- ["type"]="attr_skill_hurtp_blue",
+ ["type"]="attr_skill_hurt_blue",
["num"]=20000
},
{
- ["type"]="attr_skill_hurtp_purple",
+ ["type"]="attr_skill_hurt_purple",
["num"]=20000
}
},
@@ -578,45 +578,45 @@ local runes_sub = {
},
["attr_5"]={
{
- ["type"]="attr_normal_hurtp_red",
+ ["type"]="attr_normal_hurt_red",
["num"]=30000
},
{
- ["type"]="attr_normal_hurtp_yellow",
+ ["type"]="attr_normal_hurt_yellow",
["num"]=30000
},
{
- ["type"]="attr_normal_hurtp_green",
+ ["type"]="attr_normal_hurt_green",
["num"]=30000
},
{
- ["type"]="attr_normal_hurtp_blue",
+ ["type"]="attr_normal_hurt_blue",
["num"]=30000
},
{
- ["type"]="attr_normal_hurtp_purple",
+ ["type"]="attr_normal_hurt_purple",
["num"]=30000
}
},
["attr_6"]={
{
- ["type"]="attr_skill_hurtp_red",
+ ["type"]="attr_skill_hurt_red",
["num"]=30000
},
{
- ["type"]="attr_skill_hurtp_yellow",
+ ["type"]="attr_skill_hurt_yellow",
["num"]=30000
},
{
- ["type"]="attr_skill_hurtp_green",
+ ["type"]="attr_skill_hurt_green",
["num"]=30000
},
{
- ["type"]="attr_skill_hurtp_blue",
+ ["type"]="attr_skill_hurt_blue",
["num"]=30000
},
{
- ["type"]="attr_skill_hurtp_purple",
+ ["type"]="attr_skill_hurt_purple",
["num"]=30000
}
},
@@ -822,45 +822,45 @@ local runes_sub = {
},
["attr_5"]={
{
- ["type"]="attr_normal_hurtp_red",
+ ["type"]="attr_normal_hurt_red",
["num"]=40000
},
{
- ["type"]="attr_normal_hurtp_yellow",
+ ["type"]="attr_normal_hurt_yellow",
["num"]=40000
},
{
- ["type"]="attr_normal_hurtp_green",
+ ["type"]="attr_normal_hurt_green",
["num"]=40000
},
{
- ["type"]="attr_normal_hurtp_blue",
+ ["type"]="attr_normal_hurt_blue",
["num"]=40000
},
{
- ["type"]="attr_normal_hurtp_purple",
+ ["type"]="attr_normal_hurt_purple",
["num"]=40000
}
},
["attr_6"]={
{
- ["type"]="attr_skill_hurtp_red",
+ ["type"]="attr_skill_hurt_red",
["num"]=40000
},
{
- ["type"]="attr_skill_hurtp_yellow",
+ ["type"]="attr_skill_hurt_yellow",
["num"]=40000
},
{
- ["type"]="attr_skill_hurtp_green",
+ ["type"]="attr_skill_hurt_green",
["num"]=40000
},
{
- ["type"]="attr_skill_hurtp_blue",
+ ["type"]="attr_skill_hurt_blue",
["num"]=40000
},
{
- ["type"]="attr_skill_hurtp_purple",
+ ["type"]="attr_skill_hurt_purple",
["num"]=40000
}
},
@@ -1066,45 +1066,45 @@ local runes_sub = {
},
["attr_5"]={
{
- ["type"]="attr_normal_hurtp_red",
+ ["type"]="attr_normal_hurt_red",
["num"]=50000
},
{
- ["type"]="attr_normal_hurtp_yellow",
+ ["type"]="attr_normal_hurt_yellow",
["num"]=50000
},
{
- ["type"]="attr_normal_hurtp_green",
+ ["type"]="attr_normal_hurt_green",
["num"]=50000
},
{
- ["type"]="attr_normal_hurtp_blue",
+ ["type"]="attr_normal_hurt_blue",
["num"]=50000
},
{
- ["type"]="attr_normal_hurtp_purple",
+ ["type"]="attr_normal_hurt_purple",
["num"]=50000
}
},
["attr_6"]={
{
- ["type"]="attr_skill_hurtp_red",
+ ["type"]="attr_skill_hurt_red",
["num"]=50000
},
{
- ["type"]="attr_skill_hurtp_yellow",
+ ["type"]="attr_skill_hurt_yellow",
["num"]=50000
},
{
- ["type"]="attr_skill_hurtp_green",
+ ["type"]="attr_skill_hurt_green",
["num"]=50000
},
{
- ["type"]="attr_skill_hurtp_blue",
+ ["type"]="attr_skill_hurt_blue",
["num"]=50000
},
{
- ["type"]="attr_skill_hurtp_purple",
+ ["type"]="attr_skill_hurt_purple",
["num"]=50000
}
},
@@ -1310,45 +1310,45 @@ local runes_sub = {
},
["attr_5"]={
{
- ["type"]="attr_normal_hurtp_red",
+ ["type"]="attr_normal_hurt_red",
["num"]=90000
},
{
- ["type"]="attr_normal_hurtp_yellow",
+ ["type"]="attr_normal_hurt_yellow",
["num"]=90000
},
{
- ["type"]="attr_normal_hurtp_green",
+ ["type"]="attr_normal_hurt_green",
["num"]=90000
},
{
- ["type"]="attr_normal_hurtp_blue",
+ ["type"]="attr_normal_hurt_blue",
["num"]=90000
},
{
- ["type"]="attr_normal_hurtp_purple",
+ ["type"]="attr_normal_hurt_purple",
["num"]=90000
}
},
["attr_6"]={
{
- ["type"]="attr_skill_hurtp_red",
+ ["type"]="attr_skill_hurt_red",
["num"]=90000
},
{
- ["type"]="attr_skill_hurtp_yellow",
+ ["type"]="attr_skill_hurt_yellow",
["num"]=90000
},
{
- ["type"]="attr_skill_hurtp_green",
+ ["type"]="attr_skill_hurt_green",
["num"]=90000
},
{
- ["type"]="attr_skill_hurtp_blue",
+ ["type"]="attr_skill_hurt_blue",
["num"]=90000
},
{
- ["type"]="attr_skill_hurtp_purple",
+ ["type"]="attr_skill_hurt_purple",
["num"]=90000
}
},
@@ -1554,45 +1554,45 @@ local runes_sub = {
},
["attr_5"]={
{
- ["type"]="attr_normal_hurtp_red",
+ ["type"]="attr_normal_hurt_red",
["num"]=100000
},
{
- ["type"]="attr_normal_hurtp_yellow",
+ ["type"]="attr_normal_hurt_yellow",
["num"]=100000
},
{
- ["type"]="attr_normal_hurtp_green",
+ ["type"]="attr_normal_hurt_green",
["num"]=100000
},
{
- ["type"]="attr_normal_hurtp_blue",
+ ["type"]="attr_normal_hurt_blue",
["num"]=100000
},
{
- ["type"]="attr_normal_hurtp_purple",
+ ["type"]="attr_normal_hurt_purple",
["num"]=100000
}
},
["attr_6"]={
{
- ["type"]="attr_skill_hurtp_red",
+ ["type"]="attr_skill_hurt_red",
["num"]=100000
},
{
- ["type"]="attr_skill_hurtp_yellow",
+ ["type"]="attr_skill_hurt_yellow",
["num"]=100000
},
{
- ["type"]="attr_skill_hurtp_green",
+ ["type"]="attr_skill_hurt_green",
["num"]=100000
},
{
- ["type"]="attr_skill_hurtp_blue",
+ ["type"]="attr_skill_hurt_blue",
["num"]=100000
},
{
- ["type"]="attr_skill_hurtp_purple",
+ ["type"]="attr_skill_hurt_purple",
["num"]=100000
}
},
@@ -1798,45 +1798,45 @@ local runes_sub = {
},
["attr_5"]={
{
- ["type"]="attr_normal_hurtp_red",
+ ["type"]="attr_normal_hurt_red",
["num"]=200000
},
{
- ["type"]="attr_normal_hurtp_yellow",
+ ["type"]="attr_normal_hurt_yellow",
["num"]=200000
},
{
- ["type"]="attr_normal_hurtp_green",
+ ["type"]="attr_normal_hurt_green",
["num"]=200000
},
{
- ["type"]="attr_normal_hurtp_blue",
+ ["type"]="attr_normal_hurt_blue",
["num"]=200000
},
{
- ["type"]="attr_normal_hurtp_purple",
+ ["type"]="attr_normal_hurt_purple",
["num"]=200000
}
},
["attr_6"]={
{
- ["type"]="attr_skill_hurtp_red",
+ ["type"]="attr_skill_hurt_red",
["num"]=200000
},
{
- ["type"]="attr_skill_hurtp_yellow",
+ ["type"]="attr_skill_hurt_yellow",
["num"]=200000
},
{
- ["type"]="attr_skill_hurtp_green",
+ ["type"]="attr_skill_hurt_green",
["num"]=200000
},
{
- ["type"]="attr_skill_hurtp_blue",
+ ["type"]="attr_skill_hurt_blue",
["num"]=200000
},
{
- ["type"]="attr_skill_hurtp_purple",
+ ["type"]="attr_skill_hurt_purple",
["num"]=200000
}
},
diff --git a/lua/app/config/skill.lua b/lua/app/config/skill.lua
index 9580b2f4..62ecc59c 100644
--- a/lua/app/config/skill.lua
+++ b/lua/app/config/skill.lua
@@ -9326,7 +9326,7 @@ local skill = {
["round"]=1
}
},
- ["obj"]=2
+ ["obj"]=1
},
[5400423]={
["position"]=5,
@@ -9567,10 +9567,10 @@ local skill = {
["trigger"]=2,
["effect"]={
{
- ["type"]="dec_dmg_red_add",
+ ["type"]="forever_dec_dmg_red_add",
["num"]=5000,
["ratio"]=10000,
- ["round"]=0
+ ["round"]=9999
}
},
["obj"]=1,
@@ -9584,10 +9584,10 @@ local skill = {
["trigger"]=2,
["effect"]={
{
- ["type"]="dec_dmg_yellow_add",
+ ["type"]="forever_dec_dmg_yellow_add",
["num"]=5000,
["ratio"]=10000,
- ["round"]=0
+ ["round"]=9999
}
},
["obj"]=1,
@@ -9601,10 +9601,10 @@ local skill = {
["trigger"]=2,
["effect"]={
{
- ["type"]="dec_dmg_green_add",
+ ["type"]="forever_dec_dmg_green_add",
["num"]=5000,
["ratio"]=10000,
- ["round"]=0
+ ["round"]=9999
}
},
["obj"]=1,
@@ -9618,10 +9618,10 @@ local skill = {
["trigger"]=2,
["effect"]={
{
- ["type"]="dec_dmg_blue_add",
+ ["type"]="forever_dec_dmg_blue_add",
["num"]=5000,
["ratio"]=10000,
- ["round"]=0
+ ["round"]=9999
}
},
["obj"]=1,
@@ -9635,10 +9635,10 @@ local skill = {
["trigger"]=2,
["effect"]={
{
- ["type"]="dec_dmg_purple_add",
+ ["type"]="forever_dec_dmg_purple_add",
["num"]=5000,
["ratio"]=10000,
- ["round"]=0
+ ["round"]=9999
}
},
["obj"]=1,
@@ -9652,10 +9652,10 @@ local skill = {
["trigger"]=2,
["effect"]={
{
- ["type"]="first_hand",
+ ["type"]="forever_first_hand",
["num"]=10000,
["ratio"]=10000,
- ["round"]=0
+ ["round"]=9999
}
},
["obj"]=1,
@@ -9669,10 +9669,10 @@ local skill = {
["trigger"]=2,
["effect"]={
{
- ["type"]="counterattack",
+ ["type"]="forever_counterattack",
["num"]=2500,
["ratio"]=10000,
- ["round"]=0
+ ["round"]=9999
}
},
["obj"]=1
@@ -24046,7 +24046,7 @@ local skill = {
{
["type"]="state",
["attr"]="dmg_addition_all_add",
- ["op"]="=",
+ ["op"]="<",
["v"]=0,
["side"]=1
}
@@ -24062,7 +24062,7 @@ local skill = {
{
["type"]="state",
["attr"]="vulnerable",
- ["op"]="=",
+ ["op"]="<",
["v"]=0,
["side"]=1
}
@@ -24252,7 +24252,7 @@ local skill = {
2,
0
},
- ["cd"]=3,
+ ["cd"]=2,
["cd_start"]=0,
["shake_time"]=200,
["shake_type"]=6,
@@ -24275,7 +24275,7 @@ local skill = {
{
["type"]="weaken",
["num"]=2500,
- ["ratio"]=1000,
+ ["ratio"]=10000,
["round"]=2
}
},
@@ -24305,7 +24305,7 @@ local skill = {
{
["type"]="weaken",
["num"]=2500,
- ["ratio"]=1000,
+ ["ratio"]=10000,
["round"]=2
}
},
@@ -24335,7 +24335,7 @@ local skill = {
{
["type"]="weaken",
["num"]=2500,
- ["ratio"]=1000,
+ ["ratio"]=10000,
["round"]=2
}
},
@@ -24370,7 +24370,7 @@ local skill = {
}
},
["obj"]=2,
- ["cd"]=7,
+ ["cd"]=4,
["cd_start"]=0,
["shake_time"]=200,
["shake_type"]=6,
@@ -24398,8 +24398,8 @@ local skill = {
}
},
["obj"]=2,
- ["cd"]=7,
- ["cd_start"]=3,
+ ["cd"]=4,
+ ["cd_start"]=2,
["shake_time"]=200,
["shake_type"]=6,
["sound_hit"]={
@@ -24492,7 +24492,7 @@ local skill = {
}
},
["obj"]=2,
- ["cd"]=5,
+ ["cd"]=4,
["cd_start"]=0,
["shake_time"]=200,
["shake_type"]=6,
@@ -24514,7 +24514,7 @@ local skill = {
}
},
["obj"]=2,
- ["cd"]=5,
+ ["cd"]=4,
["cd_start"]=1,
["shake_time"]=200,
["shake_type"]=6,
@@ -24536,7 +24536,7 @@ local skill = {
}
},
["obj"]=2,
- ["cd"]=5,
+ ["cd"]=4,
["cd_start"]=2,
["shake_time"]=200,
["shake_type"]=6,
@@ -24555,7 +24555,7 @@ local skill = {
["effect_type"]=1,
["trigger"]=1,
["obj"]=2,
- ["cd"]=5,
+ ["cd"]=4,
["cd_start"]=3,
["shake_time"]=200,
["shake_type"]=6,
@@ -24643,7 +24643,7 @@ local skill = {
["effect"]={
{
["type"]="heal",
- ["num"]=10000,
+ ["num"]=100000,
["ratio"]=10000,
["round"]=1
}
@@ -24656,7 +24656,7 @@ local skill = {
["effect"]={
{
["type"]="shield",
- ["num"]=1000,
+ ["num"]=2000,
["ratio"]=10000,
["round"]=3
},
@@ -24769,10 +24769,22 @@ local skill = {
["num"]=20000,
["ratio"]=10000,
["round"]=0
+ },
+ {
+ ["type"]="imprison",
+ ["num"]=0,
+ ["ratio"]=10000,
+ ["round"]=2
+ },
+ {
+ ["type"]="corrupt",
+ ["num"]=7500,
+ ["ratio"]=10000,
+ ["round"]=2
}
},
["obj"]=2,
- ["cd"]=4,
+ ["cd"]=3,
["cd_start"]=0,
["shake_time"]=200,
["shake_type"]=6,
@@ -24796,11 +24808,11 @@ local skill = {
["type"]="normal_attack_add",
["num"]=2,
["ratio"]=10000,
- ["round"]=2
+ ["round"]=3
}
},
- ["obj"]=2,
- ["cd"]=4,
+ ["obj"]=1,
+ ["cd"]=3,
["cd_start"]=0
},
[30197]={
@@ -24884,7 +24896,7 @@ local skill = {
}
},
["obj"]=1,
- ["cd"]=11,
+ ["cd"]=10,
["cd_start"]=0
},
[30201]={
@@ -24899,7 +24911,7 @@ local skill = {
}
},
["obj"]=1,
- ["cd"]=11,
+ ["cd"]=10,
["cd_start"]=2
},
[30202]={
@@ -24914,7 +24926,7 @@ local skill = {
}
},
["obj"]=1,
- ["cd"]=11,
+ ["cd"]=10,
["cd_start"]=4
},
[30203]={
@@ -24929,7 +24941,7 @@ local skill = {
}
},
["obj"]=1,
- ["cd"]=11,
+ ["cd"]=10,
["cd_start"]=6
},
[30204]={
@@ -24944,7 +24956,7 @@ local skill = {
}
},
["obj"]=1,
- ["cd"]=11,
+ ["cd"]=10,
["cd_start"]=8
},
[30205]={
@@ -24953,7 +24965,7 @@ local skill = {
["effect"]={
{
["type"]="hurt",
- ["num"]=20000,
+ ["num"]=40000,
["ratio"]=10000,
["round"]=0
},
@@ -24965,7 +24977,7 @@ local skill = {
}
},
["obj"]=2,
- ["cd"]=9,
+ ["cd"]=3,
["cd_start"]=0,
["shake_time"]=200,
["shake_type"]=6,
@@ -24981,7 +24993,7 @@ local skill = {
["effect"]={
{
["type"]="hurt",
- ["num"]=20000,
+ ["num"]=40000,
["ratio"]=10000,
["round"]=0
},
@@ -24993,8 +25005,8 @@ local skill = {
}
},
["obj"]=2,
- ["cd"]=9,
- ["cd_start"]=3,
+ ["cd"]=3,
+ ["cd_start"]=1,
["shake_time"]=200,
["shake_type"]=6,
["sound_hit"]={
@@ -25009,7 +25021,7 @@ local skill = {
["effect"]={
{
["type"]="hurt",
- ["num"]=20000,
+ ["num"]=40000,
["ratio"]=10000,
["round"]=0
},
@@ -25021,8 +25033,8 @@ local skill = {
}
},
["obj"]=2,
- ["cd"]=9,
- ["cd_start"]=6,
+ ["cd"]=3,
+ ["cd_start"]=2,
["shake_time"]=200,
["shake_type"]=6,
["sound_hit"]={
@@ -25119,7 +25131,7 @@ local skill = {
["effect"]={
{
["type"]="shield",
- ["num"]=1000,
+ ["num"]=2000,
["ratio"]=10000,
["round"]=2
}
@@ -25129,7 +25141,7 @@ local skill = {
2,
0
},
- ["cd"]=4,
+ ["cd"]=3,
["cd_start"]=0,
["shake_time"]=200,
["shake_type"]=6,
@@ -25155,7 +25167,7 @@ local skill = {
2,
0
},
- ["cd"]=4,
+ ["cd"]=3,
["cd_start"]=1,
["shake_time"]=200,
["shake_type"]=6,
@@ -25181,7 +25193,7 @@ local skill = {
2,
0
},
- ["cd"]=4,
+ ["cd"]=3,
["cd_start"]=2,
["shake_time"]=200,
["shake_type"]=6,
@@ -25265,25 +25277,21 @@ local skill = {
["trigger"]=2,
["effect"]={
{
- ["type"]="dec_dmg_all_add",
+ ["type"]="forever_dec_dmg_all_add",
["num"]=5000,
["ratio"]=10000,
- ["round"]=0
+ ["round"]=999
}
},
["obj"]=1
},
[30219]={
- ["skill_type"]=9,
- ["skill_type_parameter"]={
- 12500
- },
["effect_type"]=1,
["trigger"]=1,
["effect"]={
{
["type"]="hurt",
- ["num"]=20000,
+ ["num"]=80000,
["ratio"]=10000,
["round"]=0
},
@@ -25299,7 +25307,7 @@ local skill = {
2,
0
},
- ["cd"]=5,
+ ["cd"]=4,
["cd_start"]=0,
["shake_time"]=200,
["shake_type"]=6,
@@ -25310,6 +25318,10 @@ local skill = {
["fx_self"]=200099
},
[30220]={
+ ["skill_type"]=9,
+ ["skill_type_parameter"]={
+ 12500
+ },
["effect_type"]=1,
["trigger"]=1,
["effect"]={
@@ -25325,7 +25337,7 @@ local skill = {
2,
0
},
- ["cd"]=5,
+ ["cd"]=4,
["cd_start"]=2,
["shake_time"]=200,
["shake_type"]=6,
@@ -25409,10 +25421,10 @@ local skill = {
["trigger"]=2,
["effect"]={
{
- ["type"]="thorns",
+ ["type"]="forever_thorns",
["num"]=1000,
["ratio"]=10000,
- ["round"]=0
+ ["round"]=999
}
},
["obj"]=1
@@ -25422,8 +25434,8 @@ local skill = {
["trigger"]=1,
["effect"]={
{
- ["type"]="undead",
- ["num"]=0,
+ ["type"]="rebirth",
+ ["num"]=62500,
["ratio"]=10000,
["round"]=2
},
@@ -25439,7 +25451,7 @@ local skill = {
2,
0
},
- ["cd"]=4,
+ ["cd"]=6,
["cd_start"]=2,
["shake_time"]=200,
["shake_type"]=6,
@@ -25462,7 +25474,7 @@ local skill = {
2,
0
},
- ["cd"]=7,
+ ["cd"]=6,
["cd_start"]=0,
["name_act"]="skill01"
},
@@ -25479,7 +25491,7 @@ local skill = {
2,
0
},
- ["cd"]=8,
+ ["cd"]=6,
["cd_start"]=1,
["name_act"]="skill01"
},
@@ -25517,6 +25529,38 @@ local skill = {
["cd_start"]=4,
["name_act"]="skill01"
},
+ [30230]={
+ ["effect_type"]=1,
+ ["trigger"]=1,
+ ["effect"]={
+ {
+ ["type"]="rebirth",
+ ["num"]=62500,
+ ["ratio"]=10000,
+ ["round"]=2
+ },
+ {
+ ["type"]="heal",
+ ["num"]=125000,
+ ["ratio"]=10000,
+ ["round"]=1
+ }
+ },
+ ["obj"]=1,
+ ["skill_position"]={
+ 2,
+ 0
+ },
+ ["cd"]=6,
+ ["cd_start"]=5,
+ ["shake_time"]=200,
+ ["shake_type"]=6,
+ ["sound_hit"]={
+ 10018
+ },
+ ["name_act"]="skill01",
+ ["fx_self"]=200099
+ },
[40001]={
["effect_type"]=1,
["trigger"]=1,
@@ -30443,6 +30487,6 @@ local skill = {
}
}
local config = {
-data=skill,count=1102
+data=skill,count=1103
}
return config
\ No newline at end of file
diff --git a/lua/app/config/skill_rogue.lua b/lua/app/config/skill_rogue.lua
index aed3868e..e4a09b39 100644
--- a/lua/app/config/skill_rogue.lua
+++ b/lua/app/config/skill_rogue.lua
@@ -1636,7 +1636,7 @@ local skill_rogue = {
["qlt"]=4,
["type"]=1,
["parameter"]={
- 1400325
+ 1400425
},
["skill_position"]=1,
["icon"]="270"
@@ -5319,7 +5319,7 @@ local skill_rogue = {
["effect"]={
{
["type"]="add_skill",
- ["num"]=5400321,
+ ["num"]=5400421,
["ratio"]=10000,
["round"]=999
}
@@ -5336,7 +5336,7 @@ local skill_rogue = {
["effect"]={
{
["type"]="add_skill",
- ["num"]=5400322,
+ ["num"]=5400422,
["ratio"]=10000,
["round"]=1
}
@@ -5353,7 +5353,7 @@ local skill_rogue = {
["effect"]={
{
["type"]="add_skill",
- ["num"]=5400323,
+ ["num"]=5400423,
["ratio"]=10000,
["round"]=1
}
@@ -5372,7 +5372,7 @@ local skill_rogue = {
["effect"]={
{
["type"]="add_skill",
- ["num"]=5400324,
+ ["num"]=5400424,
["ratio"]=10000,
["round"]=1
}
@@ -5391,7 +5391,7 @@ local skill_rogue = {
["effect"]={
{
["type"]="add_skill",
- ["num"]=5400325,
+ ["num"]=5400425,
["ratio"]=10000,
["round"]=999
}
@@ -5408,7 +5408,7 @@ local skill_rogue = {
["effect"]={
{
["type"]="add_skill",
- ["num"]=5400326,
+ ["num"]=5400426,
["ratio"]=10000,
["round"]=1
}
diff --git a/lua/app/config/strings/cn/global.lua b/lua/app/config/strings/cn/global.lua
index ef1a83a2..135e6513 100644
--- a/lua/app/config/strings/cn/global.lua
+++ b/lua/app/config/strings/cn/global.lua
@@ -527,8 +527,32 @@ local localization_global =
["DUNGEON_RUNE_TIP_4"] = "血量回复至50%",
["DUNGEON_RUNE_TIP_5"] = "回合数+5!",
["UNFINISHED"] = "未完成",
-
- ["DUNGEON_RUNE_DESC_1"]= "目标",
+ ["RUNES_DESC_1"] = "符文铸台:{0}级",
+ ["RUNES_DESC_2"] = "符文套装",
+ ["RUNES_DESC_3"] = "符文铸台{0}级解锁",
+ ["RUNES_DESC_4"] = "一键淬炼",
+ ["RUNES_DESC_5"] = "淬炼",
+ ["RUNES_DESC_6"] = "符文",
+ ["RUNES_DESC_7"] = "符文铸台等级",
+ ["RUNES_DESC_8"] = "1.消耗符文精粹提升符文铸台等级。\n2.符文铸台等级提升将解锁付文栏,有概率淬炼出高品质符文。\n3.所有英雄符文铸台等级互通。\n4.同一种属性,最多只会出现2条。",
+ ["RUNES_DESC_9"] = "符文套装效果",
+ ["RUNES_DESC_10"] = "生命套装",
+ ["RUNES_DESC_11"] = "攻击套装",
+ ["RUNES_DESC_12"] = "增伤套装",
+ ["RUNES_DESC_13"] = "暴击套装",
+ ["RUNES_DESC_14"] = "爆伤套装",
+ ["RUNES_DESC_15"] = "Lv1-2件套:{0}",
+ ["RUNES_DESC_16"] = "Lv2-4件套:{0}",
+ ["RUNES_DESC_17"] = "符文每日礼包",
+ ["RUNES_DESC_18"] = "强化材料不足",
+ ["RUNES_DESC_19"] = "符文精华不足,洋葱头也没办法",
+ ["RUNES_DESC_20"] = "符文之塔获得",
+ ["RUNES_DESC_21"] = "一键淬炼,只有在出现S和SS符文或符文精粹不足时停止,是否开始?",
+ ["RUNES_DESC_22"] = "符文属性",
+ ["RUNES_DESC_23"] = "无套装效果",
+ ["RUNES_DESC_24"] = "请先激活英雄",
+ ["RUNES_DESC_25"] = "符文淬炼至少保留1个未锁符文",
+ ["DUNGEON_RUNE_DESC_1"] = "目标",
["DUNGEON_RUNE_DESC_2"] = "再次挑战",
["DUNGEON_RUNE_DESC_3"] = "通关获得",
["DUNGEON_RUNE_DESC_4"] = "扫荡获得",
diff --git a/lua/app/config/strings/cn/skill_rogue.lua b/lua/app/config/strings/cn/skill_rogue.lua
index b2abe9f9..3d2c2f78 100644
--- a/lua/app/config/strings/cn/skill_rogue.lua
+++ b/lua/app/config/strings/cn/skill_rogue.lua
@@ -876,28 +876,28 @@ local skill_rogue = {
["desc"]="九尾祥瑞激活所需能量-2。"
},
[2400400]={
- ["desc"]="解锁双截龙棍:使用后本次伤害提升,并额外造成多次大量技能伤害。"
+ ["desc"]="解锁啊,打!:使用后本次伤害提升,并额外造成多次大量技能伤害。"
},
[2400401]={
- ["desc"]="双截龙棍技能伤害提升。"
+ ["desc"]="啊,打!技能伤害提升。"
},
[2400402]={
- ["desc"]="双截龙棍沿+方向可额外消除4格。"
+ ["desc"]="啊,打!沿+方向可额外消除4格。"
},
[2400403]={
["desc"]="龙哥普攻有5%概率附加眩晕效果,1回合。"
},
[2400404]={
- ["desc"]="双截龙棍沿X方向可额外消除4格。"
+ ["desc"]="啊,打!沿X方向可额外消除4格。"
},
[2400405]={
- ["desc"]="双截龙棍可附加流血效果,2回合。"
+ ["desc"]="啊,打!可附加流血效果,2回合。"
},
[2400406]={
["desc"]="Combo:龙哥普攻对冰霜和流血敌人额外增伤。"
},
[2400407]={
- ["desc"]="双截龙棍附加的眩晕效果概率提高至10%,回合数+1。"
+ ["desc"]="啊,打!附加的眩晕效果概率提高至10%,回合数+1。"
},
[3400400]={
["desc"]="解锁刺杀艺术:使用后本次伤害提升,并额外造成多次大量技能伤害。"
@@ -936,7 +936,7 @@ local skill_rogue = {
["desc"]="飞棺降物附加的冰霜效果,回合数+1。"
},
[4400404]={
- ["desc"]="Combo:已逝行者普攻对腐败敌人将恢复生命。"
+ ["desc"]="Combo:已逝行者普攻腐败敌人将恢复生命。"
},
[4400405]={
["desc"]="飞棺降物释放后为团队附加重生效果,1回合。"
diff --git a/lua/app/global/global_const.lua b/lua/app/global/global_const.lua
index a61ad7e6..cb5e20be 100644
--- a/lua/app/global/global_const.lua
+++ b/lua/app/global/global_const.lua
@@ -13,6 +13,7 @@ local CONST_PATHS = {
HeroConst = "app/module/hero/hero_const",
FormationConst = "app/module/formation/formation_const",
EquipConst = "app/module/equip/equip_const",
+ RunesConst = "app/module/runes/runes_const",
DungeonConst = "app/module/dungeon/dungeon_const",
ShopConst = "app/module/shop/shop_const",
SummonConst = "app/module/summon/summon_const",
@@ -310,7 +311,8 @@ GConst.MESSAGE_BOX_TYPE = {
GConst.MESSAGE_BOX_SHOW_TODAY = {
BOUNTY_BUY_LEVEL = 1,
HOT_SELL_BUY = 2,
- ACTIVITY_BUY_LEVEL = 2,
+ ACTIVITY_BUY_LEVEL = 3,
+ RUNES_AUTO = 4,
}
GConst.QUALITY_TYPE =
diff --git a/lua/app/global/global_func.lua b/lua/app/global/global_func.lua
index 06d2c83a..09b53f0b 100644
--- a/lua/app/global/global_func.lua
+++ b/lua/app/global/global_func.lua
@@ -434,10 +434,27 @@ function GFunc.getBuffDesc(buffName, effectNum, ispercent)
end
function GFunc.getAttrDesc(attrName, attrNum)
- attrNum = attrNum // 100
+ attrNum = GFunc.getAttrShowValue(attrName, attrNum, true)
return I18N:getTextWithOtherKey("attr", "name", attrName, "desc", attrNum)
end
+-- 获取属性用于显示的数值
+function GFunc.getAttrShowValue(attrType, attrNum, notPercentSign)
+ if table.containValue(GConst.MATCH_ATTACK_ADD_NAME, attrType) or
+ table.containValue(GConst.MATCH_HP_ADD_NAME, attrType) or
+ table.containValue(GConst.MATCH_NORMAL_HURTP_NAME, attrType) or
+ table.containValue(GConst.MATCH_SKILL_HURTP_NAME, attrType) or
+ table.containValue(GConst.MATCH_CRIT_NAME, attrType) or
+ table.containValue(GConst.MATCH_CRIT_TIME_NAME, attrType) or
+ table.containValue(GConst.MATCH_CURED_NAME, attrType)
+ then
+ local str = notPercentSign and "" or "%"
+ return attrNum // GConst.BattleConst.PERCENT_FACTOR .. str
+ else
+ return attrNum // GConst.BattleConst.DEFAULT_FACTOR
+ end
+end
+
function GFunc.getAttrName(key)
return I18N:getText("attr", key, "name")
end
@@ -1821,7 +1838,7 @@ function GFunc.formatPlayerName(name)
return name
end
--- info = {array_heroes, heroes_equips, skins} -- 服务器返回的数据
+-- info = {array_heroes, heroes_equips, skins, heroes_runes} -- 服务器返回的数据
function GFunc.formatPlayerFormationInfo(info)
local formation = {}
if not info.array_heroes then
@@ -1840,6 +1857,9 @@ function GFunc.formatPlayerFormationInfo(info)
if not info.skins then
info.skins = {}
end
+ if not info.heroes_runes then
+ info.heroes_runes = {}
+ end
for matchType, heroEntity in pairs(formation) do
local heroId = heroEntity:getCfgId()
@@ -1868,6 +1888,13 @@ function GFunc.formatPlayerFormationInfo(info)
if #skinIds > 0 then
heroEntity:setSkins(skinIds)
end
+
+ -- 处理符文
+ if info.heroes_runes[heroId] == nil then
+ info.heroes_runes[heroId] = {grids = {}}
+ end
+ local runesEntity = DataManager.RunesData:createEntity(heroId, info.heroes_runes[heroId].grids)
+ heroEntity:setRunes(runesEntity)
end
return formation
diff --git a/lua/app/module/battle/battle_const.lua b/lua/app/module/battle/battle_const.lua
index 16aab34b..4726a9d5 100644
--- a/lua/app/module/battle/battle_const.lua
+++ b/lua/app/module/battle/battle_const.lua
@@ -20,6 +20,7 @@ BattleConst.SKILL_TYPE_ASSISTING = 3
BattleConst.SKILL_TYPE_PASSIVE = 4
BattleConst.SKILL_SELECT_COUNT = 3
BattleConst.DEFAULT_FACTOR = 10000
+BattleConst.PERCENT_FACTOR = 100
BattleConst.TIME_FACTOR = 1000
BattleConst.INIT_POS_X = 140 -- 战斗单位初始化的坐标
BattleConst.UNIT_FRONT_POS_X = 0 -- 战斗单位身前的坐标
diff --git a/lua/app/module/hero/hero_const.lua b/lua/app/module/hero/hero_const.lua
index b8bc0f4d..6d406356 100644
--- a/lua/app/module/hero/hero_const.lua
+++ b/lua/app/module/hero/hero_const.lua
@@ -1,5 +1,14 @@
local HeroConst = {}
+-- 英雄颜色类型
+HeroConst.MATCH_TYPE = {
+ RED = 1,
+ YELLOW = 2,
+ GREEN = 3,
+ BLUE = 4,
+ PURPLE = 5
+}
+
HeroConst.MATCH_ICON_NAME = {
[1] = "match_1",
[2] = "match_2",
@@ -21,7 +30,7 @@ HeroConst.PANEL_TYPE = {
HERO = 1,
WEAPON = 2,
ARMOR = 3,
- SKIN = 4,
+ RUNES = 4,
}
-- 总计
@@ -70,6 +79,18 @@ HeroConst.ATTR_SHOW_SKIN = {
GConst.MATCH_SKILL_HURTP_NAME, -- 技能增伤百分比
GConst.MATCH_CURED_NAME, -- 治疗效果提升百分比
}
+-- 符文
+HeroConst.ATTR_SHOW_RUNES = {
+ GConst.MATCH_HP_FIX_NAME, -- 生命
+ GConst.MATCH_ATTACK_NAME, -- 攻击
+ GConst.MATCH_NORMAL_HURT_NAME, -- 普攻增伤
+ GConst.MATCH_SKILL_HURT_NAME, -- 技能增伤
+ GConst.MATCH_CRIT_NAME, -- 暴击率百分比
+ GConst.MATCH_CRIT_TIME_NAME, -- 暴击伤害百分比
+ GConst.MATCH_NORMAL_HURTP_NAME, -- 普攻增伤百分比
+ GConst.MATCH_SKILL_HURTP_NAME, -- 技能增伤百分比
+ GConst.MATCH_CURED_NAME, -- 治疗效果提升百分比
+}
-- 需要显示属性的模块
HeroConst.SHOW_NODE = {
@@ -77,6 +98,7 @@ HeroConst.SHOW_NODE = {
HeroConst.ATTR_SHOW_BASE,
HeroConst.ATTR_SHOW_WEAPON,
HeroConst.ATTR_SHOW_ARMOR,
+ HeroConst.ATTR_SHOW_RUNES,
HeroConst.ATTR_SHOW_SKIN,
}
diff --git a/lua/app/module/hero/hero_manager.lua b/lua/app/module/hero/hero_manager.lua
index 80618ba2..8f8566fb 100644
--- a/lua/app/module/hero/hero_manager.lua
+++ b/lua/app/module/hero/hero_manager.lua
@@ -1,7 +1,11 @@
local HeroManager = class("HeroManager", BaseModule)
-function HeroManager:showHeroDetailUI(heroId, onlyLook, heroEntity, skinId, formationType)
- UIManager:showUI("app/ui/hero/hero_detail_ui", {heroId = heroId, onlyLook = onlyLook, heroEntity = heroEntity, skinId = skinId, formationType = formationType})
+function HeroManager:showHeroDetailUI(heroId, onlyLook, heroEntity, formationType)
+ UIManager:showUI("app/ui/hero/hero_detail_ui", {heroId = heroId, onlyLook = onlyLook, heroEntity = heroEntity, formationType = formationType})
+end
+
+function HeroManager:showHeroSkinUI(heroId, onlyLookSkinId)
+ UIManager:showUI("app/ui/hero/hero_skin_ui", {heroId = heroId, onlyLookSkinId = onlyLookSkinId})
end
function HeroManager:showHeroUnlockUI(heroIdList)
diff --git a/lua/app/module/item/item_const.lua b/lua/app/module/item/item_const.lua
index 7a87a188..c66a9cba 100644
--- a/lua/app/module/item/item_const.lua
+++ b/lua/app/module/item/item_const.lua
@@ -19,6 +19,7 @@ ItemConst.ITEM_ID_ARENA_TICKET = 22
ItemConst.ITEM_ID_FOURTEEN_DAY_EXCHANGE = 51
ItemConst.ITEM_ID_GLOD_WING = 49
ItemConst.ITEM_ID_SLIVER_WING = 50
+ItemConst.ITEM_ID_RUNES = 55
ItemConst.ITEM_TYPE = {
RES = 1,
diff --git a/lua/app/module/runes.meta b/lua/app/module/runes.meta
new file mode 100644
index 00000000..53a3d38f
--- /dev/null
+++ b/lua/app/module/runes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 18d45baac20fe4d4b8f98e500a15c222
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/lua/app/module/runes/runes_const.lua b/lua/app/module/runes/runes_const.lua
new file mode 100644
index 00000000..ec960a1f
--- /dev/null
+++ b/lua/app/module/runes/runes_const.lua
@@ -0,0 +1,29 @@
+local RunesConst = {}
+
+RunesConst.GIFT_IDS = {
+ 210102,
+ 210202,
+ 210302,
+}
+
+RunesConst.QUALITY_ICON = {
+ [1] = "hero_rune_f",
+ [2] = "hero_rune_e",
+ [3] = "hero_rune_d",
+ [4] = "hero_rune_c",
+ [5] = "hero_rune_b",
+ [6] = "hero_rune_a",
+ [7] = "hero_rune_s",
+ [8] = "hero_rune_ss",
+}
+
+-- 最大属性栏位数
+RunesConst.MAX_ATTR_GRID_COUNT = 6
+-- 品质个数
+RunesConst.MAX_QUALITY_COUNT = 8
+-- 最大套装个数
+RunesConst.MAX_SUITS_COUNT = 5
+-- 最大符文种类个数
+RunesConst.MAX_ATTR_COUNT = 11
+
+return RunesConst
\ No newline at end of file
diff --git a/lua/app/ui/hero/skin_info_comp.lua.meta b/lua/app/module/runes/runes_const.lua.meta
similarity index 86%
rename from lua/app/ui/hero/skin_info_comp.lua.meta
rename to lua/app/module/runes/runes_const.lua.meta
index 2dae3444..64b9aa20 100644
--- a/lua/app/ui/hero/skin_info_comp.lua.meta
+++ b/lua/app/module/runes/runes_const.lua.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 7209380a6f275fe4fa7fd87e464fde53
+guid: 4bda2a68bd04f8e4993df04a2b3878c7
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
diff --git a/lua/app/module/runes/runes_manager.lua b/lua/app/module/runes/runes_manager.lua
new file mode 100644
index 00000000..38c3c295
--- /dev/null
+++ b/lua/app/module/runes/runes_manager.lua
@@ -0,0 +1,45 @@
+local RunesManager = class("RunesManager", BaseModule)
+
+-- 锁定和解锁属性栏
+function RunesManager:reqChangeLockGrid(heroId, index, isLock)
+ self:sendMessage(ProtoMsgType.FromMsgEnum.RuneLockReq, {hero_id = heroId, grid_num = index, lock = isLock}, {}, self.rspChangeLockGrid)
+end
+
+function RunesManager:rspChangeLockGrid(result)
+ if result.hero_girds then
+ DataManager.RunesData:onGridLockSuccess(result.reqData.hero_id, result.hero_girds.grids)
+ end
+end
+
+-- 淬炼
+function RunesManager:reqQuenching(heroId, autoCount)
+ if DataManager.RunesData:getRunes(heroId):getAttrLockCount() >= DataManager.RunesData:getUnlockCount() then
+ GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_25))
+ return
+ end
+ if self.isReqQuenching then
+ return
+ end
+
+ local cost = DataManager.RunesData:getRunes(heroId):getMaterialCost()
+ if not GFunc.checkCost(GFunc.getRewardId(cost), GFunc.getRewardNum(cost), true) then
+ UIManager:showUI("app/ui/runes/runes_source_ui")
+ return
+ end
+
+ self.isReqQuenching = true
+ self:sendMessage(ProtoMsgType.FromMsgEnum.RuneQuenchingReq, {hero_id = heroId, auto_count = autoCount}, {}, self.rspQuenching, BIReport.ITEM_GET_TYPE.RUNES_QUENCHING)
+end
+
+function RunesManager:rspQuenching(result)
+ self.isReqQuenching = false
+ if result.err_code == GConst.ERROR_STR.SUCCESS then
+ DataManager.RunesData:onQuenchingSuccess(result.level, result.exp, result.reqData.hero_id, result.hero_girds.grids)
+ end
+end
+
+function RunesManager:rspUpdate(result)
+ DataManager.RunesData:init(result.rune)
+end
+
+return RunesManager
\ No newline at end of file
diff --git a/lua/app/module/runes/runes_manager.lua.meta b/lua/app/module/runes/runes_manager.lua.meta
new file mode 100644
index 00000000..ca51460f
--- /dev/null
+++ b/lua/app/module/runes/runes_manager.lua.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 88f86325d3b00894d8fb5beb962a5ac0
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
diff --git a/lua/app/module/tips/tips_manager.lua b/lua/app/module/tips/tips_manager.lua
index 059bfd01..dde5d2d7 100644
--- a/lua/app/module/tips/tips_manager.lua
+++ b/lua/app/module/tips/tips_manager.lua
@@ -48,7 +48,7 @@ function TipsManager:showRewardTips(rewardId, rewardType, tarPrefabObj, alignTyp
return
elseif info.type == GConst.ItemConst.ITEM_TYPE.SKIN then
-- 英雄皮肤
- ModuleManager.HeroManager:showHeroDetailUI(DataManager.SkinData:getHeroIdBySkinId(info.parameter), true, nil, info.parameter)
+ ModuleManager.HeroManager:showHeroSkinUI(DataManager.SkinData:getHeroIdBySkinId(info.parameter), info.parameter)
return
elseif info.type == GConst.ItemConst.ITEM_TYPE.RANDOM_BOX_ITEM or info.type == GConst.ItemConst.ITEM_TYPE.FIXED_BOX_ITEM then
self:showBoxItemTips(rewardId)
diff --git a/lua/app/ui/hero/cell/attr_cell.lua b/lua/app/ui/hero/cell/attr_cell.lua
index 617f5bbd..6f2a4497 100644
--- a/lua/app/ui/hero/cell/attr_cell.lua
+++ b/lua/app/ui/hero/cell/attr_cell.lua
@@ -1,6 +1,4 @@
local AttrCell = class("AttrCell", BaseCell)
-local DEFAULT_FACTOR = GConst.BattleConst.DEFAULT_FACTOR
-local PERCENT_FACTOR = 100
function AttrCell:init()
local uiMap = self:getUIMap()
@@ -63,9 +61,11 @@ function AttrCell:showHp()
value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getHp()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getHp(self.heroEntity)
+ elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then
+ value = value + self.heroEntity:getRunes():getAttrValue(self.attrName)
end
- self.txValue:setText(value // DEFAULT_FACTOR)
+ self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end
-- 显示攻击力
@@ -95,9 +95,11 @@ function AttrCell:showAtk()
value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getAttack()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getAttack(self.heroEntity)
+ elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then
+ value = value + self.heroEntity:getRunes():getAttrValue(self.attrName)
end
- self.txValue:setText(value // DEFAULT_FACTOR)
+ self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end
-- 显示普攻增伤
@@ -117,9 +119,11 @@ function AttrCell:showNormalHurt()
value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getNormalHurt()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getNormalHurt(self.heroEntity)
+ elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then
+ value = value + self.heroEntity:getRunes():getAttrValue(self.attrName)
end
- self.txValue:setText(value // DEFAULT_FACTOR)
+ self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end
-- 显示技能增伤
@@ -139,9 +143,11 @@ function AttrCell:showSkillHurt()
value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getSkillHurt()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getSkillHurt(self.heroEntity)
+ elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then
+ value = value + self.heroEntity:getRunes():getAttrValue(self.attrName)
end
- self.txValue:setText(value // DEFAULT_FACTOR)
+ self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end
-- 显示暴击率
@@ -158,9 +164,11 @@ function AttrCell:showCrit()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getCritPercent(self.heroEntity)
+ elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then
+ value = value + self.heroEntity:getRunes():getAttrValue(self.attrName)
end
- self.txValue:setText(value // PERCENT_FACTOR .. "%")
+ self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end
-- 显示暴击伤害百分比
@@ -177,9 +185,11 @@ function AttrCell:showCritAtk()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getCritHurtPercent(self.heroEntity)
+ elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then
+ value = value + self.heroEntity:getRunes():getAttrValue(self.attrName)
end
- self.txValue:setText(value // PERCENT_FACTOR .. "%")
+ self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end
-- 显示普攻增伤百分比
@@ -200,9 +210,11 @@ function AttrCell:showNormalHurtp()
-- value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getNormalHurtPercent()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getNormalHurtPercent(self.heroEntity)
+ elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then
+ value = value + self.heroEntity:getRunes():getAttrValue(self.attrName)
end
- self.txValue:setText(value // PERCENT_FACTOR .. "%")
+ self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end
-- 显示技能增伤百分比
@@ -223,9 +235,11 @@ function AttrCell:showSkillHurtp()
-- value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getSkillHurtPercent()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getSkillHurtPercent(self.heroEntity)
+ elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then
+ value = value + self.heroEntity:getRunes():getAttrValue(self.attrName)
end
- self.txValue:setText(value // PERCENT_FACTOR .. "%")
+ self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end
-- 显示治疗效果提升百分比
@@ -242,9 +256,11 @@ function AttrCell:showCured()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getHealPercent(self.heroEntity)
+ elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then
+ value = value + self.heroEntity:getRunes():getAttrValue(self.attrName)
end
- self.txValue:setText(value // PERCENT_FACTOR .. "%")
+ self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end
return AttrCell
\ No newline at end of file
diff --git a/lua/app/ui/hero/cell/attr_node_cell.lua b/lua/app/ui/hero/cell/attr_node_cell.lua
index 8f506223..8053e6ea 100644
--- a/lua/app/ui/hero/cell/attr_node_cell.lua
+++ b/lua/app/ui/hero/cell/attr_node_cell.lua
@@ -20,11 +20,13 @@ function AttrNodeCell:refresh(heroEntity, node)
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_16))
elseif node == GConst.HeroConst.ATTR_SHOW_SKIN then
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_17))
+ elseif node == GConst.HeroConst.ATTR_SHOW_RUNES then
+ self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_22))
end
self.attrCount = 0
for index, attr in ipairs(node) do
- if node ~= GConst.HeroConst.ATTR_SHOW_SKIN or DataManager.SkinData:hasAttr(heroEntity, attr[heroEntity:getMatchType()]) then
+ if self:isShowAttr(heroEntity, node, attr) then
self.attrCount = self.attrCount + 1
CellManager:loadCellAsync(ATTR_CELL_PATH, ATTR_CELL, self.itemsRoot, function(cell)
cell:refresh(heroEntity, node, attr)
@@ -33,6 +35,18 @@ function AttrNodeCell:refresh(heroEntity, node)
end
end
+-- 是否显示属性项
+function AttrNodeCell:isShowAttr(heroEntity, node, attr)
+ if node == GConst.HeroConst.ATTR_SHOW_SKIN then
+ return DataManager.SkinData:hasAttr(heroEntity, attr[heroEntity:getMatchType()])
+ end
+ if node == GConst.HeroConst.ATTR_SHOW_RUNES then
+ return heroEntity:getRunes():hasAttr(attr[heroEntity:getMatchType()])
+ end
+
+ return true
+end
+
--获取节点显示属性个数
function AttrNodeCell:getShowAttrCount()
return self.attrCount
diff --git a/lua/app/ui/hero/hero_attr_ui.lua b/lua/app/ui/hero/hero_attr_ui.lua
index 1b419be6..eb9d93bb 100644
--- a/lua/app/ui/hero/hero_attr_ui.lua
+++ b/lua/app/ui/hero/hero_attr_ui.lua
@@ -44,7 +44,7 @@ function HeroAttrUI:onRefresh()
local totalHeight = 0
for index, node in ipairs(GConst.HeroConst.SHOW_NODE) do
-- 有皮肤属性时才显示皮肤
- if node ~= GConst.HeroConst.ATTR_SHOW_SKIN or #DataManager.SkinData:getOwnAllAttr(self.heroEntity) > 0 then
+ if self:isShowAttr(node) then
CellManager:loadCellAsync(ATTR_NODE_CELL_PATH, ATTR_NODE_CELL, self.rootNodes, function(cell)
cell:refresh(self.heroEntity, node)
@@ -60,4 +60,17 @@ function HeroAttrUI:onRefresh()
self.rootNodes:setAnchoredPositionY(0)
end
+-- 是否显示属性块
+function HeroAttrUI:isShowAttr(node)
+ if node == GConst.HeroConst.ATTR_SHOW_SKIN then
+ return #DataManager.SkinData:getOwnAllAttr(self.heroEntity) > 0
+ end
+ if node == GConst.HeroConst.ATTR_SHOW_RUNES then
+ local all = self.heroEntity:getRunes():getAllAttr()
+ return all and #all > 0
+ end
+
+ return true
+end
+
return HeroAttrUI
\ No newline at end of file
diff --git a/lua/app/ui/hero/hero_comp.lua b/lua/app/ui/hero/hero_comp.lua
index f8c1d7b7..8e8abbaf 100644
--- a/lua/app/ui/hero/hero_comp.lua
+++ b/lua/app/ui/hero/hero_comp.lua
@@ -58,7 +58,7 @@ function HeroComp:init()
if heroId then
local hero = DataManager.HeroData:getHeroById(heroId)
if hero then
- ModuleManager.HeroManager:showHeroDetailUI(heroId, nil, nil, nil, self.battleType)
+ ModuleManager.HeroManager:showHeroDetailUI(heroId, nil, nil, self.battleType)
end
end
end)
@@ -265,7 +265,7 @@ function HeroComp:onClickHero(cell, heroId)
self.largeHeroCell:refresh(entity, not entity:isActived(), self.onClickUseFunc)
self.largeHeroCell:showCheck(self.curFormation[entity:getMatchType()] == heroId)
else
- ModuleManager.HeroManager:showHeroDetailUI(heroId, nil, nil, nil, self.battleType)
+ ModuleManager.HeroManager:showHeroDetailUI(heroId, nil, nil, self.battleType)
self.largeHeroCell:getBaseObject():setAnchoredPositionX(OUT_SCREEN_X)
end
else
diff --git a/lua/app/ui/hero/hero_detail_ui.lua b/lua/app/ui/hero/hero_detail_ui.lua
index e969a868..dd27a174 100644
--- a/lua/app/ui/hero/hero_detail_ui.lua
+++ b/lua/app/ui/hero/hero_detail_ui.lua
@@ -2,10 +2,9 @@ local HeroDetailUI = class("HeroDetailUI", BaseUI)
local COMP_HERO = "app/ui/hero/hero_info_comp"
local COMP_WEAPON = "app/ui/hero/weapon_info_comp"
local COMP_ARMOR = "app/ui/hero/armor_info_comp"
-local COMP_SKIN = "app/ui/hero/skin_info_comp"
+local COMP_RUNES = "app/ui/hero/runes_info_comp"
local SIZE_DELTA_Y_HERO = 942
local SIZE_DELTA_Y_LOOK_HERO = 802
-local SIZE_DELTA_Y_LOOK_SKIN = 720
function HeroDetailUI:isFullScreen()
return false
@@ -20,12 +19,7 @@ function HeroDetailUI:onPressBackspace()
end
function HeroDetailUI:ctor(parmas)
- if parmas.skinId then
- self.onlyLookSkinId = parmas.skinId
- self.panelType = GConst.HeroConst.PANEL_TYPE.SKIN
- else
- self.panelType = parmas.panelType or GConst.HeroConst.PANEL_TYPE.HERO
- end
+ self.panelType = parmas.panelType or GConst.HeroConst.PANEL_TYPE.HERO
self.formationType = parmas.formationType
self.onlyLook = parmas.onlyLook
if parmas.heroEntity then
@@ -43,9 +37,10 @@ function HeroDetailUI:onLoadRootComplete()
self.heroInfo = uiMap["hero_detail_ui.hero_info"]
self.weaponInfo = uiMap["hero_detail_ui.weapon_info"]
self.armorInfo = uiMap["hero_detail_ui.armor_info"]
- self.skinInfo = uiMap["hero_detail_ui.skin_info"]
+ self.runesInfo = uiMap["hero_detail_ui.runes_info"]
self.txTitle = uiMap["hero_detail_ui.common.img_title.tx_title"]
self.btnClose = uiMap["hero_detail_ui.common.btn_close"]
+ self.bg = uiMap["hero_detail_ui.common.bg.bg"]
self.btnHero = uiMap["hero_detail_ui.common.btns.btn_hero"]
self.txHero1 = uiMap["hero_detail_ui.common.btns.btn_hero.tx_btn"]
self.selectHero = uiMap["hero_detail_ui.common.btns.btn_hero.select"]
@@ -60,11 +55,11 @@ function HeroDetailUI:onLoadRootComplete()
self.txArmor1 = uiMap["hero_detail_ui.common.btns.btn_armor.tx_btn"]
self.selectArmor = uiMap["hero_detail_ui.common.btns.btn_armor.select"]
self.txArmor2 = uiMap["hero_detail_ui.common.btns.btn_armor.select.tx_select"]
- self.btnSkin = uiMap["hero_detail_ui.common.btns.btn_skin"]
- self.lockSkin = uiMap["hero_detail_ui.common.btns.btn_skin.content.img_lock"]
- self.txSkin1 = uiMap["hero_detail_ui.common.btns.btn_skin.content.tx_btn"]
- self.selectSkin = uiMap["hero_detail_ui.common.btns.btn_skin.select"]
- self.txSkin2 = uiMap["hero_detail_ui.common.btns.btn_skin.select.tx_select"]
+ self.btnRunes = uiMap["hero_detail_ui.common.btns.btn_runes"]
+ self.lockRunes = uiMap["hero_detail_ui.common.btns.btn_runes.content.img_lock"]
+ self.txRunes1 = uiMap["hero_detail_ui.common.btns.btn_runes.content.tx_btn"]
+ self.selectRunes = uiMap["hero_detail_ui.common.btns.btn_runes.select"]
+ self.txRunes2 = uiMap["hero_detail_ui.common.btns.btn_runes.select.tx_select"]
self.btnLeft = uiMap["hero_detail_ui.common.btn_left"]
self.btnRight = uiMap["hero_detail_ui.common.btn_right"]
@@ -74,8 +69,8 @@ function HeroDetailUI:onLoadRootComplete()
self.txWeapon2:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_1))
self.txArmor1:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_2))
self.txArmor2:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_2))
- self.txSkin1:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN))
- self.txSkin2:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN))
+ self.txRunes1:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_6))
+ self.txRunes2:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_6))
if not DataManager.EquipData:isWeaponOpen() then
self.lockWeapon:setVisible(true)
GFunc.centerImgAndTx(self.lockWeapon, self.txWeapon1, 5)
@@ -88,11 +83,11 @@ function HeroDetailUI:onLoadRootComplete()
else
self.lockArmor:setVisible(false)
end
- if not DataManager.SkinData:isOpen() then
- self.lockSkin:setVisible(true)
- GFunc.centerImgAndTx(self.lockSkin, self.txSkin1, 5)
+ if not DataManager.RunesData:isOpen() then
+ self.lockRunes:setVisible(true)
+ GFunc.centerImgAndTx(self.lockRunes, self.txRunes1, 5)
else
- self.lockSkin:setVisible(false)
+ self.lockRunes:setVisible(false)
end
self.heroList = DataManager.HeroData:getAllHeroesSort(self.formationType)
@@ -117,18 +112,22 @@ function HeroDetailUI:onLoadRootComplete()
self.panelType = GConst.HeroConst.PANEL_TYPE.ARMOR
self:refreshShow()
end)
- self.btnSkin:addClickListener(function()
- if not DataManager.SkinData:isOpen(true) then
+ self.btnRunes:addClickListener(function()
+ if not DataManager.RunesData:isOpen(true) then
return
end
- self.panelType = GConst.HeroConst.PANEL_TYPE.SKIN
+ if not self.heroEntity:isActived() then
+ GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_24))
+ return
+ end
+ self.panelType = GConst.HeroConst.PANEL_TYPE.RUNES
self:refreshShow()
end)
self.btnClose:addClickListener(function()
self:closeUI()
end)
self.btnLeft:addClickListener(function()
- if not self:isExistLeftHero() then
+ if not self:isShowLeftArrow() then
return
end
self.heroEntity = DataManager.HeroData:getHeroById(self.heroList[self.idxLast].cfgId)
@@ -136,7 +135,7 @@ function HeroDetailUI:onLoadRootComplete()
self:refreshShow()
end)
self.btnRight:addClickListener(function()
- if not self:isExistRightHero() then
+ if not self:isShowRightArrow() then
return
end
self.heroEntity = DataManager.HeroData:getHeroById(self.heroList[self.idxNext].cfgId)
@@ -168,9 +167,6 @@ function HeroDetailUI:onLoadRootComplete()
self:addEventListener(EventManager.CUSTOM_EVENT.GO_DUNGEON_UI, function()
self:closeUI()
end)
- self:addEventListener(EventManager.CUSTOM_EVENT.SKIN_SELECT, function(skinId)
- self.compSkin:refreshSelectSkin(skinId)
- end)
end
function HeroDetailUI:updateSide()
@@ -190,28 +186,26 @@ function HeroDetailUI:refreshShow()
self:showWeaponInfo()
elseif self.panelType == GConst.HeroConst.PANEL_TYPE.ARMOR then
self:showArmorInfo()
- elseif self.panelType == GConst.HeroConst.PANEL_TYPE.SKIN then
- self:showSkinInfo()
+ elseif self.panelType == GConst.HeroConst.PANEL_TYPE.RUNES then
+ self:showRunesInfo()
end
if self.onlyLook then -- 仅查看的不显示升级和激活按钮
self.btnHero:setActive(false)
self.btnWeapon:setActive(false)
self.btnArmor:setActive(false)
- self.btnSkin:setActive(false)
+ self.btnRunes:setActive(false)
self.btnLeft:setActive(false)
self.btnRight:setActive(false)
if self.panelType == GConst.HeroConst.PANEL_TYPE.HERO then
self.commonInfo:setSizeDeltaY(SIZE_DELTA_Y_LOOK_HERO)
- elseif self.panelType == GConst.HeroConst.PANEL_TYPE.SKIN then
- self.commonInfo:setSizeDeltaY(SIZE_DELTA_Y_LOOK_SKIN)
end
else
self.btnHero:setActive(true)
self.btnWeapon:setActive(true)
self.btnArmor:setActive(true)
- self.btnSkin:setActive(true)
- self.btnLeft:setActive(self:isExistLeftHero())
- self.btnRight:setActive(self:isExistRightHero())
+ self.btnRunes:setActive(true)
+ self.btnLeft:setActive(self:isShowLeftArrow())
+ self.btnRight:setActive(self:isShowRightArrow())
self.commonInfo:setSizeDeltaY(SIZE_DELTA_Y_HERO)
self:refreshRedPoint()
end
@@ -243,8 +237,9 @@ function HeroDetailUI:showHeroInfo()
self.selectWeapon:setActive(false)
self.armorInfo:setActive(false)
self.selectArmor:setActive(false)
- self.skinInfo:setActive(false)
- self.selectSkin:setActive(false)
+ self.runesInfo:setActive(false)
+ self.selectRunes:setActive(false)
+ self.bg:setActive(true)
if not self.compHero then
self.heroInfo:initPrefabHelper()
@@ -263,8 +258,9 @@ function HeroDetailUI:showWeaponInfo()
self.selectWeapon:setActive(true)
self.armorInfo:setActive(false)
self.selectArmor:setActive(false)
- self.skinInfo:setActive(false)
- self.selectSkin:setActive(false)
+ self.runesInfo:setActive(false)
+ self.selectRunes:setActive(false)
+ self.bg:setActive(true)
if not self.compWeapon then
self.weaponInfo:initPrefabHelper()
@@ -284,8 +280,9 @@ function HeroDetailUI:showArmorInfo()
self.selectWeapon:setActive(false)
self.armorInfo:setActive(true)
self.selectArmor:setActive(true)
- self.skinInfo:setActive(false)
- self.selectSkin:setActive(false)
+ self.runesInfo:setActive(false)
+ self.selectRunes:setActive(false)
+ self.bg:setActive(true)
if not self.compArmor then
self.armorInfo:initPrefabHelper()
@@ -298,34 +295,42 @@ function HeroDetailUI:showArmorInfo()
self.compArmor:refresh()
end
-function HeroDetailUI:showSkinInfo()
+function HeroDetailUI:showRunesInfo()
self.heroInfo:setActive(false)
self.selectHero:setActive(false)
self.weaponInfo:setActive(false)
self.selectWeapon:setActive(false)
self.armorInfo:setActive(false)
self.selectArmor:setActive(false)
- self.skinInfo:setActive(true)
- self.selectSkin:setActive(true)
+ self.runesInfo:setActive(true)
+ self.selectRunes:setActive(true)
+ self.bg:setActive(false)
- if not self.compSkin then
- self.skinInfo:initPrefabHelper()
- self.skinInfo:genAllChildren()
- self.compSkin = self.skinInfo:addLuaComponent(COMP_SKIN)
- self.compSkin:setUI(self)
+ if not self.compRunes then
+ self.runesInfo:initPrefabHelper()
+ self.runesInfo:genAllChildren()
+ self.compRunes = self.runesInfo:addLuaComponent(COMP_RUNES)
end
- self.compSkin:setHeroData(self.heroEntity, self.onlyLookSkinId)
- self.compSkin:refresh()
+ self.compRunes:setHeroData(self.heroEntity)
+ self.compRunes:refresh()
end
--- 是否存在左侧英雄
-function HeroDetailUI:isExistLeftHero()
+-- 是否显示左箭头
+function HeroDetailUI:isShowLeftArrow()
+ if self.panelType == GConst.HeroConst.PANEL_TYPE.RUNES then
+ return false
+ end
+
return self.idxLast and self.idxLast > 0
end
--- 是否存在右侧英雄
-function HeroDetailUI:isExistRightHero()
+-- 是否显示右箭头
+function HeroDetailUI:isShowRightArrow()
+ if self.panelType == GConst.HeroConst.PANEL_TYPE.RUNES then
+ return false
+ end
+
return self.idxNext and self.idxNext <= #self.heroList
end
diff --git a/lua/app/ui/hero/hero_info_comp.lua b/lua/app/ui/hero/hero_info_comp.lua
index 94e4df5a..e71dab05 100644
--- a/lua/app/ui/hero/hero_info_comp.lua
+++ b/lua/app/ui/hero/hero_info_comp.lua
@@ -34,6 +34,8 @@ function HeroInfoComp:init()
self.bgElement = uiMap["hero_detail_ui.bg.element_bg"]
self.btnAttr = uiMap["hero_info.bg_6.btn_attr"]
self.fragmentNode = uiMap["hero_detail_ui.bg.fragment_bg"]
+ self.btnSkin = uiMap["hero_info.up.btn_skin"]
+ self.txSkin = uiMap["hero_info.up.btn_skin.tx_skin"]
self.skill = {}
self.skillIcon = {}
@@ -47,7 +49,12 @@ function HeroInfoComp:init()
self.spineObjSkill:setVisible(false)
self.spineObjLv:setVisible(false)
self.spineObj:setVisible(false)
+ self.txSkin:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN))
+ self.btnSkin:setActive(DataManager.SkinData:isOpen())
+ self.btnSkin:addClickListener(function()
+ ModuleManager.HeroManager:showHeroSkinUI(self.heroEntity:getCfgId())
+ end)
self.btnUp:addClickListener(function()
ModuleManager.HeroManager:upgradeHero(self.heroEntity:getCfgId(), self.heroEntity)
end)
diff --git a/lua/app/ui/hero/skin_info_comp.lua b/lua/app/ui/hero/hero_skin_ui.lua
similarity index 87%
rename from lua/app/ui/hero/skin_info_comp.lua
rename to lua/app/ui/hero/hero_skin_ui.lua
index 56ffcb02..d53e574c 100644
--- a/lua/app/ui/hero/skin_info_comp.lua
+++ b/lua/app/ui/hero/hero_skin_ui.lua
@@ -1,13 +1,37 @@
-local SkinInfoComp = class("SkinInfoComp", LuaComponent)
-local DEFAULT_FACTOR = GConst.BattleConst.DEFAULT_FACTOR
-local PERCENT_FACTOR = 100
-
+local HeroSkinUI = class("HeroSkinUI", BaseUI)
local SIZE_DELTA_Y_SKIN = 942
local SIZE_DELTA_Y_LOOK = 720
-function SkinInfoComp:init()
- local uiMap = self:getUIMap()
+function HeroSkinUI:isFullScreen()
+ return false
+end
+function HeroSkinUI:getPrefabPath()
+ return "assets/prefabs/ui/hero/hero_skin_ui.prefab"
+end
+
+function HeroSkinUI:onPressBackspace()
+ self:closeUI()
+end
+
+function HeroSkinUI:ctor(parmas)
+ self.heroEntity = DataManager.HeroData:getHeroById(parmas.heroId)
+
+ if parmas.onlyLookSkinId then
+ self.onlyLook = true
+ self.selectSkinId = parmas.onlyLookSkinId
+ else
+ self.onlyLook = false
+ self.selectSkinId = self.heroEntity:getSkinId()
+ end
+end
+
+function HeroSkinUI:onLoadRootComplete()
+ local uiMap = self.root:genAllChildren()
+ self.bg = uiMap["hero_skin_ui.bg"]
+ self.content = uiMap["hero_skin_ui.content"]
+ self.txTitle = uiMap["hero_skin_ui.common.img_title.tx_title"]
+ self.btnClose = uiMap["hero_skin_ui.common.btn_close"]
self.txName = uiMap["skin_info.name.tx_name"]
self.bgQlt = uiMap["skin_info.bg_qlt"]
self.iconQlt = uiMap["skin_info.bg_qlt.icon_qlt"]
@@ -26,36 +50,28 @@ function SkinInfoComp:init()
self.attr[i] = uiMap["skin_info.attr_" .. i]
end
+ self.txTitle:setText(self.heroEntity:getName())
self.txDesc1:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN_ATTR))
self.txDesc2:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN_LIST))
+ self.btnClose:addClickListener(function()
+ self:closeUI()
+ end)
self.btnUse:addClickListener(function()
ModuleManager.SkinManager:reqChangeSkin(self.heroEntity:getCfgId(), self.selectSkinId)
end)
self.btnAttr:addClickListener(function()
UIManager:showUI("app/ui/hero/hero_attr_ui", {heroEntity = self.heroEntity})
end)
-end
-
-function SkinInfoComp:setUI(ui)
- self.uiRoot = ui
-end
-
-function SkinInfoComp:setHeroData(heroEntity, onlyLookSkinId)
- self.heroEntity = heroEntity
- if onlyLookSkinId then
- self.onlyLook = true
- self.selectSkinId = onlyLookSkinId
- else
- self.onlyLook = false
- self.selectSkinId = self.heroEntity:getSkinId()
- end
self:bind(self.heroEntity, "isDirty", function()
- self:refresh()
+ self:onRefresh()
+ end)
+ self:addEventListener(EventManager.CUSTOM_EVENT.SKIN_SELECT, function(skinId)
+ self:refreshSelectSkin(skinId)
end)
end
-function SkinInfoComp:refresh()
+function HeroSkinUI:onRefresh()
local ids = DataManager.SkinData:getHeroAllSkinIdsSort(self.heroEntity:getCfgId())
self.scrollrectComp:addInitCallback(function()
return "app/ui/hero/cell/skin_cell"
@@ -70,7 +86,7 @@ function SkinInfoComp:refresh()
end
-- 刷新选择皮肤相关内容
-function SkinInfoComp:refreshSelectSkin(selectId)
+function HeroSkinUI:refreshSelectSkin(selectId)
if selectId then
self.selectSkinId = selectId
self.scrollrectComp:updateAllCell()
@@ -95,77 +111,65 @@ function SkinInfoComp:refreshSelectSkin(selectId)
local txTitle = map["tx_title"]
local txNum = map["tx_num"]
- local showValue
if curAttr[index].type == GConst.MATCH_ATTACK_NAME[self.heroEntity:getMatchType()] then
-- 攻击
table.insert(showAttrType, GConst.MATCH_ATTACK_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_5")
txTitle:setText(""..I18N:getGlobalText(I18N.GlobalConst.ATTR_ATK).."")
- showValue = curAttr[index].num // DEFAULT_FACTOR
elseif curAttr[index].type == GConst.MATCH_ATTACK_ADD_NAME[self.heroEntity:getMatchType()] then
-- 攻击加成百分比
table.insert(showAttrType, GConst.MATCH_ATTACK_ADD_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_5")
txTitle:setText(""..I18N:getGlobalText(I18N.GlobalConst.ATTR_ATK).."")
- showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
elseif curAttr[index].type == GConst.MATCH_HP_FIX_NAME[self.heroEntity:getMatchType()] then
-- 生命
table.insert(showAttrType, GConst.MATCH_HP_FIX_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_4")
txTitle:setText(""..I18N:getGlobalText(I18N.GlobalConst.ATTR_HP).."")
- showValue = curAttr[index].num // DEFAULT_FACTOR
elseif curAttr[index].type == GConst.MATCH_HP_ADD_NAME[self.heroEntity:getMatchType()] then
-- 生命加成百分比
table.insert(showAttrType, GConst.MATCH_HP_ADD_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_4")
txTitle:setText(""..I18N:getGlobalText(I18N.GlobalConst.ATTR_HP).."")
- showValue = (curAttr[index].num // PERCENT_FACTOR) .. "%"
elseif curAttr[index].type == GConst.MATCH_NORMAL_HURT_NAME[self.heroEntity:getMatchType()] then
-- 普攻增伤
table.insert(showAttrType, GConst.MATCH_NORMAL_HURT_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_20")
txTitle:setText(""..I18N:getGlobalText(I18N.GlobalConst.ATTR_NORMAL_HURT).."")
- showValue = curAttr[index].num // DEFAULT_FACTOR
elseif curAttr[index].type == GConst.MATCH_SKILL_HURT_NAME[self.heroEntity:getMatchType()] then
-- 技能增伤
table.insert(showAttrType, GConst.MATCH_SKILL_HURT_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_21")
txTitle:setText(""..I18N:getGlobalText(I18N.GlobalConst.ATTR_SKILL_HURT).."")
- showValue = curAttr[index].num // DEFAULT_FACTOR
elseif curAttr[index].type == GConst.MATCH_NORMAL_HURTP_NAME[self.heroEntity:getMatchType()] then
-- 普攻增伤百分比
table.insert(showAttrType, GConst.MATCH_NORMAL_HURTP_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_20")
txTitle:setText(""..I18N:getGlobalText(I18N.GlobalConst.ATTR_NORMAL_HURTP).."")
- showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
elseif curAttr[index].type == GConst.MATCH_SKILL_HURTP_NAME[self.heroEntity:getMatchType()] then
-- 技能增伤百分比
table.insert(showAttrType, GConst.MATCH_SKILL_HURTP_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_21")
txTitle:setText(""..I18N:getGlobalText(I18N.GlobalConst.ATTR_SKILL_HURTP).."")
- showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
elseif curAttr[index].type == GConst.MATCH_CRIT_NAME[self.heroEntity:getMatchType()] then
-- 暴击率百分比
table.insert(showAttrType, GConst.MATCH_CRIT_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_22")
txTitle:setText(""..I18N:getGlobalText(I18N.GlobalConst.ATTR_CRIT).."")
- showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
elseif curAttr[index].type == GConst.MATCH_CRIT_TIME_NAME[self.heroEntity:getMatchType()] then
-- 暴击伤害百分比
table.insert(showAttrType, GConst.MATCH_CRIT_TIME_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_23")
txTitle:setText(""..I18N:getGlobalText(I18N.GlobalConst.ATTR_CRIT_TIME).."")
- showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
elseif curAttr[index].type == GConst.MATCH_CURED_NAME[self.heroEntity:getMatchType()] then
-- 治疗提升百分比
table.insert(showAttrType, GConst.MATCH_CURED_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_24")
txTitle:setText(""..I18N:getGlobalText(I18N.GlobalConst.ATTR_CURED).."")
- showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
else
obj:setVisible(false)
end
- txNum:setText(showValue)
+ txNum:setText(GFunc.getAttrShowValue(curAttr[index].type, curAttr[index].num))
else
obj:setVisible(false)
end
@@ -221,12 +225,14 @@ function SkinInfoComp:refreshSelectSkin(selectId)
if self.onlyLook then -- 仅查看
self.txDesc2:setVisible(false)
self.scrollrectComp.baseObject:setVisible(false)
- self.baseObject:setSizeDeltaY(SIZE_DELTA_Y_LOOK)
+ self.bg:setSizeDeltaY(SIZE_DELTA_Y_LOOK)
+ self.content:setSizeDeltaY(SIZE_DELTA_Y_LOOK)
else
self.txDesc2:setVisible(true)
self.scrollrectComp.baseObject:setVisible(true)
- self.baseObject:setSizeDeltaY(SIZE_DELTA_Y_SKIN)
+ self.bg:setSizeDeltaY(SIZE_DELTA_Y_SKIN)
+ self.content:setSizeDeltaY(SIZE_DELTA_Y_SKIN)
end
end
-return SkinInfoComp
\ No newline at end of file
+return HeroSkinUI
\ No newline at end of file
diff --git a/lua/app/ui/hero/hero_skin_ui.lua.meta b/lua/app/ui/hero/hero_skin_ui.lua.meta
new file mode 100644
index 00000000..3ae659a2
--- /dev/null
+++ b/lua/app/ui/hero/hero_skin_ui.lua.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 013e50285bf00304b9911ee482aa7b3d
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
diff --git a/lua/app/ui/hero/runes_info_comp.lua b/lua/app/ui/hero/runes_info_comp.lua
new file mode 100644
index 00000000..c83e2f6b
--- /dev/null
+++ b/lua/app/ui/hero/runes_info_comp.lua
@@ -0,0 +1,193 @@
+local RunesInfoComp = class("RunesInfoComp", LuaComponent)
+
+local LOCK_ICON = "common_lock"
+local UNLOCK_ICON = "common_lock_1"
+
+function RunesInfoComp:init()
+ local uiMap = self:getUIMap()
+ self.btnHelp = uiMap["runes_info.btn_help"]
+ self.imgProg = uiMap["runes_info.prog.img_prog"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER)
+ self.txLevel = uiMap["runes_info.level.tx_level"]
+ self.btnSuit = uiMap["runes_info.btn_suit"]
+ self.txSuit = uiMap["runes_info.btn_suit.tx_suit"]
+ self.itemMaterial = uiMap["runes_info.item_material"]
+ self.txNum = uiMap["runes_info.item_material.tx_num"]
+ self.btnUse = uiMap["runes_info.bottom.btn_use"]
+ self.txUse = uiMap["runes_info.bottom.btn_use.tx_use"]
+ self.imgCost = uiMap["runes_info.bottom.btn_use.cost.img_cost"]
+ self.txCost = uiMap["runes_info.bottom.btn_use.cost.tx_cost"]
+ self.btnAuto = uiMap["runes_info.bottom.btn_auto"]
+ self.spineAuto = uiMap["runes_info.bottom.btn_auto.spine_auto"]
+ self.txAuto = uiMap["runes_info.bottom.btn_auto.tx_auto"]
+ self.txEmpty = uiMap["runes_info.suits.tx_empty"]
+ self.mask = uiMap["runes_info.bottom.mask"]
+ self.suits = {}
+ for i = 1, 3 do
+ self.suits[i] = uiMap["runes_info.suits.item_suit_" .. i]
+ end
+ self.grids = {}
+ for i = 1, 6 do
+ self.grids[i] = uiMap["runes_info.list_attr.grid_" .. i]
+ end
+
+ self.mask:setActive(false)
+ self.spineAuto:playAnim("idle", true, true)
+ self.txSuit:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_2))
+ self.txUse:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_5))
+ self.txAuto:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_4))
+ self.txEmpty:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_23))
+
+ self.itemMaterial:addClickListener(function()
+ UIManager:showUI("app/ui/runes/runes_source_ui")
+ end)
+ self.btnHelp:addClickListener(function()
+ UIManager:showUI("app/ui/runes/runes_level_ui")
+ end)
+ self.btnSuit:addClickListener(function()
+ UIManager:showUI("app/ui/runes/runes_suit_ui", self.heroEntity)
+ end)
+ self.btnAuto:addClickListener(function()
+ if self.autoSid == nil then
+ local params ={
+ content = I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_21),
+ boxType = GConst.MESSAGE_BOX_TYPE.MB_OK_CANCEL,
+ showToday = GConst.MESSAGE_BOX_SHOW_TODAY.RUNES_AUTO,
+ okFunc = function()
+ self:startAutoQuenching()
+ end,
+ }
+ GFunc.showMessageBox(params)
+ else
+ self:endAutoQuenching()
+ end
+ end)
+ self.btnUse:addClickListener(function()
+ ModuleManager.RunesManager:reqQuenching(self.heroEntity:getCfgId(), 0)
+ end)
+ self:bind(DataManager.BagData.ItemData, "dirty", function()
+ self:refresh()
+ end)
+ self:bind(DataManager.RunesData, "isDirty", function()
+ self:refresh()
+ end)
+end
+
+function RunesInfoComp:setHeroData(heroEntity)
+ self.heroEntity = heroEntity
+ self.runesEntity = DataManager.RunesData:getRunes(self.heroEntity:getCfgId())
+end
+
+function RunesInfoComp:refresh()
+
+ local curExp = DataManager.RunesData:getLevelExp()
+ local maxExp = DataManager.RunesData:getNextLevelTotalExp()
+
+ self.txNum:setText(DataManager.RunesData:getMaterialCount())
+ self.txCost:setText(GFunc.getRewardNum(self.runesEntity:getMaterialCost()))
+ self.txLevel:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_1, DataManager.RunesData:getLevel()))
+ self.imgProg.value = curExp / maxExp
+ GFunc.centerImgAndTx(self.imgCost, self.txCost)
+
+ self:refreshSuit()
+ self:refreshRunes()
+end
+
+-- 刷新符文
+function RunesInfoComp:refreshRunes()
+ for index, obj in ipairs(self.grids) do
+ local map = obj:genAllChildren()
+ local imgQlt = map["img_qlt"]
+ local imgSuit = map["img_suit"]
+ local txAttr = map["tx_attr"]
+ local imgLock = map["img_lock"]
+ local lock = map["lock"]
+ local txLock = map["tx_lock"]
+ obj:getComponent(GConst.TYPEOF_UNITY_CLASS.ANIMATOR).enabled = false
+
+ if DataManager.RunesData:isUnlock(index) then
+ lock:setActive(false)
+ imgQlt:setSprite(GConst.ATLAS_PATH.HERO, GConst.RunesConst.QUALITY_ICON[index])
+ imgSuit:setSprite(GConst.ATLAS_PATH.HERO, "hero_rune_"..self.runesEntity:getGridSuit(index))
+ imgLock:setSprite(GConst.ATLAS_PATH.COMMON, self.runesEntity:isAttrLock(index) and LOCK_ICON or UNLOCK_ICON)
+ local attr = self.runesEntity:getGridAttr(index)
+ if attr then
+ txAttr:setText(GFunc.getAttrDesc(attr.type, attr.num))
+ end
+ imgLock:addClickListener(function()
+ ModuleManager.RunesManager:reqChangeLockGrid(self.heroEntity:getCfgId(), index, not self.runesEntity:isAttrLock(index))
+ end)
+ else
+ lock:setActive(true)
+ txLock:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_3, DataManager.RunesData:getUnlockLevel(index)))
+ end
+ end
+end
+
+-- 刷新套装
+function RunesInfoComp:refreshSuit()
+ local ids = self.runesEntity:getSuitIds()
+
+ local isEmpty = true
+ for index, obj in ipairs(self.suits) do
+ local map = obj:genAllChildren()
+ local img = map["img"]
+ local tx = map["tx"]
+
+ if ids[index] then
+ local level = self.runesEntity:getSuitLevel(ids[index].id)
+ if level > 0 then
+ isEmpty = false
+ obj:setActive(true)
+ img:setSprite(GConst.ATLAS_PATH.HERO, "hero_rune_"..ids[index].id)
+ tx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, level))
+ else
+ obj:setActive(false)
+ end
+ else
+ obj:setActive(false)
+ end
+ end
+
+ self.txEmpty:setActive(isEmpty)
+end
+
+-- 开始自动淬炼
+function RunesInfoComp:startAutoQuenching()
+ self.mask:setActive(true)
+ self:autoQuenching()
+ self.autoSid = self.baseObject:scheduleGlobal(function()
+ local cost = self.runesEntity:getMaterialCost()
+ if not GFunc.checkCost(GFunc.getRewardId(cost), GFunc.getRewardNum(cost), true) then
+ self:endAutoQuenching()
+ return
+ end
+ self:autoQuenching()
+ end, 1 / 3)
+ self.spineAuto:playAnim("attack", true, true)
+end
+
+-- 结束自动淬炼
+function RunesInfoComp:endAutoQuenching()
+ self.mask:setActive(false)
+ if self.autoSid then
+ self.baseObject:unscheduleGlobal(self.autoSid)
+ self.autoSid = nil
+ end
+
+ for index, obj in ipairs(self.grids) do
+ if DataManager.RunesData:isUnlock(index) then
+ local animator = obj:getComponent(GConst.TYPEOF_UNITY_CLASS.ANIMATOR)
+ animator.enabled = true
+ -- CS.UnityEngine.Animator.StringToHash("runes_shake") 结果是1132417824
+ animator:Play(1132417824, -1, 0)
+ end
+ end
+ self.spineAuto:playAnim("idle", true, true)
+end
+
+-- 请求一次自动淬炼
+function RunesInfoComp:autoQuenching()
+ ModuleManager.RunesManager:reqQuenching(self.heroEntity:getCfgId(), 0)
+end
+
+return RunesInfoComp
\ No newline at end of file
diff --git a/lua/app/ui/hero/runes_info_comp.lua.meta b/lua/app/ui/hero/runes_info_comp.lua.meta
new file mode 100644
index 00000000..86d85a4c
--- /dev/null
+++ b/lua/app/ui/hero/runes_info_comp.lua.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 4d6ae74e1ac107c4ca73bacaafebec15
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
diff --git a/lua/app/ui/runes.meta b/lua/app/ui/runes.meta
new file mode 100644
index 00000000..6921d9f4
--- /dev/null
+++ b/lua/app/ui/runes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 03aa5a5d9fc516842b410568fc7345d7
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/lua/app/ui/runes/runes_level_ui.lua b/lua/app/ui/runes/runes_level_ui.lua
new file mode 100644
index 00000000..a35d5953
--- /dev/null
+++ b/lua/app/ui/runes/runes_level_ui.lua
@@ -0,0 +1,78 @@
+local RunesLevelUI = class("RunesLevelUI", BaseUI)
+
+local ARROW_LIGHT = "common_arrow_2"
+local ARROW_GRAY = "common_arrow_3"
+
+function RunesLevelUI:isFullScreen()
+ return false
+end
+
+function RunesLevelUI:getPrefabPath()
+ return "assets/prefabs/ui/runes/runes_level_ui.prefab"
+end
+
+function RunesLevelUI:onPressBackspace()
+ self:closeUI()
+end
+
+function RunesLevelUI:ctor()
+ self.curLevel = DataManager.RunesData:getLevel()
+end
+
+function RunesLevelUI:onLoadRootComplete()
+ local uiMap = self.root:genAllChildren()
+ self.txTitle = uiMap["runes_level_ui.bg.title.tx_title"]
+ self.btnClose = uiMap["runes_level_ui.bg.close_btn"]
+ self.btnRight = uiMap["runes_level_ui.bg.select.btn_right"]
+ self.btnLeft = uiMap["runes_level_ui.bg.select.btn_left"]
+ self.txSelect = uiMap["runes_level_ui.bg.select.tx_select"]
+ self.txDesc = uiMap["runes_level_ui.bg.bottom.tx_desc"]
+
+ self.quality = {}
+ for i = 1, 8 do
+ self.quality[i] = uiMap["runes_level_ui.bg.list.qlt_cell_" .. i]
+ end
+
+ self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_7))
+ self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_8))
+
+ self.btnRight:addClickListener(function()
+ self.curLevel = self.curLevel + 1
+ self:onRefresh()
+ end)
+ self.btnLeft:addClickListener(function()
+ self.curLevel = self.curLevel - 1
+ self:onRefresh()
+ end)
+ self.btnClose:addClickListener(function()
+ self:closeUI()
+ end)
+end
+
+function RunesLevelUI:onRefresh()
+ self.txSelect:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, self.curLevel))
+ if self.curLevel >= DataManager.RunesData:getMaxLevel() then
+ self.btnRight:setTouchEnable(false)
+ self.btnRight:setSprite(GConst.ATLAS_PATH.COMMON, ARROW_GRAY)
+ else
+ self.btnRight:setTouchEnable(true)
+ self.btnRight:setSprite(GConst.ATLAS_PATH.COMMON, ARROW_LIGHT)
+ end
+ if self.curLevel <= 1 then
+ self.btnLeft:setTouchEnable(false)
+ self.btnLeft:setSprite(GConst.ATLAS_PATH.COMMON, ARROW_GRAY)
+ else
+ self.btnLeft:setTouchEnable(true)
+ self.btnLeft:setSprite(GConst.ATLAS_PATH.COMMON, ARROW_LIGHT)
+ end
+
+ for index, obj in ipairs(self.quality) do
+ local map = obj:genAllChildren()
+ local icon = map["img_qlt"]
+ local rate = map["tx_rate"]
+ icon:setSprite(GConst.ATLAS_PATH.HERO, GConst.RunesConst.QUALITY_ICON[index])
+ rate:setText(DataManager.RunesData:getQualityRate(self.curLevel, index) .. "%")
+ end
+end
+
+return RunesLevelUI
\ No newline at end of file
diff --git a/lua/app/ui/runes/runes_level_ui.lua.meta b/lua/app/ui/runes/runes_level_ui.lua.meta
new file mode 100644
index 00000000..f7436e22
--- /dev/null
+++ b/lua/app/ui/runes/runes_level_ui.lua.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 4e658a421ae93f9429873a072c30732f
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
diff --git a/lua/app/ui/runes/runes_source_ui.lua b/lua/app/ui/runes/runes_source_ui.lua
new file mode 100644
index 00000000..280024c7
--- /dev/null
+++ b/lua/app/ui/runes/runes_source_ui.lua
@@ -0,0 +1,140 @@
+local RunesSourceUI = class("RunesSourceUI", BaseUI)
+
+function RunesSourceUI:isFullScreen()
+ return false
+end
+
+function RunesSourceUI:getPrefabPath()
+ return "assets/prefabs/ui/runes/runes_source_ui.prefab"
+end
+
+function RunesSourceUI:onPressBackspace()
+ self:closeUI()
+end
+
+function RunesSourceUI:ctor()
+ self.curGiftIndex = 1
+end
+
+function RunesSourceUI:onLoadRootComplete()
+ local uiMap = self.root:genAllChildren()
+ self.btnClose = uiMap["runes_source_ui.btn_close"]
+ -- 来源界面
+ self.panelMain = uiMap["runes_source_ui.panel_main"]
+ self.txTitleMain = uiMap["runes_source_ui.panel_main.title.tx_title"]
+ self.txTips = uiMap["runes_source_ui.panel_main.img_banner.tx_tips"]
+ self.txGet = uiMap["runes_source_ui.panel_main.tx_get"]
+ self.txDesc = uiMap["runes_source_ui.panel_main.target.tx_desc"]
+ self.btnGo = uiMap["runes_source_ui.panel_main.target.btn_go"]
+ self.txGo = uiMap["runes_source_ui.panel_main.target.btn_go.tx_go"]
+ -- 礼包界面
+ self.panelGift = uiMap["runes_source_ui.panel_gift"]
+ self.btn1 = uiMap["runes_source_ui.panel_gift.btns.btn_1"]
+ self.txBtn1 = uiMap["runes_source_ui.panel_gift.btns.btn_1.tx_btn"]
+ self.select1 = uiMap["runes_source_ui.panel_gift.btns.btn_1.select"]
+ self.txSelect1 = uiMap["runes_source_ui.panel_gift.btns.btn_1.select.tx_select"]
+ self.btn2 = uiMap["runes_source_ui.panel_gift.btns.btn_2"]
+ self.txBtn2 = uiMap["runes_source_ui.panel_gift.btns.btn_2.tx_btn"]
+ self.select2 = uiMap["runes_source_ui.panel_gift.btns.btn_2.select"]
+ self.txSelect2 = uiMap["runes_source_ui.panel_gift.btns.btn_2.select.tx_select"]
+ self.btn3 = uiMap["runes_source_ui.panel_gift.btns.btn_3"]
+ self.txBtn3 = uiMap["runes_source_ui.panel_gift.btns.btn_3.tx_btn"]
+ self.select3 = uiMap["runes_source_ui.panel_gift.btns.btn_3.select"]
+ self.txSelect3 = uiMap["runes_source_ui.panel_gift.btns.btn_3.select.tx_select"]
+ self.txTitleGift = uiMap["runes_source_ui.panel_gift.tx_title"]
+ self.txTime = uiMap["runes_source_ui.panel_gift.time.tx_time"]
+ self.btnBuy = uiMap["runes_source_ui.panel_gift.btn_buy"]
+ self.txBuy = uiMap["runes_source_ui.panel_gift.btn_buy.tx_buy"]
+ self.giftRewardCells = {}
+ for i = 1, 4 do
+ self.giftRewardCells[i] = uiMap["runes_source_ui.panel_gift.item_node.pop_reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.POP_REWARD_CELL)
+ end
+
+ self.txTitleGift:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_17))
+ self.txTitleMain:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_18))
+ self.txTips:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_19))
+ self.txGet:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_23))
+ self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_20))
+ self.txGo:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_21))
+
+ local gift1 = DataManager.ShopData:getActGiftConfig()[GConst.RunesConst.GIFT_IDS[1]]
+ self.txBtn1:setText(GFunc.getFormatPrice(gift1.recharge_id))
+ self.txSelect1:setText(GFunc.getFormatPrice(gift1.recharge_id))
+ local gift2 = DataManager.ShopData:getActGiftConfig()[GConst.RunesConst.GIFT_IDS[2]]
+ self.txBtn2:setText(GFunc.getFormatPrice(gift2.recharge_id))
+ self.txSelect2:setText(GFunc.getFormatPrice(gift2.recharge_id))
+ local gift3 = DataManager.ShopData:getActGiftConfig()[GConst.RunesConst.GIFT_IDS[3]]
+ self.txBtn3:setText(GFunc.getFormatPrice(gift3.recharge_id))
+ self.txSelect3:setText(GFunc.getFormatPrice(gift3.recharge_id))
+
+ self.btn1:addClickListener(function()
+ if self.curGiftIndex == 1 then
+ return
+ end
+ self.curGiftIndex = 1
+ self:onRefresh()
+ end)
+ self.btn2:addClickListener(function()
+ if self.curGiftIndex == 2 then
+ return
+ end
+ self.curGiftIndex = 2
+ self:onRefresh()
+ end)
+ self.btn3:addClickListener(function()
+ if self.curGiftIndex == 3 then
+ return
+ end
+ self.curGiftIndex = 3
+ self:onRefresh()
+ end)
+ self.btnGo:addClickListener(function()
+ ModuleManager.DungeonRuneManager:showMainUI()
+ end)
+ self.btnBuy:addClickListener(function()
+ PayManager:purchasePackage(GConst.RunesConst.GIFT_IDS[self.curGiftIndex], PayManager.PURCHARSE_TYPE.ACT_GIFT)
+ end)
+ self.btnClose:addClickListener(function()
+ self:closeUI()
+ end)
+ self:bind(DataManager.ShopData, "isDirty", function()
+ self:onRefresh()
+ end)
+end
+
+function RunesSourceUI:onRefresh()
+ self.select1:setActive(self.curGiftIndex == 1)
+ self.select2:setActive(self.curGiftIndex == 2)
+ self.select3:setActive(self.curGiftIndex == 3)
+
+ local giftId = GConst.RunesConst.GIFT_IDS[self.curGiftIndex]
+ local gift = DataManager.ShopData:getActGiftConfig()[giftId]
+
+ if gift == nil then
+ self.panelGift:setActive(false)
+ return
+ end
+ local remain = DataManager.ShopData:getGiftRemainBuyNum(giftId)
+ self.panelGift:setActive(true)
+ self.txTime:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_18, remain))
+ if remain > 0 then
+ self.btnBuy:setTouchEnable(true)
+ self.btnBuy:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_1")
+ self.txBuy:setText(GFunc.getFormatPrice(gift.recharge_id))
+ else
+ self.btnBuy:setTouchEnable(false)
+ self.btnBuy:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_1")
+ self.txBuy:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_20))
+ end
+
+ for index, cell in ipairs(self.giftRewardCells) do
+ if gift.reward[index] then
+ cell:setVisible(true, 0.8)
+ cell:refresh(gift.reward[index].id, gift.reward[index].num, true)
+ else
+ cell:setVisible(false)
+ end
+ end
+end
+
+return RunesSourceUI
\ No newline at end of file
diff --git a/lua/app/ui/runes/runes_source_ui.lua.meta b/lua/app/ui/runes/runes_source_ui.lua.meta
new file mode 100644
index 00000000..01bfa35e
--- /dev/null
+++ b/lua/app/ui/runes/runes_source_ui.lua.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: e0f16c6f0334eb04db5746a1576d0387
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
diff --git a/lua/app/ui/runes/runes_suit_ui.lua b/lua/app/ui/runes/runes_suit_ui.lua
new file mode 100644
index 00000000..0880155d
--- /dev/null
+++ b/lua/app/ui/runes/runes_suit_ui.lua
@@ -0,0 +1,69 @@
+local RunesSuitUI = class("RunesSuitUI", BaseUI)
+
+function RunesSuitUI:isFullScreen()
+ return false
+end
+
+function RunesSuitUI:getPrefabPath()
+ return "assets/prefabs/ui/runes/runes_suit_ui.prefab"
+end
+
+function RunesSuitUI:onPressBackspace()
+ self:closeUI()
+end
+
+function RunesSuitUI:ctor(params)
+ self.heroEntity = params
+ self.runesEntity = DataManager.RunesData:getRunes(self.heroEntity:getCfgId())
+ self.curLevel = DataManager.RunesData:getLevel()
+end
+
+function RunesSuitUI:onLoadRootComplete()
+ local uiMap = self.root:genAllChildren()
+ self.txTitle = uiMap["runes_suit_ui.bg.title.tx_title"]
+ self.btnClose = uiMap["runes_suit_ui.bg.close_btn"]
+ self.suits = {}
+ for i = 1, 5 do
+ self.suits[i] = uiMap["runes_suit_ui.bg.list.suit_cell_" .. i]
+ end
+
+ self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_9))
+
+ self.btnClose:addClickListener(function()
+ self:closeUI()
+ end)
+end
+
+function RunesSuitUI:onRefresh()
+ for index, obj in ipairs(self.suits) do
+ local map = obj:genAllChildren()
+ local imgIcon = map["img_type"]
+ local txName = map["tx_suit_name"]
+ local txAttr1 = map["tx_suit_attr1"]
+ local txAttr2 = map["tx_suit_attr2"]
+ local txLevel = map["tx_level"]
+ imgIcon:setSprite(GConst.ATLAS_PATH.HERO, "hero_rune_"..index)
+ txName:setText(DataManager.RunesData:getSuitName(index))
+ local attr1 = DataManager.RunesData:getSuitAttr(index, self.heroEntity:getMatchType(), 1)
+ local attr2 = DataManager.RunesData:getSuitAttr(index, self.heroEntity:getMatchType(), 2)
+ local level = self.runesEntity:getSuitLevel(index)
+ txLevel:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, level))
+
+ local str1 = I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_15, GFunc.getAttrDesc(attr1.type, attr1.num))
+ local str2 = I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_16, GFunc.getAttrDesc(attr2.type, attr2.num))
+ if level == 0 then
+ str1 = "" .. str1 .. ""
+ str2 = "" .. str2 .. ""
+ elseif level == 1 then
+ str1 = "" .. str1 .. ""
+ str2 = "" .. str2 .. ""
+ elseif level == 2 then
+ str1 = "" .. str1 .. ""
+ str2 = "" .. str2 .. ""
+ end
+ txAttr1:setText(str1)
+ txAttr2:setText(str2)
+ end
+end
+
+return RunesSuitUI
\ No newline at end of file
diff --git a/lua/app/ui/runes/runes_suit_ui.lua.meta b/lua/app/ui/runes/runes_suit_ui.lua.meta
new file mode 100644
index 00000000..a1987144
--- /dev/null
+++ b/lua/app/ui/runes/runes_suit_ui.lua.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 7eaccbe09a9a77b4c8def1595e994b66
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
diff --git a/lua/app/userdata/hero/hero_entity.lua b/lua/app/userdata/hero/hero_entity.lua
index 6db52cbe..caba2d9f 100644
--- a/lua/app/userdata/hero/hero_entity.lua
+++ b/lua/app/userdata/hero/hero_entity.lua
@@ -12,6 +12,7 @@ function HeroEntity:ctor(cfgId, lv, skin)
self.baseAttrOriginal = {}
self.equipAttr = {}
self.skinAttr = {}
+ self.runesAttr = {}
self.allAttr = {}
end
@@ -54,6 +55,12 @@ function HeroEntity:onSkinAttrChange()
self:setDirty()
end
+function HeroEntity:onRunesAttrChange()
+ self:updateRunesAttr()
+ self:updateTotalAttr()
+ self:setDirty()
+end
+
function HeroEntity:setDirty()
self.data.isDirty = not self.data.isDirty
end
@@ -67,6 +74,7 @@ function HeroEntity:updateAllAttr()
self:updateBaseAttr()
self:updateEquipAttr()
self:updateSkinAttr()
+ self:updateRunesAttr()
self:updateTotalAttr()
end
@@ -193,6 +201,46 @@ function HeroEntity:updateSkinAttr()
end
end
+-- 更新符文属性
+function HeroEntity:updateRunesAttr()
+ self.runesAttr = {}
+
+ local hp = self:getRunes():getAttrValue(GConst.MATCH_HP_FIX_NAME[self:getMatchType()])
+ local atk = self:getRunes():getAttrValue(GConst.MATCH_ATTACK_NAME[self:getMatchType()])
+ local normalHurt = self:getRunes():getAttrValue(GConst.MATCH_NORMAL_HURT_NAME[self:getMatchType()])
+ local skillHurt = self:getRunes():getAttrValue(GConst.MATCH_SKILL_HURT_NAME[self:getMatchType()])
+ local critPer = self:getRunes():getAttrValue(GConst.MATCH_CRIT_NAME[self:getMatchType()])
+ local critHurtPer = self:getRunes():getAttrValue(GConst.MATCH_CRIT_TIME_NAME[self:getMatchType()])
+ local normalHurtPer = self:getRunes():getAttrValue(GConst.MATCH_NORMAL_HURTP_NAME[self:getMatchType()])
+ local skillHurtPer = self:getRunes():getAttrValue(GConst.MATCH_SKILL_HURTP_NAME[self:getMatchType()])
+ local healPer = self:getRunes():getAttrValue(GConst.MATCH_CURED_NAME[self:getMatchType()])
+
+ self.runesAttr[GConst.MATCH_HP_NAME[self:getMatchType()]] = hp
+ self.runesAttr[GConst.MATCH_ATTACK_NAME[self:getMatchType()]] = atk
+ self.runesAttr[GConst.MATCH_NORMAL_HURT_NAME[self:getMatchType()]] = normalHurt
+ self.runesAttr[GConst.MATCH_SKILL_HURT_NAME[self:getMatchType()]] = skillHurt
+ self.runesAttr[GConst.MATCH_CRIT_NAME[self:getMatchType()]] = critPer
+ self.runesAttr[GConst.MATCH_CRIT_TIME_NAME[self:getMatchType()]] = critHurtPer
+ self.runesAttr[GConst.MATCH_NORMAL_HURTP_NAME[self:getMatchType()]] = normalHurtPer
+ self.runesAttr[GConst.MATCH_SKILL_HURTP_NAME[self:getMatchType()]] = skillHurtPer
+ self.runesAttr[GConst.MATCH_CURED_NAME[self:getMatchType()]] = healPer
+
+ if EDITOR_MODE then
+ local printStr = ""
+ printStr = printStr .. "更新符文数值:"..self:getCfgId() .. "\n"
+ printStr = printStr .. "生命:".. hp .. "\n"
+ printStr = printStr .. "攻击力:".. atk .. "\n"
+ printStr = printStr .. "普攻增伤:".. normalHurt .. "\n"
+ printStr = printStr .. "技能增伤:".. skillHurt .. "\n"
+ printStr = printStr .. "暴击率:".. critPer .. "\n"
+ printStr = printStr .. "暴击伤害百分比:".. critHurtPer .. "\n"
+ printStr = printStr .. "普攻增伤百分比:".. normalHurtPer .. "\n"
+ printStr = printStr .. "技能增伤百分比:".. skillHurtPer .. "\n"
+ printStr = printStr .. "治疗加成百分比:".. healPer .. "\n"
+ Logger.logHighlight(printStr)
+ end
+end
+
-- 更新总属性
function HeroEntity:updateTotalAttr()
self.allAttr = {}
@@ -205,6 +253,9 @@ function HeroEntity:updateTotalAttr()
for k, v in pairs(self.skinAttr) do
self:addTotalAttrValue(k, v)
end
+ for k, v in pairs(self.runesAttr) do
+ self:addTotalAttrValue(k, v)
+ end
end
function HeroEntity:setTotalAttrValue(name, value)
@@ -500,6 +551,7 @@ function HeroEntity:getTotalBaseHp()
end
end
result = result + DataManager.SkinData:getBaseHp(self)
+ result = result + self:getRunes():getAttrValue(GConst.MATCH_HP_FIX_NAME, true)
return result
end
@@ -517,6 +569,7 @@ function HeroEntity:getTotalBaseAtk()
end
-- Logger.logHighlight(logStr)
result = result + DataManager.SkinData:getBaseAttack(self)
+ result = result + self:getRunes():getAttrValue(GConst.MATCH_ATTACK_NAME, true)
return result
end
@@ -545,4 +598,18 @@ function HeroEntity:getSkins()
return self.unlockSkins
end
+function HeroEntity:setRunes(runesEntity)
+ self.runesEntity = runesEntity
+ self:getTotalAttrValue() -- 防止报错
+ self:onRunesAttrChange()
+end
+
+function HeroEntity:getRunes()
+ if self.runesEntity then
+ return self.runesEntity
+ end
+
+ return DataManager.RunesData:getRunes(self:getCfgId())
+end
+
return HeroEntity
\ No newline at end of file
diff --git a/lua/app/userdata/runes.meta b/lua/app/userdata/runes.meta
new file mode 100644
index 00000000..296421aa
--- /dev/null
+++ b/lua/app/userdata/runes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 623c3622200ddb346836080a5e43badb
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/lua/app/userdata/runes/runes_data.lua b/lua/app/userdata/runes/runes_data.lua
new file mode 100644
index 00000000..b0d0bd0c
--- /dev/null
+++ b/lua/app/userdata/runes/runes_data.lua
@@ -0,0 +1,218 @@
+local RunesData = class("RunesData", BaseData)
+local RunesEntity = require "app/userdata/runes/runes_entity"
+
+function RunesData:ctor()
+ self.data.isDirty = false
+end
+
+function RunesData:clear()
+ DataManager:unregisterTryOpenFunc("RunesData")
+end
+
+function RunesData:init(data)
+ data = data or GConst.EMPTY_TABLE
+ if EDITOR_MODE then
+ Logger.logHighlight("符文初始化数据")
+ Logger.printTable(data)
+ end
+
+ self.level = data.level or 1
+ self.exp = data.exp or 0
+ if data.heroes_grids then
+ for heroId, grids in pairs(data.heroes_grids) do
+ self:addEquip(heroId, grids.grids)
+ end
+ end
+
+ -- 活动开启
+ DataManager:registerTryOpenFunc("RunesData", function()
+ if self:isOpen() then
+ DataManager:unregisterTryOpenFunc("RunesData")
+ self:setDirty()
+ end
+ end)
+ self:setDirty()
+end
+
+function RunesData:setDirty()
+ self.data.isDirty = not self.data.isDirty
+end
+
+function RunesData:isOpen(showToast)
+ if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.RUNES_OPEN, not showToast) then
+ return false
+ end
+ return true
+end
+
+function RunesData:addEquip(heroId, grids)
+ if self.runes == nil then
+ self.runes = {}
+ end
+
+ if self.runes[heroId] == nil then
+ self.runes[heroId] = self:createEntity(heroId, grids)
+ else
+ self.runes[heroId]:updateGrids(grids)
+ end
+end
+
+function RunesData:createEntity(heroId, grids)
+ return RunesEntity:create(heroId, grids)
+end
+
+function RunesData:getRunes(heroId)
+ if self.runes == nil then
+ self.runes = {}
+ end
+ if self.runes[heroId] == nil then
+ self.runes[heroId] = self:createEntity(heroId)
+ end
+
+ return self.runes[heroId]
+end
+
+-- 获取当前等级配置
+function RunesData:getLevelConfig()
+ return ConfigManager:getConfig("runes_level")
+end
+
+-- 获取铸台最大等级
+function RunesData:getMaxLevel()
+ return #self:getLevelConfig()
+end
+
+-- 获取符文铸台等级
+function RunesData:getLevel()
+ return self.level
+end
+
+-- 获取等级当前经验
+function RunesData:getLevelExp()
+ return self.exp
+end
+
+-- 获取到下一档的总经验
+function RunesData:getNextLevelTotalExp()
+ local cfg = self:getLevelConfig()[self:getLevel() + 1]
+ if cfg then
+ return cfg.cost or 0
+ end
+
+ return 0
+end
+
+-- 获取相应铸台等级的品质概率
+function RunesData:getQualityRate(level, quality)
+ local cfg = self:getLevelConfig()[level]
+
+ local total = 0
+ for i = 1, GConst.RunesConst.MAX_QUALITY_COUNT do
+ total = total + (cfg["weight_"..i] or 0)
+ end
+
+ local value = cfg["weight_"..quality]
+ if value then
+ return string.format("%.2f",(value / total) * 100)
+ else
+ return 0
+ end
+end
+
+-- 获取相应套装的相应属性
+function RunesData:getSuitAttr(id, heroType, suitLevel)
+ local data = ConfigManager:getConfig("runes_suit")[id]
+ local attrs
+ if heroType == GConst.HeroConst.MATCH_TYPE.RED then
+ attrs = data.red_suit_attr
+ elseif heroType == GConst.HeroConst.MATCH_TYPE.YELLOW then
+ attrs = data.yellow_suit_attr
+ elseif heroType == GConst.HeroConst.MATCH_TYPE.GREEN then
+ attrs = data.green_suit_attr
+ elseif heroType == GConst.HeroConst.MATCH_TYPE.BLUE then
+ attrs = data.blue_suit_attr
+ elseif heroType == GConst.HeroConst.MATCH_TYPE.PURPLE then
+ attrs = data.purple_suit_attr
+ end
+
+ if attrs ~= nil and attrs[suitLevel] then
+ return attrs[suitLevel]
+ end
+
+ return nil
+end
+
+-- 获取锻造材料个数
+function RunesData:getMaterialCount()
+ return DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_RUNES)
+end
+
+-- 是否可以一键铸造
+function RunesData:canAutoMake()
+ local cfg = self:getLevelConfig()[self:getLevel()]
+ return cfg.auto and cfg.auto == 1
+end
+
+-- 符文栏是否解锁
+function RunesData:isUnlock(index)
+ local level = self:getLevel()
+ return index <= self:getLevelConfig()[level].grid
+end
+
+-- 获取符文栏解锁个数
+function RunesData:getUnlockCount()
+ local unlock = 0
+ for i = 1, GConst.RunesConst.MAX_ATTR_GRID_COUNT do
+ if self:isUnlock(i) then
+ unlock = unlock + 1
+ end
+ end
+
+ return unlock
+end
+
+-- 获取符文栏解锁等级要求
+function RunesData:getUnlockLevel(index)
+ for level, data in ipairs(self:getLevelConfig()) do
+ if data.grid >= index then
+ return level
+ end
+ end
+
+ return 0
+end
+
+-- 获取套装名
+function RunesData:getSuitName(index)
+ if index == 1 then
+ return I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_10)
+ elseif index == 2 then
+ return I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_11)
+ elseif index == 3 then
+ return I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_12)
+ elseif index == 4 then
+ return I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_13)
+ elseif index == 5 then
+ return I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_14)
+ end
+
+ return nil
+end
+
+-- 改变属性栏锁定状态成功
+function RunesData:onGridLockSuccess(heroId, grids)
+ self.runes[heroId]:updateGrids(grids)
+
+ self:setDirty()
+end
+
+-- 淬炼成功
+function RunesData:onQuenchingSuccess(level, exp, heroId, grids)
+ self.level = level
+ self.exp = exp
+ self.runes[heroId]:updateGrids(grids)
+
+ self:setDirty()
+end
+
+return RunesData
\ No newline at end of file
diff --git a/lua/app/userdata/runes/runes_data.lua.meta b/lua/app/userdata/runes/runes_data.lua.meta
new file mode 100644
index 00000000..9b1dc6c1
--- /dev/null
+++ b/lua/app/userdata/runes/runes_data.lua.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: a9a5f762edecf854ab9eecd7ace92c0e
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
diff --git a/lua/app/userdata/runes/runes_entity.lua b/lua/app/userdata/runes/runes_entity.lua
new file mode 100644
index 00000000..9f32f1eb
--- /dev/null
+++ b/lua/app/userdata/runes/runes_entity.lua
@@ -0,0 +1,206 @@
+local RunesEntity = class("RunesEntity", BaseData)
+local DEFAULT_FACTOR = GConst.BattleConst.DEFAULT_FACTOR
+
+function RunesEntity:ctor(heroId, grids)
+ self.heroId = heroId
+ self.grids = grids or GConst.EMPTY_TABLE
+end
+
+function RunesEntity:setDirty()
+ self.data.isDirty = not self.data.isDirty
+end
+
+function RunesEntity:updateGrids(grids)
+ self.grids = grids or GConst.EMPTY_TABLE
+ self:getHeroEntity():onRunesAttrChange()
+ self:setDirty()
+end
+
+function RunesEntity:getHeroEntity()
+ if self.heroEntity == nil then
+ self.heroEntity = DataManager.HeroData:getHeroById(self.heroId)
+ end
+
+ return self.heroEntity
+end
+
+-- 符文栏是否锁定属性
+function RunesEntity:isAttrLock(index)
+ if self.grids[index] then
+ return self.grids[index].lock
+ end
+
+ return false
+end
+
+-- 获取已锁定的符文栏个数
+function RunesEntity:getAttrLockCount()
+ local lock = 0
+ for i = 1, GConst.RunesConst.MAX_ATTR_GRID_COUNT do
+ if self:isAttrLock(i) then
+ lock = lock + 1
+ end
+ end
+
+ return lock
+end
+
+-- 获取锻造的材料消耗
+function RunesEntity:getMaterialCost()
+ local base = GFunc.getConstReward("runes_cost_base")
+ local add = GFunc.getConstReward("runes_cost_add")
+ local total = {id = base.id, num = base.num, type = base.type}
+
+ total.num = total.num + (add.num * self:getAttrLockCount())
+
+ return total
+end
+
+-- -- 获取随机符文属性
+-- function RunesEntity:getRandomAttr()
+-- local randomQlt = math.random(GConst.RunesConst.MAX_QUALITY_COUNT - 2)
+-- local randomAttr = math.random(GConst.RunesConst.MAX_ATTR_COUNT)
+
+-- local cfg = ConfigManager:getConfig("runes_sub")[randomQlt]
+-- return cfg["attr_"..randomAttr][self:getHeroEntity():getMatchType()]
+-- end
+
+-- -- 获取随机套装
+-- function RunesEntity:getRandomSuit()
+-- return math.random(GConst.RunesConst.MAX_SUITS_COUNT)
+-- end
+
+-- 获取格子的符文属性
+function RunesEntity:getGridAttr(index)
+ if self.grids[index] then
+ local cfg = ConfigManager:getConfig("runes_sub")[self.grids[index].quality]
+ local attr = cfg["attr_"..self.grids[index].attr]
+ if attr then
+ return attr[self:getHeroEntity():getMatchType()]
+ end
+ end
+
+ return nil
+end
+
+-- 获取格子的套装
+function RunesEntity:getGridSuit(index)
+ if self.grids[index] then
+ return self.grids[index].suit
+ end
+
+ Logger.logError("英雄".. self.heroId .. "未获取到格子的符文数据:"..tostring(index))
+ return 0
+end
+
+-- 获取套装等级,2件套是lv1,4件套是lv2,没有就是lv0
+function RunesEntity:getSuitLevel(index)
+ local count = self:getSuitCount(index)
+
+ if count and count >= 4 then
+ return 2
+ end
+ if count and count >= 2 then
+ return 1
+ end
+
+ return 0
+end
+
+-- 获取套装个数
+function RunesEntity:getSuitCount(id)
+ local data = table.find(self:getSuitIds(), function(value) return value.id == id end)
+ return data and data.count or 0
+end
+
+-- 获取已有的套装id map
+function RunesEntity:getSuitIds()
+ local typeCount = {}
+ for i = 1, GConst.RunesConst.MAX_SUITS_COUNT do
+ local t = self:getGridSuit(i)
+ if t then
+ local temp = table.find(typeCount, function(value) return value.id == t end)
+ if temp then
+ temp.count = temp.count + 1
+ else
+ table.insert(typeCount, {id = t, count = 1})
+ end
+ end
+ end
+ table.sort(typeCount, function(a, b)
+ return a.count > b.count
+ end)
+
+ return typeCount
+end
+
+-- 属性相关接口start------------------------------------------------------------------------------------
+
+-- 获取所有属性加成,未经过计算加成
+function RunesEntity:getAllAttr()
+ if not DataManager.RunesData:isOpen() then
+ return nil
+ end
+
+ local all = {}
+ local func = function(attr)
+ if attr == nil then
+ return nil
+ end
+
+ local temp = table.find(all, function(value)
+ return value.type == attr.type
+ end)
+
+ if temp then
+ temp.num = temp.num + attr.num
+ else
+ table.insert(all, {type = attr.type, num = attr.num})
+ end
+ end
+
+ -- 格子属性
+ for i = 1, GConst.RunesConst.MAX_ATTR_GRID_COUNT do
+ func(self:getGridAttr(i))
+ end
+ -- 套装属性
+ local pos = self:getHeroEntity():getMatchType()
+ for idx, data in pairs(self:getSuitIds()) do
+ func(DataManager.RunesData:getSuitAttr(data.id, pos, self:getSuitLevel(data.id)))
+ end
+
+ return all
+end
+
+-- 是否拥有某属性
+function RunesEntity:hasAttr(attrType)
+ return self:getAttrValue(attrType) > 0
+end
+
+-- 获取属性 , isBase是否是基础配置的属性
+function RunesEntity:getAttrValue(attrType, isBase)
+ local result
+ if not isBase and attrType == GConst.MATCH_HP_FIX_NAME[self:getHeroEntity():getMatchType()] then
+ result = self:getAttrValue(GConst.MATCH_HP_FIX_NAME[self:getHeroEntity():getMatchType()], true)
+ result = result + self:getHeroEntity():getTotalBaseHp() * self:getAttrValue(GConst.MATCH_HP_ADD_NAME[self:getHeroEntity():getMatchType()]) // DEFAULT_FACTOR
+ return result
+ elseif not isBase and attrType == GConst.MATCH_ATTACK_NAME[self:getHeroEntity():getMatchType()] then
+ result = self:getAttrValue(GConst.MATCH_ATTACK_NAME[self:getHeroEntity():getMatchType()], true)
+ result = result + self:getHeroEntity():getTotalBaseAtk() * self:getAttrValue(GConst.MATCH_ATTACK_ADD_NAME) // DEFAULT_FACTOR
+ return result
+ else
+ local all = self:getAllAttr()
+ if all == nil then
+ return 0
+ end
+ result = table.find(all, function(value)
+ return attrType == value.type
+ end)
+ end
+
+ return result and result.num or 0
+end
+
+-- 属性相关接口end------------------------------------------------------------------------------------
+
+return RunesEntity
\ No newline at end of file
diff --git a/lua/app/userdata/runes/runes_entity.lua.meta b/lua/app/userdata/runes/runes_entity.lua.meta
new file mode 100644
index 00000000..7d62dbd3
--- /dev/null
+++ b/lua/app/userdata/runes/runes_entity.lua.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 22f546c66a8d67842b8befee0e17a707
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
diff --git a/lua/app/userdata/shop/shop_data.lua b/lua/app/userdata/shop/shop_data.lua
index 5640b1a2..56f27705 100644
--- a/lua/app/userdata/shop/shop_data.lua
+++ b/lua/app/userdata/shop/shop_data.lua
@@ -19,6 +19,7 @@ end
function ShopData:initCrossDay()
DataManager:registerCrossDayFunc("ShopData", function()
+ self:resetRunesGift()
self:resetMallDaily()
self:resetCommonDailyGemAdCount()
self:resetCommonDailyCoinAdCount()
@@ -95,6 +96,14 @@ function ShopData:getGiftBoughtNum(actType, actId)
return 0
end
+-- 重置一个礼包购买次数
+function ShopData:resetGiftBoughtNum(actType, actId)
+ local data = self:getActGiftDetailData(actType, actId)
+ if data then
+ data.buy_count = 0
+ end
+end
+
-- 获取通用礼包剩余可购买次数
function ShopData:getGiftRemainBuyNum(actId)
local bought = self:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, actId)
@@ -1030,4 +1039,11 @@ function ShopData:markPopLastChapterActGift()
end
end
+-- 重置符文每日礼包次数
+function ShopData:resetRunesGift()
+ for index, id in ipairs(GConst.RunesConst.GIFT_IDS) do
+ self:resetGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, id)
+ end
+end
+
return ShopData
\ No newline at end of file