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