diff --git a/lua/app/common/bi_report.lua b/lua/app/common/bi_report.lua index 5178793f..472968df 100644 --- a/lua/app/common/bi_report.lua +++ b/lua/app/common/bi_report.lua @@ -150,6 +150,9 @@ BIReport.ITEM_GET_TYPE = { ACT_FOURTEEN_DAY_TASK = "ActFourteenDayTask", ACT_FOURTEEN_DAY_EXCHANGE = "ActFourteenDayExchange", FOURTEEN_DAY_GIFT = "FourteenDayGift", + FULL_MOON_HERO_GIFT = "FullMoonHeroGift", + FULL_MOON_NEW_HERO_GIFT = "FullMoonNewHeroGift", + FULL_MOON_SKIN_GIFT = "FullMoonSkinGift", DUNGEON_RUNE_START = "DungeonRuneStart", DUNGEON_RUNE_SETTLEMENT = "DungeonRuneSettlement", DUNGEON_RUNE_SWEEP = "DungeonRuneSweep", @@ -163,6 +166,11 @@ BIReport.ITEM_GET_TYPE = { ACT_PVP_BOUNTY_GIFT = "ActPvpBountyGift", ACT_PVP_RANK_REWARD = "ActPvpRankReward", ACT_PVP_BUY_BOUNTY_LEVEL = "ActPvpBuyBountyLevel", + RUNES_QUENCHING = "RuneQuenching", + RUNES_GIFT = "RuneGift", + FULL_MOON_TASK = "FullMoonTask", + FULL_MOON_TASK_PROG_REWARD = "FullMoonTaskProgReward", + FULL_MOON_SKIN_CHALLENGE_REWARD = "FullMoonSkinChallengeReward", } BIReport.ADS_CLICK_TYPE = { @@ -216,7 +224,8 @@ BIReport.BATTLE_TYPE = { ["7"] = "DungeonArmor", ["8"] = "ActBossRush", ["9"] = "DungeonRune", - ["10"] = "ActPvp", + ["10"] = "FullMoonSkin", + ["11"] = "ActPvp", } BIReport.GIFT_TYPE = { @@ -240,6 +249,10 @@ BIReport.GIFT_TYPE = { ACT_HERO_FUND = "ActHeroFund", FOURTEEN_DAY_GIFT = "FourteenDayGift", ACT_PVP_BOUNTY_GIFT = "ActPvpBountyGift", + FULL_MOON_HERO_GIFT = "FullMoonHeroGift", + FULL_MOON_NEW_HERO_GIFT = "FullMoonNewHeroGift", + FULL_MOON_SKIN_GIFT = "FullMoonSkinGift", + RUNES_GIFT = "RunesGift", } BIReport.COIN_TYPE = { @@ -282,6 +295,7 @@ BIReport.DIALY_CHALLENGE_OPT_TYPE = { BIReport.MISCELLANEOUS_OPT_TYPE = { EVALUATE_OPEN = "EvaluateOpen", EVALUATE_CLOSE = "EvaluateClose", + BATTLE_SNAP_SHOP_OPEN = "BattleSnapShopOpen", } BIReport.ARENA_OPT_TYPE = { @@ -1673,6 +1687,13 @@ function BIReport:postRateOpen() self:report(EVENT_NAME_MISCELLANEOUS_OPT, args) end +function BIReport:postBatttleSnapshotOpen() + local args = { + event_type = BIReport.MISCELLANEOUS_OPT_TYPE.BATTLE_SNAP_SHOP_OPEN, + } + self:report(EVENT_NAME_MISCELLANEOUS_OPT, args) +end + function BIReport:postPbAuthfailed(pbName, lastLoginInfo, authFailToLogin) local args = { event_type = BIReport.NETWORK_OPT_TYPE.AUTH_FAILED, diff --git a/lua/app/common/data_manager.lua b/lua/app/common/data_manager.lua index 7060b337..12444d13 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") @@ -32,6 +33,7 @@ function DataManager:init() self:initManager("SevenDayData", "app/userdata/activity/seven_day/seven_day_data") self:initManager("ShopData", "app/userdata/shop/shop_data") self:initManager("SummonData", "app/userdata/summon/summon_data") + self:initManager("FullMoonData", "app/userdata/activity/full_moon/full_moon_data") self:initManager("AIHelperData", "app/userdata/game_setting/ai_helper_data") self:initManager("HeroFundData", "app/userdata/activity/hero_fund/hero_fund_data") self:initManager("ActBossRushData", "app/userdata/activity/act_boss_rush/act_boss_rush_data") @@ -107,6 +109,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() @@ -119,6 +122,7 @@ function DataManager:clear() self.SevenDayData:clear() self.ShopData:clear() self.SummonData:clear() + self.FullMoonData:clear() -- 任务数据最后清理 self.TaskData:clear() self.AIHelperData:clear() @@ -153,7 +157,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) @@ -507,6 +512,10 @@ DataManager.activityOpenFunc = { DataManager.ActPvpData:setActivityInfo(params) ModuleManager.ActPvpManager:reqActData() end, + [4] = function(params) + DataManager.FullMoonData:setActStatus(params) + ModuleManager.FullMoonManager:reqActData() + end, } DataManager.waitOpenActivity = { @@ -519,6 +528,10 @@ DataManager.waitOpenActivity = { DataManager.ActPvpData:setActivityId(params.id) DataManager.ActPvpData:setActivityInfo(params) end, + [4] = function(params) + DataManager.FullMoonData:setActStatus(params) + ModuleManager.FullMoonManager:initTimer() + end, } return DataManager \ No newline at end of file diff --git a/lua/app/common/event_manager.lua b/lua/app/common/event_manager.lua index 021a86b1..e8453096 100644 --- a/lua/app/common/event_manager.lua +++ b/lua/app/common/event_manager.lua @@ -60,6 +60,7 @@ EventManager.CUSTOM_EVENT = { -- BORAD_TOUCH_OVER = "BORAD_TOUCH_OVER" DUNGEON_ARMOR_TO_TARGET_ID = "DUNGEON_ARMOR_TO_TARGET_ID", ACTIVITY_SUMMER_END = "ACTIVITY_SUMMER_END", + ACTIVITY_FULL_MOON_END = "ACTIVITY_FULL_MOON_END", MAIN_UI_CHECK_SIDE_BAR = "MAIN_UI_CHECK_SIDE_BAR", FORMATION_CHANGE = "FORMATION_CHANGE", BATTLE_REBIRTH = "BATTLE_REBIRTH", diff --git a/lua/app/common/module_manager.lua b/lua/app/common/module_manager.lua index 5bea008b..505fa1f3 100644 --- a/lua/app/common/module_manager.lua +++ b/lua/app/common/module_manager.lua @@ -69,12 +69,16 @@ 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", -- 世界首领活动 ActBossRushManager = "app/module/activity/act_boss_rush/act_boss_rush_manager", -- 新手14天乐 FourteenDayManager = "app/module/activity/fourteen_day/fourteen_day_manager", + -- 圆月活动 + FullMoonManager = "app/module/activity/full_moon/full_moon_manager", -- 符文副本 DungeonRuneManager = "app/module/dungeon_rune/dungeon_rune_manager", -- 梦魇酒馆 diff --git a/lua/app/common/pay_manager.lua b/lua/app/common/pay_manager.lua index 11dcaf48..674e7119 100644 --- a/lua/app/common/pay_manager.lua +++ b/lua/app/common/pay_manager.lua @@ -28,6 +28,10 @@ PayManager.PURCHARSE_ACT_TYPE = { ARMOR_UPGRADE_GIFT = 16, FOURTEEN_DAY_GIFT = 17, ACT_PVP_BOUNTY = 22, + FULL_MOON_HERO_GIFT = 18, + FULL_MOON_NEW_HERO_GIFT = 19, + FULL_MOON_SKIN_GIFT = 20, + RUNES_GIFT = 21, } PayManager.PURCHARSE_TYPE_CONFIG = { @@ -58,6 +62,10 @@ PayManager.BI_ITEM_GET_TYPE = { [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.ACT_PVP_BOUNTY] = BIReport.ITEM_GET_TYPE.ACT_PVP_BOUNTY_GIFT, + [PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_HERO_GIFT] = BIReport.ITEM_GET_TYPE.FULL_MOON_HERO_GIFT, + [PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_NEW_HERO_GIFT] = BIReport.ITEM_GET_TYPE.FULL_MOON_NEW_HERO_GIFT, + [PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_SKIN_GIFT] = BIReport.ITEM_GET_TYPE.FULL_MOON_SKIN_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, @@ -80,11 +88,15 @@ PayManager.BI_GIFT_TYPE = { [PayManager.PURCHARSE_ACT_TYPE.WEAPON_GIFT] = BIReport.GIFT_TYPE.WEAPON_GIFT, [PayManager.PURCHARSE_ACT_TYPE.ARMOR_GIFT] = BIReport.GIFT_TYPE.ARMOR_GIFT, [PayManager.PURCHARSE_ACT_TYPE.ACT_SUMMER] = BIReport.GIFT_TYPE.ACT_SUMMER, - [PayManager.PURCHARSE_ACT_TYPE.ACT_HERO_FUND] = BIReport.ITEM_GET_TYPE.ACT_HERO_FUND, + [PayManager.PURCHARSE_ACT_TYPE.ACT_HERO_FUND] = BIReport.GIFT_TYPE.ACT_HERO_FUND, [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.ACT_PVP_BOUNTY] = BIReport.GIFT_TYPE.ACT_PVP_BOUNTY_GIFT, + [PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_HERO_GIFT] = BIReport.GIFT_TYPE.FULL_MOON_HERO_GIFT, + [PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_NEW_HERO_GIFT] = BIReport.GIFT_TYPE.FULL_MOON_NEW_HERO_GIFT, + [PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_SKIN_GIFT] = BIReport.GIFT_TYPE.FULL_MOON_SKIN_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/act_gift.lua b/lua/app/config/act_gift.lua index 76afbe80..5888d69d 100644 --- a/lua/app/config/act_gift.lua +++ b/lua/app/config/act_gift.lua @@ -5059,8 +5059,8 @@ local act_gift = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=3400101, - ["id_for_nothing"]="VQxcA2RRfg==", + ["id"]=5400401, + ["id_for_nothing"]="UwxcA2FRfg==", ["num"]=1, ["num_for_nothing"]="Vw==" } @@ -5091,8 +5091,8 @@ local act_gift = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=5400101, - ["id_for_nothing"]="UwxcA2RRfg==", + ["id"]=4400201, + ["id_for_nothing"]="UgxcA2dRfg==", ["num"]=1, ["num_for_nothing"]="Vw==" } diff --git a/lua/app/config/activity_full_moon_reward.lua b/lua/app/config/activity_full_moon_reward.lua index 59cee37c..93d22abd 100644 --- a/lua/app/config/activity_full_moon_reward.lua +++ b/lua/app/config/activity_full_moon_reward.lua @@ -114,8 +114,8 @@ local activity_full_moon_reward = { ["reward"]={ ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=5300101, - ["id_for_nothing"]="UwtcA2RRfg==", + ["id"]=2300201, + ["id_for_nothing"]="VAtcA2dRfg==", ["num"]=1, ["num_for_nothing"]="Vw==" } diff --git a/lua/app/config/activity_pvp_board.lua.meta b/lua/app/config/activity_pvp_board.lua.meta index 0b72968f..596d1d52 100644 --- a/lua/app/config/activity_pvp_board.lua.meta +++ b/lua/app/config/activity_pvp_board.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: eec0aaed6b62d6742906ac31143602d1 +guid: 0ea07987f5138fd4783f9cb9509cf506 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/avatar.lua b/lua/app/config/avatar.lua index 3e7a631d..93ee837d 100644 --- a/lua/app/config/avatar.lua +++ b/lua/app/config/avatar.lua @@ -171,9 +171,21 @@ local avatar = { [1400101]={ ["iconId"]="16_1", ["item"]=1400101 + }, + [2300201]={ + ["iconId"]="10_1", + ["item"]=2300201 + }, + [4400201]={ + ["iconId"]="20_1", + ["item"]=4400201 + }, + [5400401]={ + ["iconId"]="16_1", + ["item"]=5400401 } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/chapter_dungeon_rune.lua b/lua/app/config/chapter_dungeon_rune.lua index b0e9dc02..213be4ce 100644 --- a/lua/app/config/chapter_dungeon_rune.lua +++ b/lua/app/config/chapter_dungeon_rune.lua @@ -106,16 +106,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=3000, + ["num_for_nothing"]="VQhcAw==" } } }, @@ -220,18 +212,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -340,18 +324,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -453,21 +429,13 @@ local chapter_dungeon_rune = { } }, ["first_reward"]={ - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, { ["type"]=1, ["type_for_nothing"]="Vw==", ["id"]=2, ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -566,18 +534,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=1001, + ["id_for_nothing"]="VwhcAg==", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -673,16 +633,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=3000, + ["num_for_nothing"]="VQhcAw==" } } }, @@ -776,18 +728,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -896,18 +840,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -1001,18 +937,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=38, + ["id_for_nothing"]="VQA=", + ["num"]=5, + ["num_for_nothing"]="Uw==" } } }, @@ -1020,8 +948,8 @@ local chapter_dungeon_rune = { ["season"]=1, ["stage"]=10, ["chapter_board"]=10, - ["scene"]="bg_14", - ["block_icon"]="battle_hinder_14", + ["scene"]="bg_21", + ["block_icon"]="battle_hinder_21", ["chess_board"]="chessboard_1", ["monster"]={ 6308 @@ -1033,28 +961,28 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" + ["id"]=2, + ["id_for_nothing"]="VA==", + ["num"]=30, + ["num_for_nothing"]="VQg=" }, { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=50, + ["num_for_nothing"]="Uwg=" } }, ["sweep_reward"]={ { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1009, - ["num_for_nothing"]="VwhcCg==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -1161,16 +1089,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=4000, + ["num_for_nothing"]="UghcAw==" } } }, @@ -1275,18 +1195,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -1395,18 +1307,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -1512,21 +1416,13 @@ local chapter_dungeon_rune = { } }, ["first_reward"]={ - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, { ["type"]=1, ["type_for_nothing"]="Vw==", ["id"]=2, ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -1615,18 +1511,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=1001, + ["id_for_nothing"]="VwhcAg==", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -1733,16 +1621,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=4000, + ["num_for_nothing"]="UghcAw==" } } }, @@ -1836,18 +1716,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -1956,18 +1828,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -2061,18 +1925,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=38, + ["id_for_nothing"]="VQA=", + ["num"]=5, + ["num_for_nothing"]="Uw==" } } }, @@ -2080,9 +1936,9 @@ local chapter_dungeon_rune = { ["season"]=1, ["stage"]=20, ["chapter_board"]=20, - ["scene"]="bg_23", - ["block_icon"]="battle_hinder_23", - ["chess_board"]="chessboard_2", + ["scene"]="bg_26", + ["block_icon"]="battle_hinder_26", + ["chess_board"]="chessboard_1", ["monster"]={ 6408 }, @@ -2093,28 +1949,28 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" + ["id"]=2, + ["id_for_nothing"]="VA==", + ["num"]=30, + ["num_for_nothing"]="VQg=" }, { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=100, + ["num_for_nothing"]="Vwhc" } }, ["sweep_reward"]={ { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1019, - ["num_for_nothing"]="VwhdCg==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=25, + ["num_for_nothing"]="VA0=" } } }, @@ -2210,16 +2066,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=5000, + ["num_for_nothing"]="UwhcAw==" } } }, @@ -2324,18 +2172,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -2435,18 +2275,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -2552,21 +2384,13 @@ local chapter_dungeon_rune = { } }, ["first_reward"]={ - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, { ["type"]=1, ["type_for_nothing"]="Vw==", ["id"]=2, ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -2660,18 +2484,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=1002, + ["id_for_nothing"]="VwhcAQ==", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -2778,16 +2594,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=5000, + ["num_for_nothing"]="UwhcAw==" } } }, @@ -2896,18 +2704,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -3016,18 +2816,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -3132,18 +2924,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=39, + ["id_for_nothing"]="VQE=", + ["num"]=5, + ["num_for_nothing"]="Uw==" } } }, @@ -3164,28 +2948,28 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" + ["id"]=2, + ["id_for_nothing"]="VA==", + ["num"]=40, + ["num_for_nothing"]="Ugg=" }, { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=150, + ["num_for_nothing"]="Vw1c" } }, ["sweep_reward"]={ { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1029, - ["num_for_nothing"]="VwheCg==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=30, + ["num_for_nothing"]="VQg=" } } }, @@ -3292,16 +3076,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=6000, + ["num_for_nothing"]="UAhcAw==" } } }, @@ -3406,18 +3182,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -3526,18 +3294,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=15, + ["num_for_nothing"]="Vw0=" } } }, @@ -3639,21 +3399,13 @@ local chapter_dungeon_rune = { } }, ["first_reward"]={ - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, { ["type"]=1, ["type_for_nothing"]="Vw==", ["id"]=2, ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=15, + ["num_for_nothing"]="Vw0=" } } }, @@ -3758,18 +3510,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=1002, + ["id_for_nothing"]="VwhcAQ==", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -3876,16 +3620,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=6000, + ["num_for_nothing"]="UAhcAw==" } } }, @@ -3994,18 +3730,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=30, + ["num_for_nothing"]="VQg=" } } }, @@ -4114,18 +3842,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=15, + ["num_for_nothing"]="Vw0=" } } }, @@ -4234,18 +3954,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=39, + ["id_for_nothing"]="VQE=", + ["num"]=5, + ["num_for_nothing"]="Uw==" } } }, @@ -4253,8 +3965,8 @@ local chapter_dungeon_rune = { ["season"]=1, ["stage"]=40, ["chapter_board"]=40, - ["scene"]="bg_7", - ["block_icon"]="battle_hinder_7", + ["scene"]="bg_31", + ["block_icon"]="battle_hinder_33", ["chess_board"]="chessboard_2", ["monster"]={ 6608 @@ -4266,28 +3978,28 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" + ["id"]=2, + ["id_for_nothing"]="VA==", + ["num"]=50, + ["num_for_nothing"]="Uwg=" }, { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=200, + ["num_for_nothing"]="VAhc" } }, ["sweep_reward"]={ { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1039, - ["num_for_nothing"]="VwhfCg==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=35, + ["num_for_nothing"]="VQ0=" } } }, @@ -4394,16 +4106,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=7000, + ["num_for_nothing"]="UQhcAw==" } } }, @@ -4508,18 +4212,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -4628,18 +4324,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=15, + ["num_for_nothing"]="Vw0=" } } }, @@ -4741,21 +4429,13 @@ local chapter_dungeon_rune = { } }, ["first_reward"]={ - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, { ["type"]=1, ["type_for_nothing"]="Vw==", ["id"]=2, ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=15, + ["num_for_nothing"]="Vw0=" } } }, @@ -4864,18 +4544,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=1002, + ["id_for_nothing"]="VwhcAQ==", + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -4982,16 +4654,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=7000, + ["num_for_nothing"]="UQhcAw==" } } }, @@ -5096,18 +4760,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -5216,18 +4872,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=15, + ["num_for_nothing"]="Vw0=" } } }, @@ -5332,18 +4980,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=39, + ["id_for_nothing"]="VQE=", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -5351,8 +4991,8 @@ local chapter_dungeon_rune = { ["season"]=1, ["stage"]=50, ["chapter_board"]=50, - ["scene"]="bg_7", - ["block_icon"]="battle_hinder_7", + ["scene"]="bg_13", + ["block_icon"]="battle_hinder_13", ["chess_board"]="chessboard_2", ["monster"]={ 6708 @@ -5364,28 +5004,28 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" + ["id"]=2, + ["id_for_nothing"]="VA==", + ["num"]=60, + ["num_for_nothing"]="UAg=" }, { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=300, + ["num_for_nothing"]="VQhc" } }, ["sweep_reward"]={ { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1049, - ["num_for_nothing"]="VwhYCg==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=40, + ["num_for_nothing"]="Ugg=" } } }, @@ -5492,16 +5132,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=8000, + ["num_for_nothing"]="XghcAw==" } } }, @@ -5606,18 +5238,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -5722,18 +5346,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -5829,21 +5445,13 @@ local chapter_dungeon_rune = { } }, ["first_reward"]={ - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, { ["type"]=1, ["type_for_nothing"]="Vw==", ["id"]=2, ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=15, + ["num_for_nothing"]="Vw0=" } } }, @@ -5948,18 +5556,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=1002, + ["id_for_nothing"]="VwhcAQ==", + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -6070,16 +5670,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=8000, + ["num_for_nothing"]="XghcAw==" } } }, @@ -6184,18 +5776,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -6300,18 +5884,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -6416,18 +5992,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=39, + ["id_for_nothing"]="VQE=", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -6448,28 +6016,28 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" + ["id"]=2, + ["id_for_nothing"]="VA==", + ["num"]=70, + ["num_for_nothing"]="UQg=" }, { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=400, + ["num_for_nothing"]="Ughc" } }, ["sweep_reward"]={ { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1059, - ["num_for_nothing"]="VwhZCg==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=45, + ["num_for_nothing"]="Ug0=" } } }, @@ -6576,16 +6144,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=9000, + ["num_for_nothing"]="XwhcAw==" } } }, @@ -6690,18 +6250,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -6806,18 +6358,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -6919,21 +6463,13 @@ local chapter_dungeon_rune = { } }, ["first_reward"]={ - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, { ["type"]=1, ["type_for_nothing"]="Vw==", ["id"]=2, ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -7042,18 +6578,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=1003, + ["id_for_nothing"]="VwhcAA==", + ["num"]=15, + ["num_for_nothing"]="Vw0=" } } }, @@ -7160,16 +6688,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=9000, + ["num_for_nothing"]="XwhcAw==" } } }, @@ -7278,18 +6798,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -7394,18 +6906,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=50, + ["num_for_nothing"]="Uwg=" } } }, @@ -7510,18 +7014,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=40, + ["id_for_nothing"]="Ugg=", + ["num"]=8, + ["num_for_nothing"]="Xg==" } } }, @@ -7529,8 +7025,8 @@ local chapter_dungeon_rune = { ["season"]=1, ["stage"]=70, ["chapter_board"]=70, - ["scene"]="bg_14", - ["block_icon"]="battle_hinder_14", + ["scene"]="bg_17", + ["block_icon"]="battle_hinder_17", ["chess_board"]="chessboard_1", ["monster"]={ 6908 @@ -7542,28 +7038,28 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" + ["id"]=2, + ["id_for_nothing"]="VA==", + ["num"]=80, + ["num_for_nothing"]="Xgg=" }, { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=600, + ["num_for_nothing"]="UAhc" } }, ["sweep_reward"]={ { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1069, - ["num_for_nothing"]="VwhaCg==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=50, + ["num_for_nothing"]="Uwg=" } } }, @@ -7678,16 +7174,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=10000, + ["num_for_nothing"]="VwhcA2U=" } } }, @@ -7792,18 +7280,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -7912,18 +7392,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -8025,21 +7497,13 @@ local chapter_dungeon_rune = { } }, ["first_reward"]={ - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, { ["type"]=1, ["type_for_nothing"]="Vw==", ["id"]=2, ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -8144,18 +7608,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=1003, + ["id_for_nothing"]="VwhcAA==", + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -8270,16 +7726,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=10000, + ["num_for_nothing"]="VwhcA2U=" } } }, @@ -8384,18 +7832,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=50, + ["num_for_nothing"]="Uwg=" } } }, @@ -8500,18 +7940,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -8620,18 +8052,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=40, + ["id_for_nothing"]="Ugg=", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -8652,28 +8076,28 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" + ["id"]=2, + ["id_for_nothing"]="VA==", + ["num"]=90, + ["num_for_nothing"]="Xwg=" }, { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=800, + ["num_for_nothing"]="Xghc" } }, ["sweep_reward"]={ { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1079, - ["num_for_nothing"]="VwhbCg==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=55, + ["num_for_nothing"]="Uw0=" } } }, @@ -8780,16 +8204,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=12000, + ["num_for_nothing"]="VwpcA2U=" } } }, @@ -8898,18 +8314,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -9008,18 +8416,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=25, + ["num_for_nothing"]="VA0=" } } }, @@ -9125,21 +8525,13 @@ local chapter_dungeon_rune = { } }, ["first_reward"]={ - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, { ["type"]=1, ["type_for_nothing"]="Vw==", ["id"]=2, ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -9244,18 +8636,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=1003, + ["id_for_nothing"]="VwhcAA==", + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -9362,16 +8746,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=12000, + ["num_for_nothing"]="VwpcA2U=" } } }, @@ -9476,18 +8852,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -9592,18 +8960,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=25, + ["num_for_nothing"]="VA0=" } } }, @@ -9712,18 +9072,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=40, + ["id_for_nothing"]="Ugg=", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -9744,28 +9096,28 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" + ["id"]=2, + ["id_for_nothing"]="VA==", + ["num"]=100, + ["num_for_nothing"]="Vwhc" }, { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=1000, + ["num_for_nothing"]="VwhcAw==" } }, ["sweep_reward"]={ { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1089, - ["num_for_nothing"]="VwhUCg==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=60, + ["num_for_nothing"]="UAg=" } } }, @@ -9872,16 +9224,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=14000, + ["num_for_nothing"]="VwxcA2U=" } } }, @@ -9994,18 +9338,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -10110,18 +9446,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=25, + ["num_for_nothing"]="VA0=" } } }, @@ -10227,21 +9555,13 @@ local chapter_dungeon_rune = { } }, ["first_reward"]={ - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, { ["type"]=1, ["type_for_nothing"]="Vw==", ["id"]=2, ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=20, + ["num_for_nothing"]="VAg=" } } }, @@ -10346,18 +9666,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=1004, + ["id_for_nothing"]="VwhcBw==", + ["num"]=15, + ["num_for_nothing"]="Vw0=" } } }, @@ -10468,16 +9780,8 @@ local chapter_dungeon_rune = { ["type_for_nothing"]="Vw==", ["id"]=1, ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["num"]=14000, + ["num_for_nothing"]="VwxcA2U=" } } }, @@ -10582,18 +9886,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=13, + ["id_for_nothing"]="Vws=", + ["num"]=1, + ["num_for_nothing"]="Vw==" } } }, @@ -10698,18 +9994,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=3, + ["id_for_nothing"]="VQ==", + ["num"]=25, + ["num_for_nothing"]="VA0=" } } }, @@ -10814,18 +10102,10 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" - }, - { - ["type"]=1, - ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=41, + ["id_for_nothing"]="Ugk=", + ["num"]=10, + ["num_for_nothing"]="Vwg=" } } }, @@ -10833,9 +10113,9 @@ local chapter_dungeon_rune = { ["season"]=1, ["stage"]=100, ["chapter_board"]=100, - ["scene"]="bg_7", - ["block_icon"]="battle_hinder_7", - ["chess_board"]="chessboard_2", + ["scene"]="bg_22", + ["block_icon"]="battle_hinder_22", + ["chess_board"]="chessboard_1", ["monster"]={ 7208 }, @@ -10846,28 +10126,28 @@ local chapter_dungeon_rune = { { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1000, - ["num_for_nothing"]="VwhcAw==" + ["id"]=2, + ["id_for_nothing"]="VA==", + ["num"]=100, + ["num_for_nothing"]="Vwhc" }, { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=2, - ["id_for_nothing"]="VA==", - ["num"]=2000, - ["num_for_nothing"]="VAhcAw==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=1200, + ["num_for_nothing"]="VwpcAw==" } }, ["sweep_reward"]={ { ["type"]=1, ["type_for_nothing"]="Vw==", - ["id"]=1, - ["id_for_nothing"]="Vw==", - ["num"]=1099, - ["num_for_nothing"]="VwhVCg==" + ["id"]=55, + ["id_for_nothing"]="Uw0=", + ["num"]=65, + ["num_for_nothing"]="UA0=" } } } diff --git a/lua/app/config/const.lua b/lua/app/config/const.lua index af101080..99cbd95c 100644 --- a/lua/app/config/const.lua +++ b/lua/app/config/const.lua @@ -441,6 +441,9 @@ local const = { ["num_for_nothing"]="Uw==" } }, + ["runes_red_point"]={ + ["value"]=1000 + }, ["dungeon_rune_lvlimit"]={ ["value"]=20 }, @@ -523,6 +526,6 @@ local const = { } } local config = { -data=const,count=104 +data=const,count=105 } return config \ No newline at end of file diff --git a/lua/app/config/hero.lua b/lua/app/config/hero.lua index 5c2d73e9..51a5a430 100644 --- a/lua/app/config/hero.lua +++ b/lua/app/config/hero.lua @@ -1620,7 +1620,8 @@ local hero = { ["is_show"]=1, ["collection_point"]=5, ["skin"]={ - 44002 + 44002, + 4400201 } }, [44003]={ @@ -2180,7 +2181,8 @@ local hero = { ["item_id"]=54004, ["collection_point"]=5, ["skin"]={ - 54004 + 54004, + 5400401 } } } diff --git a/lua/app/config/item.lua b/lua/app/config/item.lua index 221bc2b8..f1a4fead 100644 --- a/lua/app/config/item.lua +++ b/lua/app/config/item.lua @@ -2451,9 +2451,21 @@ local item = { ["parameter"]=2300201, ["qlt"]=2, ["icon"]="2300201" + }, + [4400201]={ + ["type"]=12, + ["parameter"]=4400201, + ["qlt"]=4, + ["icon"]="4400201" + }, + [5400401]={ + ["type"]=12, + ["parameter"]=5400401, + ["qlt"]=4, + ["icon"]="5400401" } } local config = { -data=item,count=126 +data=item,count=128 } return config \ No newline at end of file diff --git a/lua/app/config/monster_activity.lua b/lua/app/config/monster_activity.lua index 66e9c286..35ff3bed 100644 --- a/lua/app/config/monster_activity.lua +++ b/lua/app/config/monster_activity.lua @@ -771,47 +771,39 @@ local monster_activity = { ["monster_exp"]=15000 }, [10004]={ - ["monster_base"]=20047, + ["monster_base"]=30043, ["is_boss"]=1, - ["hp"]=107230000, - ["atk"]=930000, + ["hp"]=245450000, + ["atk"]=910000, ["atk_times"]=4, ["hurt_skill"]={ - 30156, - 30157, - 30158 + 50138, + 50139, + 50140, + 50141 }, ["skill"]={ - 10137, - 10138 + 50142, + 50143 }, - ["passive_skill"]={ - 10013, - 10010 - }, - ["monster_exp"]=15000 + ["monster_exp"]=350000 }, [10104]={ - ["monster_base"]=20048, + ["monster_base"]=30044, ["is_boss"]=1, - ["hp"]=107230000, - ["atk"]=930000, + ["hp"]=245450000, + ["atk"]=910000, ["atk_times"]=4, ["hurt_skill"]={ - 30159, - 30160, - 30161 + 50144, + 50145, + 50146, + 50147 }, ["skill"]={ - 10139, - 10140 + 50148 }, - ["passive_skill"]={ - 10141, - 10014, - 10009 - }, - ["monster_exp"]=15000 + ["monster_exp"]=350000 } } local config = { diff --git a/lua/app/config/monster_base.lua b/lua/app/config/monster_base.lua index e93a9672..7389ebff 100644 --- a/lua/app/config/monster_base.lua +++ b/lua/app/config/monster_base.lua @@ -620,52 +620,52 @@ local monster_base = { ["model_ui"]=1.0 }, [20049]={ - ["model_id"]="m20039", + ["model_id"]="m20049", ["body"]=1, - ["model_ui"]=0.8 + ["model_ui"]=1.0 }, [20050]={ - ["model_id"]="m20040", + ["model_id"]="m20051", ["body"]=1, - ["model_ui"]=0.8 + ["model_ui"]=1.0 }, [20051]={ - ["model_id"]="m20041", + ["model_id"]="m20053", ["body"]=1, - ["model_ui"]=0.8 + ["model_ui"]=1.0 }, [20052]={ - ["model_id"]="m20042", + ["model_id"]="m20052", ["body"]=1, - ["model_ui"]=0.8 + ["model_ui"]=1.0 }, [20053]={ - ["model_id"]="m20043", + ["model_id"]="m20056", ["body"]=1, - ["model_ui"]=0.8 + ["model_ui"]=1.0 }, [20054]={ - ["model_id"]="m20044", + ["model_id"]="m20057", ["body"]=1, ["model_ui"]=1.0 }, [20055]={ - ["model_id"]="m20045", + ["model_id"]="m20058", ["body"]=1, ["model_ui"]=1.0 }, [20056]={ - ["model_id"]="m20046", + ["model_id"]="m20054", ["body"]=1, ["model_ui"]=1.0 }, [20057]={ - ["model_id"]="m20047", + ["model_id"]="m20055", ["body"]=1, ["model_ui"]=1.0 }, [20058]={ - ["model_id"]="m20048", + ["model_id"]="m20050", ["body"]=1, ["model_ui"]=1.0 }, @@ -793,9 +793,19 @@ local monster_base = { ["model_id"]="p0026", ["body"]=2, ["model_ui"]=1.0 + }, + [30043]={ + ["model_id"]="p0043", + ["body"]=2, + ["model_ui"]=1.0 + }, + [30044]={ + ["model_id"]="p0044", + ["body"]=2, + ["model_ui"]=1.0 } } local config = { -data=monster_base,count=159 +data=monster_base,count=161 } return config \ No newline at end of file diff --git a/lua/app/config/skill.lua b/lua/app/config/skill.lua index d3c3f4ed..ad1f8967 100644 --- a/lua/app/config/skill.lua +++ b/lua/app/config/skill.lua @@ -2534,6 +2534,9 @@ local skill = { ["fx_self_mirror"]=400014 }, [2300123]={ + ["buff_id"]={ + "stun" + }, ["position"]=2, ["buff_condition"]={ { @@ -3891,16 +3894,16 @@ local skill = { } }, ["effect_type"]=2, - ["trigger"]=9, + ["trigger"]=5, ["effect"]={ { - ["type"]="atkp_color_add", - ["num"]=1000, + ["type"]="hurt_yellow", + ["num"]=5000, ["ratio"]=10000, - ["round"]=999 + ["round"]=0 } }, - ["obj"]=1 + ["obj"]=2 }, [2400423]={ ["position"]=2, @@ -7452,6 +7455,9 @@ local skill = { ["fx_self_mirror"]=400154 }, [4400420]={ + ["buff_id"]={ + "normal_attack_dec" + }, ["energy"]=10, ["link"]=1, ["position"]=4, @@ -7532,9 +7538,9 @@ local skill = { ["trigger"]=6, ["effect"]={ { - ["type"]="normal_attack_dec", - ["num"]=1, - ["ratio"]=1000, + ["type"]="weaken", + ["num"]=2500, + ["ratio"]=10000, ["round"]=2 } }, @@ -23915,16 +23921,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000011 }, - ["name_act"]="attack01", - ["fx_self"]=200096 + ["name_act"]="attack01" }, [30166]={ ["effect_type"]=1, @@ -23939,16 +23944,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000012 }, - ["name_act"]="attack02", - ["fx_self"]=200097 + ["name_act"]="attack02" }, [30167]={ ["effect_type"]=1, @@ -23963,16 +23967,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000013 }, - ["name_act"]="attack03", - ["fx_self"]=200098 + ["name_act"]="attack03" }, [30168]={ ["buff_condition"]={ @@ -24041,6 +24044,18 @@ local skill = { ["effect_type"]=1, ["trigger"]=1, ["effect"]={ + { + ["type"]="hurt", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + }, + { + ["type"]="hurt", + ["num"]=15000, + ["ratio"]=10000, + ["round"]=0 + }, { ["type"]="hurt", ["num"]=20000, @@ -24055,6 +24070,11 @@ local skill = { } }, ["obj"]=2, + ["effect_block"]={ + 1, + 2, + 4 + }, ["skill_position"]={ 2, 0 @@ -24066,8 +24086,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30170]={ ["effect_type"]=1, @@ -24094,16 +24113,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000011 }, - ["name_act"]="attack01", - ["fx_self"]=200096 + ["name_act"]="attack01" }, [30171]={ ["effect_type"]=1, @@ -24130,16 +24148,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000012 }, - ["name_act"]="attack02", - ["fx_self"]=200097 + ["name_act"]="attack02" }, [30172]={ ["effect_type"]=1, @@ -24166,16 +24183,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000013 }, - ["name_act"]="attack03", - ["fx_self"]=200098 + ["name_act"]="attack03" }, [30173]={ ["effect_type"]=1, @@ -24200,8 +24216,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30174]={ ["effect_type"]=1, @@ -24222,16 +24237,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000011 }, - ["name_act"]="attack01", - ["fx_self"]=200096 + ["name_act"]="attack01" }, [30175]={ ["effect_type"]=1, @@ -24252,16 +24266,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000012 }, - ["name_act"]="attack02", - ["fx_self"]=200097 + ["name_act"]="attack02" }, [30176]={ ["effect_type"]=1, @@ -24282,16 +24295,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000013 }, - ["name_act"]="attack03", - ["fx_self"]=200098 + ["name_act"]="attack03" }, [30177]={ ["effect_type"]=1, @@ -24318,8 +24330,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30178]={ ["effect_type"]=1, @@ -24346,8 +24357,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill02" }, [30179]={ ["effect_type"]=1, @@ -24362,16 +24372,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000011 }, - ["name_act"]="attack01", - ["fx_self"]=200096 + ["name_act"]="attack01" }, [30180]={ ["effect_type"]=1, @@ -24386,16 +24395,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000012 }, - ["name_act"]="attack02", - ["fx_self"]=200097 + ["name_act"]="attack02" }, [30181]={ ["effect_type"]=1, @@ -24410,16 +24418,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000013 }, - ["name_act"]="attack03", - ["fx_self"]=200098 + ["name_act"]="attack03" }, [30182]={ ["effect_type"]=1, @@ -24440,8 +24447,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30183]={ ["effect_type"]=1, @@ -24462,8 +24468,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30184]={ ["effect_type"]=1, @@ -24484,8 +24489,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30185]={ ["skill_type"]=3, @@ -24503,8 +24507,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30186]={ ["effect_type"]=1, @@ -24519,16 +24522,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000011 }, - ["name_act"]="attack01", - ["fx_self"]=200096 + ["name_act"]="attack01" }, [30187]={ ["effect_type"]=1, @@ -24543,16 +24545,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000012 }, - ["name_act"]="attack02", - ["fx_self"]=200097 + ["name_act"]="attack02" }, [30188]={ ["effect_type"]=1, @@ -24567,16 +24568,15 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, ["sound_hit"]={ 1000013 }, - ["name_act"]="attack03", - ["fx_self"]=200098 + ["name_act"]="attack03" }, [30189]={ ["effect_type"]=2, @@ -24616,8 +24616,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30191]={ ["effect_type"]=1, @@ -24632,8 +24631,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -24655,8 +24654,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -24678,8 +24677,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -24732,8 +24731,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30196]={ ["effect_type"]=1, @@ -24769,8 +24767,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -24792,8 +24790,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -24815,8 +24813,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -24925,8 +24923,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30206]={ ["effect_type"]=1, @@ -24953,8 +24950,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30207]={ ["effect_type"]=1, @@ -24981,8 +24977,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30208]={ ["effect_type"]=1, @@ -24997,8 +24992,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -25020,8 +25015,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -25043,8 +25038,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -25089,8 +25084,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30213]={ ["effect_type"]=1, @@ -25115,8 +25109,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30214]={ ["effect_type"]=1, @@ -25141,8 +25134,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30215]={ ["effect_type"]=1, @@ -25157,8 +25149,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -25180,8 +25172,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -25203,8 +25195,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -25255,8 +25247,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill01" }, [30220]={ ["skill_type"]=9, @@ -25285,8 +25276,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill02" }, [30221]={ ["effect_type"]=1, @@ -25301,8 +25291,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -25324,8 +25314,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -25347,8 +25337,8 @@ local skill = { }, ["obj"]=2, ["skill_position"]={ - 1, - 140 + 2, + 0 }, ["shake_time"]=100, ["shake_type"]=1, @@ -25399,8 +25389,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill02" }, [30226]={ ["skill_type"]=3, @@ -25411,6 +25400,11 @@ local skill = { ["effect_type"]=1, ["trigger"]=1, ["obj"]=2, + ["effect_block"]={ + 1, + 2, + 3 + }, ["skill_position"]={ 2, 0 @@ -25428,6 +25422,11 @@ local skill = { ["effect_type"]=1, ["trigger"]=1, ["obj"]=2, + ["effect_block"]={ + 1, + 2, + 3 + }, ["skill_position"]={ 2, 0 @@ -25445,6 +25444,11 @@ local skill = { ["effect_type"]=1, ["trigger"]=1, ["obj"]=2, + ["effect_block"]={ + 1, + 2, + 3 + }, ["skill_position"]={ 2, 0 @@ -25462,6 +25466,11 @@ local skill = { ["effect_type"]=1, ["trigger"]=1, ["obj"]=2, + ["effect_block"]={ + 1, + 2, + 3 + }, ["skill_position"]={ 2, 0 @@ -25499,8 +25508,7 @@ local skill = { ["sound_hit"]={ 10018 }, - ["name_act"]="skill01", - ["fx_self"]=200099 + ["name_act"]="skill02" }, [40001]={ ["effect_type"]=1, @@ -30326,6 +30334,339 @@ local skill = { ["cd"]=3, ["cd_start"]=0 }, + [50138]={ + ["effect_type"]=1, + ["trigger"]=1, + ["effect"]={ + { + ["type"]="hurt_purple", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + } + }, + ["obj"]=2, + ["skill_position"]={ + 1, + 25 + }, + ["shake_time"]=100, + ["shake_type"]=2, + ["sound"]=5400410, + ["sound_delay"]=0.0, + ["name_act"]="attack01", + ["fx_self"]=400160 + }, + [50139]={ + ["effect_type"]=1, + ["trigger"]=1, + ["effect"]={ + { + ["type"]="hurt_purple", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + } + }, + ["obj"]=2, + ["skill_position"]={ + 1, + 25 + }, + ["shake_time"]=100, + ["shake_type"]=2, + ["sound"]=5400411, + ["sound_delay"]=0.0, + ["name_act"]="attack02", + ["fx_self"]=400161 + }, + [50140]={ + ["effect_type"]=1, + ["trigger"]=1, + ["effect"]={ + { + ["type"]="hurt_purple", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + } + }, + ["obj"]=2, + ["skill_position"]={ + 1, + 25 + }, + ["shake_time"]=100, + ["shake_type"]=1, + ["sound"]=5400412, + ["sound_delay"]=0.0, + ["name_act"]="attack03", + ["fx_self"]=400162 + }, + [50141]={ + ["effect_type"]=1, + ["trigger"]=1, + ["effect"]={ + { + ["type"]="hurt_purple", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + } + }, + ["obj"]=2, + ["skill_position"]={ + 1, + 25 + }, + ["shake_time"]=100, + ["shake_type"]=2, + ["sound"]=5400413, + ["sound_delay"]=0.0, + ["name_act"]="attack04", + ["fx_self"]=400163 + }, + [50142]={ + ["effect_type"]=1, + ["trigger"]=1, + ["effect"]={ + { + ["type"]="hurt_purple", + ["num"]=50000, + ["ratio"]=10000, + ["round"]=0 + } + }, + ["obj"]=2, + ["skill_position"]={ + 1, + 25 + }, + ["cd"]=3, + ["cd_start"]=0, + ["shake_time"]=200, + ["shake_type"]=6, + ["sound"]=5400420, + ["sound_delay"]=0.0, + ["name_act"]="skill01", + ["fx_self"]=400164, + ["bullet_time"]={ + 1666, + 3000, + 400 + } + }, + [50143]={ + ["effect_type"]=1, + ["trigger"]=1, + ["effect"]={ + { + ["type"]="immune", + ["num"]=0, + ["ratio"]=10000, + ["round"]=2 + }, + { + ["type"]="counterattack", + ["num"]=2500, + ["ratio"]=10000, + ["round"]=2 + }, + { + ["type"]="undead", + ["num"]=0, + ["ratio"]=10000, + ["round"]=2 + } + }, + ["obj"]=1, + ["skill_position"]={ + 1, + 25 + }, + ["cd"]=3, + ["cd_start"]=0 + }, + [50144]={ + ["effect_type"]=1, + ["trigger"]=1, + ["effect"]={ + { + ["type"]="hurt", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + }, + { + ["type"]="corrupt", + ["num"]=7500, + ["ratio"]=1000, + ["round"]=2 + } + }, + ["obj"]=2, + ["skill_position"]={ + 2, + 0 + }, + ["shake_time"]=100, + ["shake_type"]=1, + ["sound_hit"]={ + 10005 + }, + ["name_act"]="attack01", + ["fx_self"]=400110 + }, + [50145]={ + ["effect_type"]=1, + ["trigger"]=1, + ["effect"]={ + { + ["type"]="hurt", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + }, + { + ["type"]="corrupt", + ["num"]=7500, + ["ratio"]=1000, + ["round"]=2 + } + }, + ["obj"]=2, + ["skill_position"]={ + 2, + 0 + }, + ["shake_time"]=100, + ["shake_type"]=1, + ["sound_hit"]={ + 10006 + }, + ["name_act"]="attack02", + ["fx_self"]=400110 + }, + [50146]={ + ["effect_type"]=1, + ["trigger"]=1, + ["effect"]={ + { + ["type"]="hurt", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + }, + { + ["type"]="corrupt", + ["num"]=7500, + ["ratio"]=1000, + ["round"]=2 + } + }, + ["obj"]=2, + ["skill_position"]={ + 2, + 0 + }, + ["shake_time"]=100, + ["shake_type"]=1, + ["sound_hit"]={ + 10023 + }, + ["name_act"]="attack03", + ["fx_self"]=400110 + }, + [50147]={ + ["effect_type"]=1, + ["trigger"]=1, + ["effect"]={ + { + ["type"]="hurt", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + }, + { + ["type"]="corrupt", + ["num"]=7500, + ["ratio"]=1000, + ["round"]=2 + } + }, + ["obj"]=2, + ["skill_position"]={ + 2, + 0 + }, + ["shake_time"]=100, + ["shake_type"]=1, + ["sound_hit"]={ + 10048 + }, + ["name_act"]="attack04", + ["fx_self"]=400110 + }, + [50148]={ + ["effect_type"]=1, + ["trigger"]=1, + ["effect"]={ + { + ["type"]="hurt", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + }, + { + ["type"]="hurt", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + }, + { + ["type"]="hurt", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + }, + { + ["type"]="hurt", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=0 + }, + { + ["type"]="curse", + ["num"]=10000, + ["ratio"]=10000, + ["round"]=2 + } + }, + ["obj"]=2, + ["effect_block"]={ + 1, + 2, + 3, + 5 + }, + ["skill_position"]={ + 2, + 0 + }, + ["cd"]=3, + ["cd_start"]=0, + ["shake_time"]=200, + ["shake_type"]=6, + ["sound"]=44002200, + ["sound_delay"]=0.0, + ["name_act"]="skill01", + ["fx_self"]=400111, + ["bullet_time"]={ + 1600, + 3000, + 200 + } + }, [110001]={ ["skill_type"]=5, ["skill_position"]={ @@ -30428,6 +30769,6 @@ local skill = { } } local config = { -data=skill,count=1104 +data=skill,count=1115 } 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 13ed1d92..0be33447 100644 --- a/lua/app/config/skill_rogue.lua +++ b/lua/app/config/skill_rogue.lua @@ -1518,6 +1518,9 @@ local skill_rogue = { ["icon"]="235" }, [1400401]={ + ["buff_id"]={ + "charm" + }, ["limit_times"]=1, ["weight"]=3000, ["qlt"]=4, @@ -1578,6 +1581,9 @@ local skill_rogue = { ["icon"]="266" }, [1400404]={ + ["buff_id"]={ + "charm" + }, ["unlock"]=1400401, ["cover_unlock"]=1400401, ["limit_times"]=1, @@ -1597,6 +1603,9 @@ local skill_rogue = { ["icon"]="267" }, [1400405]={ + ["buff_id"]={ + "normal_attack_add" + }, ["limit_times"]=1, ["weight"]=3000, ["qlt"]=4, @@ -2523,6 +2532,9 @@ local skill_rogue = { ["icon"]="237" }, [2400403]={ + ["buff_id"]={ + "stun" + }, ["limit_times"]=1, ["weight"]=3000, ["qlt"]=4, @@ -2567,6 +2579,9 @@ local skill_rogue = { ["icon"]="239" }, [2400405]={ + ["buff_id"]={ + "bleed" + }, ["limit_times"]=1, ["weight"]=3000, ["qlt"]=4, @@ -2587,20 +2602,23 @@ local skill_rogue = { ["limit_times"]=1, ["weight"]=3000, ["qlt"]=3, - ["type"]=12, + ["type"]=9, ["skill_position"]=2, ["effect"]={ { ["type"]="add_skill", ["num"]=2400422, ["ratio"]=10000, - ["round"]=1 + ["round"]=999 } }, ["obj"]=4, ["icon"]="241" }, [2400407]={ + ["buff_id"]={ + "stun" + }, ["unlock"]=2400403, ["cover_unlock"]=2400403, ["limit_times"]=1, @@ -3458,6 +3476,9 @@ local skill_rogue = { ["icon"]="243" }, [3400402]={ + ["buff_id"]={ + "poison" + }, ["limit_times"]=1, ["weight"]=3000, ["qlt"]=3, @@ -4398,13 +4419,16 @@ local skill_rogue = { ["qlt"]=3, ["type"]=8, ["parameter"]={ - 5, + 4, 1 }, ["skill_position"]=4, ["icon"]="252" }, [4400404]={ + ["buff_id"]={ + "corrupt" + }, ["limit_times"]=1, ["weight"]=3000, ["qlt"]=4, @@ -4422,6 +4446,9 @@ local skill_rogue = { ["icon"]="253" }, [4400405]={ + ["buff_id"]={ + "rebirth" + }, ["limit_times"]=1, ["weight"]=3000, ["qlt"]=4, @@ -4466,6 +4493,9 @@ local skill_rogue = { ["icon"]="255" }, [4400407]={ + ["buff_id"]={ + "rebirth" + }, ["unlock"]=4400405, ["cover_unlock"]=4400405, ["limit_times"]=1, @@ -5337,6 +5367,9 @@ local skill_rogue = { ["icon"]="258" }, [5400403]={ + ["buff_id"]={ + "immune" + }, ["limit_times"]=1, ["weight"]=3000, ["qlt"]=4, @@ -5354,6 +5387,9 @@ local skill_rogue = { ["icon"]="259" }, [5400404]={ + ["buff_id"]={ + "counterattack" + }, ["limit_times"]=1, ["weight"]=3000, ["qlt"]=4, @@ -5371,6 +5407,9 @@ local skill_rogue = { ["icon"]="260" }, [5400405]={ + ["buff_id"]={ + "immune" + }, ["unlock"]=5400403, ["cover_unlock"]=5400403, ["limit_times"]=1, @@ -5407,6 +5446,9 @@ local skill_rogue = { ["icon"]="262" }, [5400407]={ + ["buff_id"]={ + "undead" + }, ["limit_times"]=1, ["weight"]=3000, ["qlt"]=4, diff --git a/lua/app/config/skin.lua b/lua/app/config/skin.lua index 548c582a..afee9d67 100644 --- a/lua/app/config/skin.lua +++ b/lua/app/config/skin.lua @@ -259,6 +259,32 @@ local skin = { ["skin_point"]=0, ["hero_id"]=44002 }, + [4400201]={ + ["model_id"]="p0044", + ["qlt"]=4, + ["bonus"]={ + { + ["type"]="attr_crit_blue", + ["num"]=500 + }, + { + ["type"]="attr_crit_time_blue", + ["num"]=2000 + } + }, + ["icon"]="20_1", + ["got"]=1, + ["skin_point"]=15, + ["hero_id"]=44002, + ["item_id"]=4400201, + ["skill_show"]={ + 44002011, + 44002012, + 44002013, + 44002014, + 44002015 + } + }, [44003]={ ["model_id"]="p0030", ["qlt"]=1, @@ -364,9 +390,35 @@ local skin = { ["qlt"]=1, ["skin_point"]=0, ["hero_id"]=54004 + }, + [5400401]={ + ["model_id"]="p0043", + ["qlt"]=4, + ["bonus"]={ + { + ["type"]="attr_crit_purple", + ["num"]=500 + }, + { + ["type"]="attr_crit_time_purple", + ["num"]=2000 + } + }, + ["icon"]="20_1", + ["got"]=1, + ["skin_point"]=15, + ["hero_id"]=54004, + ["item_id"]=5400401, + ["skill_show"]={ + 54004011, + 54004012, + 54004013, + 54004014, + 54004015 + } } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/skin_skill.lua b/lua/app/config/skin_skill.lua index b3d93357..4f44f683 100644 --- a/lua/app/config/skin_skill.lua +++ b/lua/app/config/skin_skill.lua @@ -451,9 +451,153 @@ local skin_skill = { 400 }, ["fx_self_mirror"]=400004 + }, + [44002011]={ + ["skill_position"]={ + 2, + 0 + }, + ["shake_time"]=100, + ["shake_type"]=1, + ["sound_hit"]={ + 10005 + }, + ["name_act"]="attack01", + ["fx_self"]=300110, + ["fx_self_mirror"]=400110 + }, + [44002012]={ + ["skill_position"]={ + 2, + 0 + }, + ["shake_time"]=100, + ["shake_type"]=1, + ["sound_hit"]={ + 10006 + }, + ["name_act"]="attack02", + ["fx_self"]=300110, + ["fx_self_mirror"]=400110 + }, + [44002013]={ + ["skill_position"]={ + 2, + 0 + }, + ["shake_time"]=100, + ["shake_type"]=1, + ["sound_hit"]={ + 10023 + }, + ["name_act"]="attack03", + ["fx_self"]=300110, + ["fx_self_mirror"]=400110 + }, + [44002014]={ + ["skill_position"]={ + 2, + 0 + }, + ["shake_time"]=100, + ["shake_type"]=1, + ["sound_hit"]={ + 10048 + }, + ["name_act"]="attack04", + ["fx_self"]=300110, + ["fx_self_mirror"]=400110 + }, + [44002015]={ + ["skill_position"]={ + 2, + 0 + }, + ["shake_time"]=200, + ["shake_type"]=6, + ["sound"]=44002200, + ["sound_delay"]=0.0, + ["name_act"]="skill01", + ["fx_self"]=300111, + ["bullet_time"]={ + 1333, + 3000, + 400 + }, + ["fx_self_mirror"]=400111 + }, + [54004011]={ + ["skill_position"]={ + 1, + 25 + }, + ["shake_time"]=100, + ["shake_type"]=2, + ["sound"]=5400410, + ["sound_delay"]=0.0, + ["name_act"]="attack01", + ["fx_self"]=300160, + ["fx_self_mirror"]=400160 + }, + [54004012]={ + ["skill_position"]={ + 1, + 25 + }, + ["shake_time"]=100, + ["shake_type"]=2, + ["sound"]=5400411, + ["sound_delay"]=0.0, + ["name_act"]="attack02", + ["fx_self"]=300161, + ["fx_self_mirror"]=400161 + }, + [54004013]={ + ["skill_position"]={ + 1, + 25 + }, + ["shake_time"]=100, + ["shake_type"]=1, + ["sound"]=5400412, + ["sound_delay"]=0.0, + ["name_act"]="attack03", + ["fx_self"]=300162, + ["fx_self_mirror"]=400162 + }, + [54004014]={ + ["skill_position"]={ + 1, + 25 + }, + ["shake_time"]=100, + ["shake_type"]=2, + ["sound"]=5400413, + ["sound_delay"]=0.0, + ["name_act"]="attack04", + ["fx_self"]=300163, + ["fx_self_mirror"]=400163 + }, + [54004015]={ + ["skill_position"]={ + 1, + 25 + }, + ["shake_time"]=200, + ["shake_type"]=6, + ["sound"]=5400420, + ["sound_delay"]=0.0, + ["name_act"]="skill01", + ["fx_self"]=300164, + ["bullet_time"]={ + 1666, + 3000, + 400 + }, + ["fx_self_mirror"]=400164 } } local config = { -data=skin_skill,count=30 +data=skin_skill,count=40 } return config \ No newline at end of file diff --git a/lua/app/config/strings/cn/avatar.lua b/lua/app/config/strings/cn/avatar.lua index c9f6c9f4..dd6b7d73 100644 --- a/lua/app/config/strings/cn/avatar.lua +++ b/lua/app/config/strings/cn/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ ["desc"]="遗迹战甲" + }, + [2300201]={ + ["desc"]="黑剑士" + }, + [4400201]={ + ["desc"]="新月女王" + }, + [5400401]={ + ["desc"]="暗月武神" } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/cn/global.lua b/lua/app/config/strings/cn/global.lua index 05224c3d..a240f017 100644 --- a/lua/app/config/strings/cn/global.lua +++ b/lua/app/config/strings/cn/global.lua @@ -596,9 +596,9 @@ local localization_global = ["ACT_PVP_DESC_13"] = "是否消耗{0}钻石刷新", ["ACT_PVP_DESC_14"] = "总胜场数", ["ACT_PVP_DESC_15"] = "酒馆积分", - ["ACT_PVP_DESC_16"] = "酒馆描述", + ["ACT_PVP_DESC_16"] = "欢迎入股酒馆基金,在酒馆挑战对手,累计积分可领取奖励分红哟~", ["ACT_PVP_DESC_17"] = "累计胜场", - ["ACT_PVP_DESC_18"] = "排行榜帮助", + ["ACT_PVP_DESC_18"] = "1.活动前七天可以挑战,累计胜场排名。\n2.第八天可领取排行榜奖励,第八天无挑战。", } return localization_global \ No newline at end of file diff --git a/lua/app/config/strings/cn/item.lua b/lua/app/config/strings/cn/item.lua index 069217f5..791a4041 100644 --- a/lua/app/config/strings/cn/item.lua +++ b/lua/app/config/strings/cn/item.lua @@ -474,9 +474,18 @@ local item = { [5400101]={ ["name"]="翩然起舞", ["desc"]="蝴蝶的新衣装。" + }, + [2300201]={ + ["name"]="黑剑士" + }, + [4400201]={ + ["name"]="新月女王" + }, + [5400401]={ + ["name"]="暗月武神" } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/cn/skill_rogue.lua b/lua/app/config/strings/cn/skill_rogue.lua index 4686e733..c6903b2c 100644 --- a/lua/app/config/strings/cn/skill_rogue.lua +++ b/lua/app/config/strings/cn/skill_rogue.lua @@ -885,7 +885,7 @@ local skill_rogue = { ["desc"]="啊,打!沿+方向可额外消除4格。" }, [2400403]={ - ["desc"]="龙哥普攻有5%概率附加眩晕效果,1回合。" + ["desc"]="李普攻有5%概率附加眩晕效果,1回合。" }, [2400404]={ ["desc"]="啊,打!沿X方向可额外消除4格。" @@ -894,7 +894,7 @@ local skill_rogue = { ["desc"]="啊,打!可附加流血效果,2回合。" }, [2400406]={ - ["desc"]="Combo:龙哥普攻对冰霜和流血敌人额外增伤。" + ["desc"]="Combo:李普攻对冰霜和灼烧敌人额外增伤。" }, [2400407]={ ["desc"]="啊,打!附加的眩晕效果概率提高至10%,回合数+1。" @@ -927,7 +927,7 @@ local skill_rogue = { ["desc"]="解锁飞棺降物:额外造成多次技能伤害,附加冰霜效果,1回合。" }, [4400401]={ - ["desc"]="已逝行者普攻有10%概率附加腐败效果,2回合。" + ["desc"]="牧魂者普攻有10%概率附加腐败效果,2回合。" }, [4400402]={ ["desc"]="飞棺降物可附加虚弱效果,2回合。" @@ -936,7 +936,7 @@ local skill_rogue = { ["desc"]="飞棺降物附加的冰霜效果,回合数+1。" }, [4400404]={ - ["desc"]="Combo:已逝行者普攻腐败敌人将恢复生命。" + ["desc"]="Combo:牧魂者普攻腐败敌人将恢复生命。" }, [4400405]={ ["desc"]="飞棺降物释放后为团队附加重生效果,1回合。" diff --git a/lua/app/config/strings/cn/skin.lua b/lua/app/config/strings/cn/skin.lua index 5f8bc7c7..d150dcfb 100644 --- a/lua/app/config/strings/cn/skin.lua +++ b/lua/app/config/strings/cn/skin.lua @@ -36,7 +36,7 @@ local skin = { ["value"]="初始" }, [2300201]={ - ["value"]="Z丫" + ["value"]="黑剑士" }, [24001]={ ["value"]="初始" @@ -89,6 +89,9 @@ local skin = { [44002]={ ["value"]="初始" }, + [4400201]={ + ["value"]="新月女王" + }, [44003]={ ["value"]="初始" }, @@ -121,9 +124,12 @@ local skin = { }, [54004]={ ["value"]="初始" + }, + [5400401]={ + ["value"]="暗月武神" } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/strings/de/avatar.lua b/lua/app/config/strings/de/avatar.lua index 734fab36..437eb5db 100644 --- a/lua/app/config/strings/de/avatar.lua +++ b/lua/app/config/strings/de/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/de/item.lua b/lua/app/config/strings/de/item.lua index 9cc79563..60496521 100644 --- a/lua/app/config/strings/de/item.lua +++ b/lua/app/config/strings/de/item.lua @@ -355,9 +355,18 @@ local item = { }, [5400101]={ + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/de/skin.lua b/lua/app/config/strings/de/skin.lua index ac13dc52..91905e66 100644 --- a/lua/app/config/strings/de/skin.lua +++ b/lua/app/config/strings/de/skin.lua @@ -88,6 +88,9 @@ local skin = { }, [44002]={ + }, + [4400201]={ + }, [44003]={ @@ -121,9 +124,12 @@ local skin = { }, [54004]={ + }, + [5400401]={ + } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/strings/en/avatar.lua b/lua/app/config/strings/en/avatar.lua index da346002..7e0a20cf 100644 --- a/lua/app/config/strings/en/avatar.lua +++ b/lua/app/config/strings/en/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ ["desc"]="Relic Armor" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/en/item.lua b/lua/app/config/strings/en/item.lua index fb125d9f..099e23df 100644 --- a/lua/app/config/strings/en/item.lua +++ b/lua/app/config/strings/en/item.lua @@ -470,9 +470,18 @@ local item = { [5400101]={ ["name"]="Graceful Dance", ["desc"]="Butterfly's new outfit." + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/en/skin.lua b/lua/app/config/strings/en/skin.lua index 8a28401f..f90b2560 100644 --- a/lua/app/config/strings/en/skin.lua +++ b/lua/app/config/strings/en/skin.lua @@ -88,6 +88,9 @@ local skin = { }, [44002]={ ["value"]="Initial" + }, + [4400201]={ + }, [44003]={ ["value"]="Initial" @@ -121,9 +124,12 @@ local skin = { }, [54004]={ ["value"]="Initial" + }, + [5400401]={ + } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/strings/es/avatar.lua b/lua/app/config/strings/es/avatar.lua index f30588c3..95d27b24 100644 --- a/lua/app/config/strings/es/avatar.lua +++ b/lua/app/config/strings/es/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ ["desc"]="Armadura de Ruinas" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/es/item.lua b/lua/app/config/strings/es/item.lua index a84048f0..a55637cc 100644 --- a/lua/app/config/strings/es/item.lua +++ b/lua/app/config/strings/es/item.lua @@ -470,9 +470,18 @@ local item = { [5400101]={ ["name"]="Danza Elegante", ["desc"]="Traje nuevo de Mariposa." + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/es/skin.lua b/lua/app/config/strings/es/skin.lua index 90f59dd4..ed6b63d2 100644 --- a/lua/app/config/strings/es/skin.lua +++ b/lua/app/config/strings/es/skin.lua @@ -88,6 +88,9 @@ local skin = { }, [44002]={ ["value"]="Inicial" + }, + [4400201]={ + }, [44003]={ ["value"]="Inicial" @@ -121,9 +124,12 @@ local skin = { }, [54004]={ ["value"]="Inicial" + }, + [5400401]={ + } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/strings/fr/avatar.lua b/lua/app/config/strings/fr/avatar.lua index 734fab36..437eb5db 100644 --- a/lua/app/config/strings/fr/avatar.lua +++ b/lua/app/config/strings/fr/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/fr/item.lua b/lua/app/config/strings/fr/item.lua index 9cc79563..60496521 100644 --- a/lua/app/config/strings/fr/item.lua +++ b/lua/app/config/strings/fr/item.lua @@ -355,9 +355,18 @@ local item = { }, [5400101]={ + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/fr/skin.lua b/lua/app/config/strings/fr/skin.lua index ac13dc52..91905e66 100644 --- a/lua/app/config/strings/fr/skin.lua +++ b/lua/app/config/strings/fr/skin.lua @@ -88,6 +88,9 @@ local skin = { }, [44002]={ + }, + [4400201]={ + }, [44003]={ @@ -121,9 +124,12 @@ local skin = { }, [54004]={ + }, + [5400401]={ + } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/strings/id/avatar.lua b/lua/app/config/strings/id/avatar.lua index 97b79e5a..faf2771e 100644 --- a/lua/app/config/strings/id/avatar.lua +++ b/lua/app/config/strings/id/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ ["desc"]="Armor Relik" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/id/item.lua b/lua/app/config/strings/id/item.lua index c6e1b55f..cd72615f 100644 --- a/lua/app/config/strings/id/item.lua +++ b/lua/app/config/strings/id/item.lua @@ -470,9 +470,18 @@ local item = { [5400101]={ ["name"]="Tarian Anggun", ["desc"]="Outfit baru Kupu-kupu." + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/id/skin.lua b/lua/app/config/strings/id/skin.lua index 6908b05b..32d88252 100644 --- a/lua/app/config/strings/id/skin.lua +++ b/lua/app/config/strings/id/skin.lua @@ -88,6 +88,9 @@ local skin = { }, [44002]={ ["value"]="Awal" + }, + [4400201]={ + }, [44003]={ ["value"]="Awal" @@ -121,9 +124,12 @@ local skin = { }, [54004]={ ["value"]="Awal" + }, + [5400401]={ + } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/strings/ja/avatar.lua b/lua/app/config/strings/ja/avatar.lua index 9f0298b4..68219f8d 100644 --- a/lua/app/config/strings/ja/avatar.lua +++ b/lua/app/config/strings/ja/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ ["desc"]="レリックアーマー" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/ja/item.lua b/lua/app/config/strings/ja/item.lua index 78e926b2..980b7760 100644 --- a/lua/app/config/strings/ja/item.lua +++ b/lua/app/config/strings/ja/item.lua @@ -470,9 +470,18 @@ local item = { [5400101]={ ["name"]="グレイスフルダンス", ["desc"]="蝴蝶の新スキン。" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/ja/skin.lua b/lua/app/config/strings/ja/skin.lua index 032a18a5..e7e5e1af 100644 --- a/lua/app/config/strings/ja/skin.lua +++ b/lua/app/config/strings/ja/skin.lua @@ -88,6 +88,9 @@ local skin = { }, [44002]={ ["value"]="デフォルト" + }, + [4400201]={ + }, [44003]={ ["value"]="デフォルト" @@ -121,9 +124,12 @@ local skin = { }, [54004]={ ["value"]="デフォルト" + }, + [5400401]={ + } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/strings/ko/avatar.lua b/lua/app/config/strings/ko/avatar.lua index d6003432..bd96be72 100644 --- a/lua/app/config/strings/ko/avatar.lua +++ b/lua/app/config/strings/ko/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ ["desc"]="유적 갑옷" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/ko/item.lua b/lua/app/config/strings/ko/item.lua index da4c04b8..2b2e0460 100644 --- a/lua/app/config/strings/ko/item.lua +++ b/lua/app/config/strings/ko/item.lua @@ -470,9 +470,18 @@ local item = { [5400101]={ ["name"]="날아오르는 춤", ["desc"]="나비의 새 옷" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/ko/skin.lua b/lua/app/config/strings/ko/skin.lua index 0061bb38..152f4df7 100644 --- a/lua/app/config/strings/ko/skin.lua +++ b/lua/app/config/strings/ko/skin.lua @@ -88,6 +88,9 @@ local skin = { }, [44002]={ ["value"]="초기" + }, + [4400201]={ + }, [44003]={ ["value"]="초기" @@ -121,9 +124,12 @@ local skin = { }, [54004]={ ["value"]="초기" + }, + [5400401]={ + } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/strings/pt/avatar.lua b/lua/app/config/strings/pt/avatar.lua index e4258495..92eaf905 100644 --- a/lua/app/config/strings/pt/avatar.lua +++ b/lua/app/config/strings/pt/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ ["desc"]="Armadura das Ruínas" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/pt/item.lua b/lua/app/config/strings/pt/item.lua index e1f6a0a4..f5a2a670 100644 --- a/lua/app/config/strings/pt/item.lua +++ b/lua/app/config/strings/pt/item.lua @@ -470,9 +470,18 @@ local item = { [5400101]={ ["name"]="Dança Fluida", ["desc"]="A nova roupa da Borboleta." + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/pt/skin.lua b/lua/app/config/strings/pt/skin.lua index c5114cef..3a986068 100644 --- a/lua/app/config/strings/pt/skin.lua +++ b/lua/app/config/strings/pt/skin.lua @@ -88,6 +88,9 @@ local skin = { }, [44002]={ ["value"]="Inicial" + }, + [4400201]={ + }, [44003]={ ["value"]="Inicial" @@ -121,9 +124,12 @@ local skin = { }, [54004]={ ["value"]="Inicial" + }, + [5400401]={ + } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/strings/ru/avatar.lua b/lua/app/config/strings/ru/avatar.lua index 734fab36..437eb5db 100644 --- a/lua/app/config/strings/ru/avatar.lua +++ b/lua/app/config/strings/ru/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/ru/item.lua b/lua/app/config/strings/ru/item.lua index 9cc79563..60496521 100644 --- a/lua/app/config/strings/ru/item.lua +++ b/lua/app/config/strings/ru/item.lua @@ -355,9 +355,18 @@ local item = { }, [5400101]={ + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/ru/skin.lua b/lua/app/config/strings/ru/skin.lua index ac13dc52..91905e66 100644 --- a/lua/app/config/strings/ru/skin.lua +++ b/lua/app/config/strings/ru/skin.lua @@ -88,6 +88,9 @@ local skin = { }, [44002]={ + }, + [4400201]={ + }, [44003]={ @@ -121,9 +124,12 @@ local skin = { }, [54004]={ + }, + [5400401]={ + } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/strings/th/avatar.lua b/lua/app/config/strings/th/avatar.lua index f3d0fa76..67d52663 100644 --- a/lua/app/config/strings/th/avatar.lua +++ b/lua/app/config/strings/th/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ ["desc"]="เกราะรบซาก" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/th/item.lua b/lua/app/config/strings/th/item.lua index 50f2004f..7338e96e 100644 --- a/lua/app/config/strings/th/item.lua +++ b/lua/app/config/strings/th/item.lua @@ -470,9 +470,18 @@ local item = { [5400101]={ ["name"]="เยื้องกรายเต้นรำ", ["desc"]="ชุดใหม่ของผีเสื้อ" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/th/skin.lua b/lua/app/config/strings/th/skin.lua index 9228040e..cf61741f 100644 --- a/lua/app/config/strings/th/skin.lua +++ b/lua/app/config/strings/th/skin.lua @@ -88,6 +88,9 @@ local skin = { }, [44002]={ ["value"]="เริ่มต้น" + }, + [4400201]={ + }, [44003]={ ["value"]="เริ่มต้น" @@ -121,9 +124,12 @@ local skin = { }, [54004]={ ["value"]="เริ่มต้น" + }, + [5400401]={ + } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/strings/vi/avatar.lua b/lua/app/config/strings/vi/avatar.lua index 1bab61c3..30be4a00 100644 --- a/lua/app/config/strings/vi/avatar.lua +++ b/lua/app/config/strings/vi/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ ["desc"]="Giáp Di Tích" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/vi/item.lua b/lua/app/config/strings/vi/item.lua index 207020e3..d3f5b5c5 100644 --- a/lua/app/config/strings/vi/item.lua +++ b/lua/app/config/strings/vi/item.lua @@ -470,9 +470,18 @@ local item = { [5400101]={ ["name"]="Nhảy Múa Nhanh Nhẹn", ["desc"]="Quần áo mới của Bươm Bướm." + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/vi/skin.lua b/lua/app/config/strings/vi/skin.lua index d93240ae..90a0c858 100644 --- a/lua/app/config/strings/vi/skin.lua +++ b/lua/app/config/strings/vi/skin.lua @@ -88,6 +88,9 @@ local skin = { }, [44002]={ ["value"]="Ban Đầu" + }, + [4400201]={ + }, [44003]={ ["value"]="Ban Đầu" @@ -121,9 +124,12 @@ local skin = { }, [54004]={ ["value"]="Ban Đầu" + }, + [5400401]={ + } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/strings/zh/avatar.lua b/lua/app/config/strings/zh/avatar.lua index b48d856d..3c685777 100644 --- a/lua/app/config/strings/zh/avatar.lua +++ b/lua/app/config/strings/zh/avatar.lua @@ -124,9 +124,18 @@ local avatar = { }, [1400101]={ ["desc"]="遺跡戰甲" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=avatar,count=42 +data=avatar,count=45 } return config \ No newline at end of file diff --git a/lua/app/config/strings/zh/item.lua b/lua/app/config/strings/zh/item.lua index 40872dbc..db5b7f6b 100644 --- a/lua/app/config/strings/zh/item.lua +++ b/lua/app/config/strings/zh/item.lua @@ -470,9 +470,18 @@ local item = { [5400101]={ ["name"]="翩然起舞", ["desc"]="蝴蝶的新服裝。" + }, + [2300201]={ + + }, + [4400201]={ + + }, + [5400401]={ + } } local config = { -data=item,count=119 +data=item,count=122 } return config \ No newline at end of file diff --git a/lua/app/config/strings/zh/skin.lua b/lua/app/config/strings/zh/skin.lua index 93112cd0..3a4755dd 100644 --- a/lua/app/config/strings/zh/skin.lua +++ b/lua/app/config/strings/zh/skin.lua @@ -88,6 +88,9 @@ local skin = { }, [44002]={ ["value"]="初始" + }, + [4400201]={ + }, [44003]={ ["value"]="初始" @@ -121,9 +124,12 @@ local skin = { }, [54004]={ ["value"]="初始" + }, + [5400401]={ + } } local config = { -data=skin,count=41 +data=skin,count=43 } return config \ No newline at end of file diff --git a/lua/app/config/task_type.lua.meta b/lua/app/config/task_type.lua.meta index 78b0ad77..915fd215 100644 --- a/lua/app/config/task_type.lua.meta +++ b/lua/app/config/task_type.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 06cee74f7d55a4049a81d89bfe1caa02 +guid: a1f8b50c03a5fd747b96cc18be330104 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/global/global_const.lua b/lua/app/global/global_const.lua index c7d0f147..54aaab06 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", @@ -22,7 +23,7 @@ local CONST_PATHS = { ActivityConst = "app/module/activity/activity_const", FourteenDayConst = "app/module/activity/fourteen_day/fourteen_day_const", DungeonRuneConst = "app/module/dungeon_rune/dungeon_rune_const", - DungeonRuneConst = "app/module/dungeon_rune/dungeon_rune_const", + FullMoonConst = "app/module/activity/full_moon/full_moon_const", } if EDITOR_MODE then @@ -312,7 +313,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..5eb4df2f 100644 --- a/lua/app/global/global_func.lua +++ b/lua/app/global/global_func.lua @@ -434,14 +434,63 @@ 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) or + table.containValue(GConst.MATCH_ALL_HURTP_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 +-- 获取任务icon +function GFunc.getTaskIcon(taskType, taskTarget) + if taskType == GConst.TaskConst.TASK_TYPE.X_ARENA_GRADING then + local name = DataManager.ArenaData:getGradingIconName(DataManager.ArenaData:getGradingIdFromScore(taskTarget)) + if name == "arena_dan_1" then + return "13" + elseif name == "arena_dan_2" then + return "14" + elseif name == "arena_dan_3" then + return "12" + end + else + return ConfigManager:getConfig("task_type")[taskType].icon + end +end + +-- 获取任务描述 +function GFunc.getTaskDesc(taskType, taskTarget) + if taskType == GConst.TaskConst.TASK_TYPE.X_ARENA_GRADING then + -- 段位显示文本 + local grading = DataManager.ArenaData:getGradingName(DataManager.ArenaData:getGradingIdFromScore(taskTarget)) + return I18N:getText("task_type", taskType, "desc", grading) + elseif taskType == GConst.TaskConst.TASK_TYPE.X_DUNGEON_ARMOR then + -- 防具副本显示章节和关卡 + local cfg = DataManager.DungeonData:getDungeonDataByType(ModuleManager.MODULE_KEY.DUNGEON_ARMOR):getConfig(taskTarget) + return I18N:getText("task_type", taskType, "desc", cfg.chapter, cfg.stage) + else + return I18N:getText("task_type", taskType, "desc", taskTarget) + end +end + function GFunc.getTimeStrWithMS(time) local m = math.floor(time/60) local s = time%60 @@ -1821,7 +1870,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 +1889,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 +1920,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/activity/full_moon.meta b/lua/app/module/activity/full_moon.meta new file mode 100644 index 00000000..0d157e21 --- /dev/null +++ b/lua/app/module/activity/full_moon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0ee2abea36076ae4d8463dff225a1234 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lua/app/module/activity/full_moon/full_moon_const.lua b/lua/app/module/activity/full_moon/full_moon_const.lua new file mode 100644 index 00000000..826e3f09 --- /dev/null +++ b/lua/app/module/activity/full_moon/full_moon_const.lua @@ -0,0 +1,28 @@ +local FullMoonConst = {} + +-- 活动id +FullMoonConst.ACT_ID = 406 + + +FullMoonConst.ACT_DAYS = 10 + +-- 英雄自选礼包分页显示个数 +FullMoonConst.HERO_GIFT_SHOW_STEP = { + 4,4,5 +} + +-- 界面 +FullMoonConst.PANEL_TYPE = { + TASK = 1, + CHOOSE_HERO = 2, + NEW_HERO = 3, + SKIN = 4, +} + +FullMoonConst.SKIN_CHALLENGE_ID_1 = 1 +FullMoonConst.SKIN_CHALLENGE_ID_2 = 2 + +FullMoonConst.SKIN_GIFT_ID_1 = 200102 +FullMoonConst.SKIN_GIFT_ID_2 = 200202 + +return FullMoonConst \ No newline at end of file diff --git a/lua/app/ui/hero/skin_info_comp.lua.meta b/lua/app/module/activity/full_moon/full_moon_const.lua.meta similarity index 86% rename from lua/app/ui/hero/skin_info_comp.lua.meta rename to lua/app/module/activity/full_moon/full_moon_const.lua.meta index 2dae3444..e03c47f8 100644 --- a/lua/app/ui/hero/skin_info_comp.lua.meta +++ b/lua/app/module/activity/full_moon/full_moon_const.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7209380a6f275fe4fa7fd87e464fde53 +guid: 2ce3abbd5316c744c9ea4254adf1a947 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/module/activity/full_moon/full_moon_manager.lua b/lua/app/module/activity/full_moon/full_moon_manager.lua new file mode 100644 index 00000000..8a32c606 --- /dev/null +++ b/lua/app/module/activity/full_moon/full_moon_manager.lua @@ -0,0 +1,112 @@ +local FullMoonManager = class("FullMoonManager", BaseModule) + +function FullMoonManager:showActMainUI(panelType) + UIManager:showUI("app/ui/activity/full_moon/full_moon_ui", panelType) +end + +-- 初始化计时器 +function FullMoonManager:initTimer() + self:unscheduleGlobal(self.actSid) + + if DataManager.FullMoonData:isOpenTime() then + Logger.logHighlight("圆月活动结束倒计时:"..DataManager.FullMoonData:getEndRemainTime()) + self.actSid = self:performWithDelayGlobal(function() + Logger.logHighlight("圆月活动结束") + EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.ACTIVITY_FULL_MOON_END) + end, DataManager.FullMoonData:getEndRemainTime()) + elseif DataManager.FullMoonData:getStartRemainTime() > 0 then + Logger.logHighlight("圆月活动开始倒计时:"..DataManager.FullMoonData:getStartRemainTime()) + self.actSid = self:performWithDelayGlobal(function() + Logger.logHighlight("圆月活动开始") + self:reqActData() + end, DataManager.FullMoonData:getStartRemainTime()) + end +end + +-- 请求活动数据 +function FullMoonManager:reqActData() + if not DataManager.FullMoonData:isOpen() then + return + end + if not DataManager.FullMoonData:isOpenTime() then + return + end + if self.isReqActData then + return + end + + self.isReqActData = true + self:sendMessage(ProtoMsgType.FromMsgEnum.FullMoonInfoReq, {}, {}, self.rspActData, nil) +end + +function FullMoonManager:rspActData(result) + self.isReqActData = false + DataManager.FullMoonData:setInReset(false) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.FullMoonData:onGetActData(result.full_moon) + end +end + +-- 请求任务奖励 +function FullMoonManager:reqTaskReward(id) + self:sendMessage(ProtoMsgType.FromMsgEnum.FullMoonTaskClaimReq, {id = id}, {}, self.rspTaskReward, BIReport.ITEM_GET_TYPE.FULL_MOON_TASK) +end + +function FullMoonManager:rspTaskReward(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.FullMoonData:onReceivedTaskReward(result.reqData.id, result.finished) + GFunc.showRewardBox(result.rewards) + end +end + +-- 请求任务进度奖励 +function FullMoonManager:reqTaskProgressReward(id) + self:sendMessage(ProtoMsgType.FromMsgEnum.FullMoonRewardClaimReq, {id = id}, {}, self.rspTaskProgressReward, BIReport.ITEM_GET_TYPE.FULL_MOON_TASK_PROG_REWARD) +end + +function FullMoonManager:rspTaskProgressReward(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.FullMoonData:onReceivedTaskProgressReward(result.reqData.id) + GFunc.showRewardBox(result.rewards) + end +end + +-- 自选礼包选择 +function FullMoonManager:reqGiftChooseHero(index) + self:sendMessage(ProtoMsgType.FromMsgEnum.FullMoonCustomGiftChooseReq, {index = index}, {}, self.rspGiftChooseHero, nil) +end + +function FullMoonManager:rspGiftChooseHero(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.FullMoonData:onChooseHeroSuccess(result.reqData.index) + end +end + +-- 皮肤挑战 +function FullMoonManager:skinChallenge(id) + DataManager.FullMoonData:setCurSkinChallengeId(id) + ModuleManager.BattleManager:playBattle(GConst.BattleConst.BATTLE_TYPE.FULL_MOON_SKIN, nil, function() + UIManager:closeAllUI() + ModuleManager.MaincityManager:showMainCityUI() + self:showActMainUI(GConst.FullMoonConst.PANEL_TYPE.SKIN) + end) +end + +-- 请求皮肤关卡挑战奖励 +function FullMoonManager:reqChapterSkinClaim(id, combatReport) + if not combatReport.victory or DataManager.FullMoonData:isReceivedSkinFirstChallengeReward(id) then + ModuleManager.BattleManager:showBattleResultUI(GConst.BattleConst.BATTLE_TYPE.FULL_MOON_SKIN, {}, combatReport or {}, nil, nil, true) + return + end + + self:sendMessage(ProtoMsgType.FromMsgEnum.FullMoonChapterSkinClaimReq, {id = id, combatReport = combatReport}, {}, self.rspChapterSkinClaim, BIReport.ITEM_GET_TYPE.FULL_MOON_SKIN_CHALLENGE_REWARD) +end + +function FullMoonManager:rspChapterSkinClaim(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.FullMoonData:onReceivedSkinChallengeReward(result.reqData.id) + ModuleManager.BattleManager:showBattleResultUI(GConst.BattleConst.BATTLE_TYPE.FULL_MOON_SKIN, result.rewards, result.reqData and result.reqData.combatReport or {}, nil, nil, true) + end +end + +return FullMoonManager \ No newline at end of file diff --git a/lua/app/module/activity/full_moon/full_moon_manager.lua.meta b/lua/app/module/activity/full_moon/full_moon_manager.lua.meta new file mode 100644 index 00000000..96c45dbe --- /dev/null +++ b/lua/app/module/activity/full_moon/full_moon_manager.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 5b71325bf902494459246e0b6b8b0799 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/module/arena/arena_manager.lua b/lua/app/module/arena/arena_manager.lua index eb9b7bda..10047321 100644 --- a/lua/app/module/arena/arena_manager.lua +++ b/lua/app/module/arena/arena_manager.lua @@ -127,7 +127,7 @@ function ArenaManager:rspSettlement(result) if result.err_code == GConst.ERROR_STR.SUCCESS then local reqData = result.reqData - DataManager.ArenaData:onBattleResultReceived(result.settlement, result) + DataManager.ArenaData:onBattleResultReceived(result.score, result.settlement, result) DataManager.ArenaData:initGiftInfo(result.act_arena_gift) local checkCount = 0 if result.settlement.win then diff --git a/lua/app/module/battle/battle_const.lua b/lua/app/module/battle/battle_const.lua index d0d70b9d..905466b4 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 -- 战斗单位身前的坐标 @@ -90,7 +91,8 @@ BattleConst.BATTLE_TYPE = { DUNGEON_ARMOR = "7", ACT_BOSS_RUSH = "8", DUNGEON_RUNE = "9", - ACT_PVP = "10", + ACT_PVP = "11", + FULL_MOON_SKIN = "10", } BattleConst.IS_PVP_BATTLE = { diff --git a/lua/app/module/battle/battle_manager.lua b/lua/app/module/battle/battle_manager.lua index 228aeba1..26349841 100644 --- a/lua/app/module/battle/battle_manager.lua +++ b/lua/app/module/battle/battle_manager.lua @@ -17,6 +17,7 @@ local BATTLE_CONTROLLER = { [BattleConst.BATTLE_TYPE.ACT_BOSS_RUSH] = "app/module/battle/controller/battle_controller_boss_rush", [BattleConst.BATTLE_TYPE.DUNGEON_RUNE] = "app/module/battle/controller/battle_controller_dungeon_rune", [BattleConst.BATTLE_TYPE.ACT_PVP] = "app/module/battle/controller/battle_controller_act_pvp", + [BattleConst.BATTLE_TYPE.FULL_MOON_SKIN] = "app/module/battle/controller/battle_controller_full_moon_skin", } function BattleManager:showPauseUI(battleType, battleController) diff --git a/lua/app/module/battle/controller/battle_controller_dungeon_rune.lua b/lua/app/module/battle/controller/battle_controller_dungeon_rune.lua index 5304806e..2c4e52b3 100644 --- a/lua/app/module/battle/controller/battle_controller_dungeon_rune.lua +++ b/lua/app/module/battle/controller/battle_controller_dungeon_rune.lua @@ -28,9 +28,6 @@ function BattleControllerDungeonRune:initOther() if self.battleUI then local desc = self.dungeonRuneRemainRoundCount - if not self.isBossChapter then - desc = I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_6, self.chapterId) - end self.battleUI:refreshWave(desc, GConst.ATLAS_PATH.COMMON, "common_dec_15") end @@ -161,9 +158,6 @@ function BattleControllerDungeonRune:enterRoundBegin() self.dungeonRuneRemainRoundCount = self.dungeonRuneRemainRoundCount - 1 if self.battleUI then local desc = self.dungeonRuneRemainRoundCount + 1 - if not self.isBossChapter then - desc = I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_6, self.chapterId) - end self.battleUI:refreshWave(desc, GConst.ATLAS_PATH.COMMON, "common_dec_15") end BattleController.enterRoundBegin(self) @@ -186,9 +180,6 @@ function BattleControllerDungeonRune:enterRoundBegin() end if self.battleUI then local desc = self.dungeonRuneRemainRoundCount + 1 - if not self.isBossChapter then - desc = I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_6, self.chapterId) - end self.battleUI:refreshWave(desc, GConst.ATLAS_PATH.COMMON, "common_dec_15") end BattleController.enterRoundBegin(self) @@ -239,6 +230,44 @@ function BattleControllerDungeonRune:getInitBoard() return self.boradList, self.fixedRandomGrid, self.mysteryBoxIndexMap end +function BattleControllerDungeonRune:refreshWave() + if not self.battleUI then + return + end + -- local desc = self.dungeonRuneRemainRoundCount + 1 + -- self.battleUI:refreshWave(desc, GConst.ATLAS_PATH.COMMON, "common_dec_15") +end + +function BattleControllerDungeonRune:getRandomGridInfo() + local list, fixedRandomGrid = self:getInitBoard() + local fixedRandomList = fixedRandomGrid[self.curBoardIndex] + + local gridType = 0 + local elementType + if fixedRandomList and fixedRandomList[1] then + elementType = table.remove(fixedRandomList, 1) + else + local map = self.battleData:getElementTypeMap() + self.getRandomGridInfoIndexs = table.clearOrCreate(self.getRandomGridInfoIndexs) + self.getRandomGridInfoTypeList = table.clearOrCreate(self.getRandomGridInfoTypeList) + for typeName, typeNum in pairs(BattleConst.ELEMENT_TYPE) do + if not self:getSealElementType()[typeNum] and self:getSkillEntityByElement(typeNum) then + local weight = 100 + if self.elementWeightMap and self.elementWeightMap[typeNum] then + weight = weight + self.elementWeightMap[typeNum] + end + table.insert(self.getRandomGridInfoIndexs, weight) + table.insert(self.getRandomGridInfoTypeList, typeNum) + end + end + + local index = GFunc.getRandomIndex(self.getRandomGridInfoIndexs) + elementType = self.getRandomGridInfoTypeList[index] + end + + return {gridType = gridType, elementType = elementType} +end + function BattleControllerDungeonRune:onLoadComplete(...) -- 处理技能 local unlockAllSkill = function(side) @@ -401,7 +430,7 @@ function BattleControllerDungeonRune:getRuneTaskNumByType(taskInfo) elseif taskType == GConst.DungeonRuneConst.TASK_TYPE.BREAK_GRID_TYPE then return self.totalBreakedGridType[taskParams1] or 0 elseif taskType == GConst.DungeonRuneConst.TASK_TYPE.KILL_MONSTER then - return self.getTaskProgress[GConst.BattleConst.BATTLE_TASK_FIELD.KILL_NORMAL_MONSTER] + return self.taskProgress[GConst.BattleConst.BATTLE_TASK_FIELD.KILL_NORMAL_MONSTER] end end @@ -411,7 +440,7 @@ function BattleControllerDungeonRune:getRuneTaskAllOver() local taskProgress = ModuleManager.DungeonRuneManager:getTaskStatus(self, chapterCondition) local taskOver = true for index, info in pairs(taskProgress) do - if not info.over then + if not info.over and index ~= 1 then taskOver = false break end diff --git a/lua/app/module/battle/controller/battle_controller_full_moon_skin.lua b/lua/app/module/battle/controller/battle_controller_full_moon_skin.lua new file mode 100644 index 00000000..ba960300 --- /dev/null +++ b/lua/app/module/battle/controller/battle_controller_full_moon_skin.lua @@ -0,0 +1,63 @@ +local BattleController = require "app/module/battle/controller/battle_controller" +local BattleControllerFullMoonSkin = class("BattleControllerFullMoonSkin", BattleController) + +function BattleControllerFullMoonSkin:getBoardConfig() + return ConfigManager:getConfig("chapter_board_dungeon_shards") +end + +function BattleControllerFullMoonSkin:getChapterConfig() + return ConfigManager:getConfig("chapter_new_skin_fight") +end + +function BattleControllerFullMoonSkin:getChapterId() + return DataManager.FullMoonData:getCurSkinChallengeId() +end + +function BattleControllerFullMoonSkin:controllBattleEnd() + self.combatReport = { + battleType = GConst.BattleConst.BATTLE_TYPE.FULL_MOON_SKIN, + wave = self:getWaveIndex(), + victory = self.victory, + } + local atkReport = {} + local teamEntity = self.battleData:getAtkTeam() + local members = teamEntity:getAllMembers() + for k, v in pairs(members) do + local report = { + heroId = v:getId(), + dmg = v:getDamageCount(), + } + table.insert(atkReport, report) + end + self.combatReport.atkReport = atkReport + ModuleManager.FullMoonManager:reqChapterSkinClaim(self.chapterId, self.combatReport) +end + +function BattleControllerFullMoonSkin:postWaveOver(atkDead, isQuit) + local deathType = BIReport.FIGHT_DEATH_TYPE.SURVIVE + local waveEndType = BIReport.FIGHT_WAVE_END_TYPE.WIN + if atkDead then + if self.isBossWave then + deathType = BIReport.FIGHT_DEATH_TYPE.BOSS_FAIL + else + deathType = BIReport.FIGHT_DEATH_TYPE.NORMAL_FAIL + end + waveEndType = BIReport.FIGHT_WAVE_END_TYPE.FAIL + end + + if isQuit then + waveEndType = BIReport.FIGHT_WAVE_END_TYPE.QUIT + end + + local duration = self.waveDurationTime + local totalTime = self.totalDurationTime + local isFianlStep = self:getWaveIndex() >= self.maxWaveIndex + + BIReport:postFightEnd(GConst.BattleConst.BATTLE_TYPE.FULL_MOON_SKIN, self.battleData, self.chapterId, self:getWaveIndex(), duration, totalTime, self.eliminateCount, self.eliminateTotalCount, waveEndType, deathType, 0, true, isFianlStep, self.maxLinkCount) +end + +function BattleControllerFullMoonSkin:postFightStart() + BIReport:postFightBegin(GConst.BattleConst.BATTLE_TYPE.FULL_MOON_SKIN, self:getWaveIndex(), self.chapterId, 0, 0) +end + +return BattleControllerFullMoonSkin \ No newline at end of file diff --git a/lua/app/module/battle/controller/battle_controller_full_moon_skin.lua.meta b/lua/app/module/battle/controller/battle_controller_full_moon_skin.lua.meta new file mode 100644 index 00000000..f49f8bd0 --- /dev/null +++ b/lua/app/module/battle/controller/battle_controller_full_moon_skin.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4d3f99278cc5ab44e81190f7b9819a0b +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/module/battle/controller/battle_controller_pvp.lua b/lua/app/module/battle/controller/battle_controller_pvp.lua index edc3da4b..ef91dfb1 100644 --- a/lua/app/module/battle/controller/battle_controller_pvp.lua +++ b/lua/app/module/battle/controller/battle_controller_pvp.lua @@ -320,4 +320,37 @@ function BattleControllerPVP:refreshWave() self.battleUI:refreshWave(self.waveRoundCount[self:getWaveIndex()] or 0) end +function BattleControllerPVP:getRandomGridInfo() + local list, fixedRandomGrid = self:getInitBoard() + local fixedRandomList = fixedRandomGrid[self.curBoardIndex] + + local gridType = 0 + local elementType + if fixedRandomList and fixedRandomList[1] then + elementType = table.remove(fixedRandomList, 1) + else + local map = self.battleData:getElementTypeMap() + self.getRandomGridInfoIndexs = table.clearOrCreate(self.getRandomGridInfoIndexs) + self.getRandomGridInfoTypeList = table.clearOrCreate(self.getRandomGridInfoTypeList) + for typeName, typeNum in pairs(BattleConst.ELEMENT_TYPE) do + if not self:getSealElementType()[typeNum] and self:getSkillEntityByElement(typeNum) then + local weight = BattleConst.ELEMENT_WIGHT -- 改为平等权重 + if self.elementWeightMap and self.elementWeightMap[typeNum] then + weight = weight + self.elementWeightMap[typeNum] + end + if weight > BattleConst.MAX_ELEMENT_WIGHT then + weight = BattleConst.MAX_ELEMENT_WIGHT + end + table.insert(self.getRandomGridInfoIndexs, weight) + table.insert(self.getRandomGridInfoTypeList, typeNum) + end + end + + local index = GFunc.getRandomIndex(self.getRandomGridInfoIndexs) + elementType = self.getRandomGridInfoTypeList[index] + end + + return {gridType = gridType, elementType = elementType} +end + return BattleControllerPVP \ No newline at end of file diff --git a/lua/app/module/dungeon_rune/dungeon_rune_const.lua b/lua/app/module/dungeon_rune/dungeon_rune_const.lua index 23f29d2b..cf31da33 100644 --- a/lua/app/module/dungeon_rune/dungeon_rune_const.lua +++ b/lua/app/module/dungeon_rune/dungeon_rune_const.lua @@ -25,7 +25,7 @@ DungeonRuneConst.TASK_ICON = { [4] = "dungeon_rune_task_vine", [5] = "dungeon_rune_task_ice", [7] = "dungeon_rune_task_stone_3", - [12] = "dungeon_rune_task_stump_1", + [12] = "dungeon_rune_task_leaf", [13] = "dungeon_rune_task_jelly", [18] = "dungeon_rune_task_stump_1", [19] = "dungeon_rune_task_stump_2", 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..96390175 100644 --- a/lua/app/module/item/item_const.lua +++ b/lua/app/module/item/item_const.lua @@ -19,6 +19,8 @@ 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_ID_FULL_MOON = 56 ItemConst.ITEM_TYPE = { RES = 1, diff --git a/lua/app/module/maincity/maincity_const.lua b/lua/app/module/maincity/maincity_const.lua index b9828464..0d293c36 100644 --- a/lua/app/module/maincity/maincity_const.lua +++ b/lua/app/module/maincity/maincity_const.lua @@ -36,6 +36,7 @@ MainCityConst.LEFT_SIDE_BARS = { "app/ui/main_city/cell/side_bar_hero_fund_cell", "app/ui/main_city/cell/side_bar_seven_days_cell", "app/ui/main_city/cell/side_bar_activity_cell", + "app/ui/main_city/cell/side_bar_full_moon_cell", -- gm放最后一个 "app/ui/main_city/cell/side_bar_gm_cell" } 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..12a4ccec --- /dev/null +++ b/lua/app/module/runes/runes_const.lua @@ -0,0 +1,32 @@ +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.CHECK_QLT_LOCK = 7 + +-- 最大属性栏位数 +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/module/runes/runes_const.lua.meta b/lua/app/module/runes/runes_const.lua.meta new file mode 100644 index 00000000..64b9aa20 --- /dev/null +++ b/lua/app/module/runes/runes_const.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4bda2a68bd04f8e4993df04a2b3878c7 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/module/runes/runes_manager.lua b/lua/app/module/runes/runes_manager.lua new file mode 100644 index 00000000..67426a1f --- /dev/null +++ b/lua/app/module/runes/runes_manager.lua @@ -0,0 +1,47 @@ +local RunesManager = class("RunesManager", BaseModule) + +-- 锁定和解锁属性栏 +function RunesManager:reqChangeLockGrid(heroId, index, isLock) + if self.isReqLockChange then + return + end + self.isReqLockChange = true + + self:sendMessage(ProtoMsgType.FromMsgEnum.RuneLockReq, {hero_id = heroId, grid_num = index, lock = isLock}, {}, self.rspChangeLockGrid) +end + +function RunesManager:rspChangeLockGrid(result) + self.isReqLockChange = false + if result.hero_girds then + DataManager.RunesData:onGridLockSuccess(result.reqData.hero_id, result.hero_girds.grids) + end +end + +-- 淬炼 +function RunesManager:reqQuenching(heroId, autoCount) + if self.isReqQuenching then + 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) + + if result.auto_count and result.auto_count > 0 then + ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_RUNES_QUENCHING, result.auto_count) + else + ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_RUNES_QUENCHING, 1) + end + 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/task/task_const.lua b/lua/app/module/task/task_const.lua index c2a102d5..af2ab1a6 100644 --- a/lua/app/module/task/task_const.lua +++ b/lua/app/module/task/task_const.lua @@ -40,6 +40,9 @@ TaskConst.TASK_TYPE = { X_OPEN_CHAPTER_BOX = 37, -- 开启主线宝箱x个 X_UPGRADE_WEAPON = 38, -- 武器升级x次 X_UPGRADE_ARMOR = 39, -- 防具升级x次 + X_BUY_ANYONE = 40, -- 任意购买行为x次 + X_RUNES_GETED_MATERIALS = 41, -- 获得符文材料x个 + X_RUNES_QUENCHING = 42, -- 符文锻造x次 } return TaskConst \ No newline at end of file diff --git a/lua/app/module/task/task_manager.lua b/lua/app/module/task/task_manager.lua index 0f6ad958..662e5666 100644 --- a/lua/app/module/task/task_manager.lua +++ b/lua/app/module/task/task_manager.lua @@ -310,6 +310,18 @@ function TaskManager:xUpgradeArmor() self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_UPGRADE_ARMOR, 1) end +function TaskManager:xBuyAnyone() + self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_BUY_ANYONE, 1) +end + +function TaskManager:xRunesGetedMaterials(count) + self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_RUNES_GETED_MATERIALS, count) +end + +function TaskManager:xRunesQuenching(count) + self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_RUNES_QUENCHING, count) +end + ---- 没有特殊说明,方法均返回任务增量 TaskManager.TYPE_DEAL_FUNC = { [GConst.TaskConst.TASK_TYPE.X_WATCH_AD] = TaskManager.xWatchAd, @@ -349,6 +361,9 @@ TaskManager.TYPE_DEAL_FUNC = { [GConst.TaskConst.TASK_TYPE.X_OPEN_CHAPTER_BOX] = TaskManager.xOpenChapterBox, [GConst.TaskConst.TASK_TYPE.X_UPGRADE_WEAPON] = TaskManager.xUpgradeWeapon, [GConst.TaskConst.TASK_TYPE.X_UPGRADE_ARMOR] = TaskManager.xUpgradeArmor, + [GConst.TaskConst.TASK_TYPE.X_BUY_ANYONE] = TaskManager.xBuyAnyone, + [GConst.TaskConst.TASK_TYPE.X_RUNES_GETED_MATERIALS] = TaskManager.xRunesGetedMaterials, + [GConst.TaskConst.TASK_TYPE.X_RUNES_QUENCHING] = TaskManager.xRunesQuenching, } function TaskManager:taskGoto(taskType) diff --git a/lua/app/module/tips/tips_manager.lua b/lua/app/module/tips/tips_manager.lua index 059bfd01..a54bb73e 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) @@ -110,6 +110,16 @@ function TipsManager:showDescTips(desc, tarPrefabObj, alignType) UIManager:showUI("app/ui/tips/desc_tips", params) end +function TipsManager:showChooseRewardTips(title, desc, rewards, callback) + local params = { + title = title, + desc = desc, + rewards = rewards, + callback = callback, + } + UIManager:showUI("app/ui/tips/choose_reward_tips", params) +end + function TipsManager:showHeroFragmentTips(itemId) local params = { itemId = itemId diff --git a/lua/app/module/tutorial/tutorial_const.lua b/lua/app/module/tutorial/tutorial_const.lua index 0b5f2c65..59d3a112 100644 --- a/lua/app/module/tutorial/tutorial_const.lua +++ b/lua/app/module/tutorial/tutorial_const.lua @@ -12,6 +12,7 @@ TutorialConst.UNLOCK_DUNGEON = 6 TutorialConst.UNLOCK_ARENA = 7 TutorialConst.WEAPON_DUNGEON = 8 TutorialConst.ARMOR_DUNGEON = 9 +TutorialConst.RUNE_DUNGEON = 10 TutorialConst.TUTORIAL_TYPE = { CLICK = 1, -- 点击任意区域 diff --git a/lua/app/proto/proto_msg_type.lua b/lua/app/proto/proto_msg_type.lua index 0eb18187..0a3ffde0 100644 --- a/lua/app/proto/proto_msg_type.lua +++ b/lua/app/proto/proto_msg_type.lua @@ -1,5 +1,7 @@ local ProtoMsgType = { FromMsgId = { + [5949102] = "FullMoonCustomGiftChooseReq", + [5950935] = "FullMoonCustomGiftChooseRsp", [109633552] = "PigLevelDownNtf", [109700242] = "PigLevelDownReq", [109702075] = "PigLevelDownRsp", @@ -77,6 +79,8 @@ local ProtoMsgType = { [1433354371] = "ChapterDailyChallengeResetRsp", [1435947790] = "AppStorePaidReq", [1435949623] = "AppStorePaidRsp", + [1459267856] = "FullMoonChapterSkinClaimReq", + [1459269689] = "FullMoonChapterSkinClaimRsp", [1471116409] = "BindReq", [1471118242] = "BindRsp", [1478006910] = "BossRushBountyClaimReq", @@ -123,6 +127,8 @@ local ProtoMsgType = { [2140119902] = "ActivityPVPDecideHeroRsp", [2164009445] = "BossRushStartReq", [2164011278] = "BossRushStartRsp", + [2194306819] = "FullMoonTaskClaimReq", + [2194308652] = "FullMoonTaskClaimRsp", [2198847028] = "BossRushBoughtNtf", [2224825865] = "ChapterRuneChallengeSettlementReq", [2224827698] = "ChapterRuneChallengeSettlementRsp", @@ -183,6 +189,8 @@ local ProtoMsgType = { [3038153756] = "TaskDailyRefreshRsp", [3039097236] = "SummerBountyClaimReq", [3039099069] = "SummerBountyClaimRsp", + [3050641832] = "FullMoonInfoReq", + [3050643665] = "FullMoonInfoRsp", [3058879524] = "PVPRankReq", [3058881357] = "PVPRankRsp", [3062745642] = "FundAwardReq", @@ -264,6 +272,8 @@ local ProtoMsgType = { [3904150593] = "GMRsp", [3933875617] = "ChapterStartReq", [3933877450] = "ChapterStartRsp", + [3991710133] = "FullMoonRewardClaimReq", + [3991711966] = "FullMoonRewardClaimRsp", [4010728288] = "ChapterRuneBuySliverReq", [4010730121] = "ChapterRuneBuySliverRsp", [4015942008] = "RuneQuenchingReq", @@ -290,6 +300,8 @@ local ProtoMsgType = { [4256335780] = "ExistRsp", }, FromMsgToId = { + FullMoonCustomGiftChooseReq = 5949102, + FullMoonCustomGiftChooseRsp = 5950935, PigLevelDownNtf = 109633552, PigLevelDownReq = 109700242, PigLevelDownRsp = 109702075, @@ -367,6 +379,8 @@ local ProtoMsgType = { ChapterDailyChallengeResetRsp = 1433354371, AppStorePaidReq = 1435947790, AppStorePaidRsp = 1435949623, + FullMoonChapterSkinClaimReq = 1459267856, + FullMoonChapterSkinClaimRsp = 1459269689, BindReq = 1471116409, BindRsp = 1471118242, BossRushBountyClaimReq = 1478006910, @@ -413,6 +427,8 @@ local ProtoMsgType = { ActivityPVPDecideHeroRsp = 2140119902, BossRushStartReq = 2164009445, BossRushStartRsp = 2164011278, + FullMoonTaskClaimReq = 2194306819, + FullMoonTaskClaimRsp = 2194308652, BossRushBoughtNtf = 2198847028, ChapterRuneChallengeSettlementReq = 2224825865, ChapterRuneChallengeSettlementRsp = 2224827698, @@ -473,6 +489,8 @@ local ProtoMsgType = { TaskDailyRefreshRsp = 3038153756, SummerBountyClaimReq = 3039097236, SummerBountyClaimRsp = 3039099069, + FullMoonInfoReq = 3050641832, + FullMoonInfoRsp = 3050643665, PVPRankReq = 3058879524, PVPRankRsp = 3058881357, FundAwardReq = 3062745642, @@ -554,6 +572,8 @@ local ProtoMsgType = { GMRsp = 3904150593, ChapterStartReq = 3933875617, ChapterStartRsp = 3933877450, + FullMoonRewardClaimReq = 3991710133, + FullMoonRewardClaimRsp = 3991711966, ChapterRuneBuySliverReq = 4010728288, ChapterRuneBuySliverRsp = 4010730121, RuneQuenchingReq = 4015942008, @@ -580,6 +600,8 @@ local ProtoMsgType = { ExistRsp = 4256335780, }, FromMsgEnum = { + FullMoonCustomGiftChooseReq = "FullMoonCustomGiftChooseReq", + FullMoonCustomGiftChooseRsp = "FullMoonCustomGiftChooseRsp", PigLevelDownNtf = "PigLevelDownNtf", PigLevelDownReq = "PigLevelDownReq", PigLevelDownRsp = "PigLevelDownRsp", @@ -657,6 +679,8 @@ local ProtoMsgType = { ChapterDailyChallengeResetRsp = "ChapterDailyChallengeResetRsp", AppStorePaidReq = "AppStorePaidReq", AppStorePaidRsp = "AppStorePaidRsp", + FullMoonChapterSkinClaimReq = "FullMoonChapterSkinClaimReq", + FullMoonChapterSkinClaimRsp = "FullMoonChapterSkinClaimRsp", BindReq = "BindReq", BindRsp = "BindRsp", BossRushBountyClaimReq = "BossRushBountyClaimReq", @@ -703,6 +727,8 @@ local ProtoMsgType = { ActivityPVPDecideHeroRsp = "ActivityPVPDecideHeroRsp", BossRushStartReq = "BossRushStartReq", BossRushStartRsp = "BossRushStartRsp", + FullMoonTaskClaimReq = "FullMoonTaskClaimReq", + FullMoonTaskClaimRsp = "FullMoonTaskClaimRsp", BossRushBoughtNtf = "BossRushBoughtNtf", ChapterRuneChallengeSettlementReq = "ChapterRuneChallengeSettlementReq", ChapterRuneChallengeSettlementRsp = "ChapterRuneChallengeSettlementRsp", @@ -763,6 +789,8 @@ local ProtoMsgType = { TaskDailyRefreshRsp = "TaskDailyRefreshRsp", SummerBountyClaimReq = "SummerBountyClaimReq", SummerBountyClaimRsp = "SummerBountyClaimRsp", + FullMoonInfoReq = "FullMoonInfoReq", + FullMoonInfoRsp = "FullMoonInfoRsp", PVPRankReq = "PVPRankReq", PVPRankRsp = "PVPRankRsp", FundAwardReq = "FundAwardReq", @@ -844,6 +872,8 @@ local ProtoMsgType = { GMRsp = "GMRsp", ChapterStartReq = "ChapterStartReq", ChapterStartRsp = "ChapterStartRsp", + FullMoonRewardClaimReq = "FullMoonRewardClaimReq", + FullMoonRewardClaimRsp = "FullMoonRewardClaimRsp", ChapterRuneBuySliverReq = "ChapterRuneBuySliverReq", ChapterRuneBuySliverRsp = "ChapterRuneBuySliverRsp", RuneQuenchingReq = "RuneQuenchingReq", diff --git a/lua/app/ui/activity/full_moon.meta b/lua/app/ui/activity/full_moon.meta new file mode 100644 index 00000000..2905de6f --- /dev/null +++ b/lua/app/ui/activity/full_moon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1332d53647109d0499e22a6659ce1f1e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lua/app/ui/activity/full_moon/cell.meta b/lua/app/ui/activity/full_moon/cell.meta new file mode 100644 index 00000000..4dbd0df8 --- /dev/null +++ b/lua/app/ui/activity/full_moon/cell.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd6f0549559c9064790b07dc590f84a4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lua/app/ui/activity/full_moon/cell/full_moon_task_cell.lua b/lua/app/ui/activity/full_moon/cell/full_moon_task_cell.lua new file mode 100644 index 00000000..2afbfc74 --- /dev/null +++ b/lua/app/ui/activity/full_moon/cell/full_moon_task_cell.lua @@ -0,0 +1,60 @@ +local FullMoonTaskCell = class("FullMoonTaskCell", BaseCell) + +function FullMoonTaskCell:init() + local uiMap = self:getUIMap() + self.imgTaskBg = uiMap["full_moon_task_cell.img_task_bg"] + self.imgTask = uiMap["full_moon_task_cell.img_task_bg.img_task"] + self.txDesc = uiMap["full_moon_task_cell.tx_desc"] + self.imgProg = uiMap["full_moon_task_cell.prog.img_prog"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) + self.txProg = uiMap["full_moon_task_cell.prog.tx_prog"] + self.txRewardName = uiMap["full_moon_task_cell.tx_reward_name"] + self.imgRewardIcon = uiMap["full_moon_task_cell.icon_reward"] + self.txNum = uiMap["full_moon_task_cell.tx_num"] + self.finish = uiMap["full_moon_task_cell.finish"] + self.txFinish = uiMap["full_moon_task_cell.finish.bg.tx_finish"] + + self:addClickListener(function() + if DataManager.FullMoonData:canGetTaskReward(self.taskId) and not DataManager.FullMoonData:isReceivedTaskReward(self.taskId) then + ModuleManager.FullMoonManager:reqTaskReward(self.taskId) + end + end) +end + +function FullMoonTaskCell:refresh(id) + self.taskId = id + local taskType = DataManager.FullMoonData:getTaskType(self.taskId) + local total = DataManager.FullMoonData:getTaskTarget(self.taskId) + local cur = DataManager.FullMoonData:getTaskProgress(self.taskId) + local reward = DataManager.FullMoonData:getTaskReward(self.taskId) + self.imgTask:setSprite(GConst.ATLAS_PATH.ICON_TASK, GFunc.getTaskIcon(taskType, total)) + self.txDesc:setText(GFunc.getTaskDesc(taskType, total)) + self.imgProg.value = cur / total + self.txProg:setText(cur .. "/" .. total) + self.txRewardName:setText(GFunc.getRewardName(reward.type, reward.id)) + self.imgRewardIcon:setSprite(GFunc.getRewardIconRes(reward.type, reward.id)) + self.txNum:setText(GFunc.getRewardNum(reward)) + self.txFinish:setText(I18N:getGlobalText(I18N.GlobalConst.STR_COMPLETED)) + + self.finish:setActive(false) + self.baseObject:removeRedPoint() + if DataManager.FullMoonData:canGetTaskReward(self.taskId) then + -- 已完成 + if DataManager.FullMoonData:isReceivedTaskReward(self.taskId) then + -- 已领取 + self.baseObject:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_bg_2") + self.imgTaskBg:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_board_3") + self.finish:setActive(true) + else + -- 未领取 + self.baseObject:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_bg_3") + self.imgTaskBg:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_board_4") + self.baseObject:addRedPoint(260, 70, 0.8) + end + else + --未完成 + self.baseObject:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_bg_2") + self.imgTaskBg:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_board_3") + end +end + +return FullMoonTaskCell \ No newline at end of file diff --git a/lua/app/ui/activity/full_moon/cell/full_moon_task_cell.lua.meta b/lua/app/ui/activity/full_moon/cell/full_moon_task_cell.lua.meta new file mode 100644 index 00000000..34a17de7 --- /dev/null +++ b/lua/app/ui/activity/full_moon/cell/full_moon_task_cell.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7f22f15dc9b4a6d4385ac1f17fd683b4 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/full_moon/cell/full_moon_task_prog_cell.lua b/lua/app/ui/activity/full_moon/cell/full_moon_task_prog_cell.lua new file mode 100644 index 00000000..b2054696 --- /dev/null +++ b/lua/app/ui/activity/full_moon/cell/full_moon_task_prog_cell.lua @@ -0,0 +1,34 @@ +local FullMoonTaskProgCell = class("FullMoonTaskProgCell", BaseCell) + +function FullMoonTaskProgCell:init() + local uiMap = self:getUIMap() + self.imgProg = uiMap["prog_reward.img_prog"] + self.txProg = uiMap["prog_reward.img_prog.tx_prog"] + self.rewardCell = uiMap["prog_reward.reward_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) +end + +function FullMoonTaskProgCell:refresh(id) + local canGet = DataManager.FullMoonData:isReachTaskProgressReward(id) + local isReceived = DataManager.FullMoonData:isReceivedTaskProgressReward(id) + + self.txProg:setText(DataManager.FullMoonData:getTaskProgressTarget(id)) + self.rewardCell:refreshByConfig(DataManager.FullMoonData:getTaskProgressReward(id), isReceived, isReceived) + if canGet then + self.imgProg:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_bg_7") + if not isReceived then + self.rewardCell.baseObject:addRedPoint(50, 50, 0.6) + self.rewardCell:addClickListener(function() + ModuleManager.FullMoonManager:reqTaskProgressReward(id) + end) + else + self.rewardCell.baseObject:removeRedPoint() + self.rewardCell:addClickListener(nil) + end + else + self.imgProg:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_bg_8") + self.rewardCell.baseObject:removeRedPoint() + self.rewardCell:addClickListener(nil) + end +end + +return FullMoonTaskProgCell \ No newline at end of file diff --git a/lua/app/ui/activity/full_moon/cell/full_moon_task_prog_cell.lua.meta b/lua/app/ui/activity/full_moon/cell/full_moon_task_prog_cell.lua.meta new file mode 100644 index 00000000..aaef64f4 --- /dev/null +++ b/lua/app/ui/activity/full_moon/cell/full_moon_task_prog_cell.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 77ab55a8c675c344f86e75e0c68481dc +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/full_moon/full_moon_choose_hero_comp.lua b/lua/app/ui/activity/full_moon/full_moon_choose_hero_comp.lua new file mode 100644 index 00000000..9da49232 --- /dev/null +++ b/lua/app/ui/activity/full_moon/full_moon_choose_hero_comp.lua @@ -0,0 +1,130 @@ +local FullMoonChooseHeroComp = class("FullMoonChooseHeroComp", LuaComponent) + +function FullMoonChooseHeroComp:init() + local uiMap = self:getUIMap() + -- self.spineBanner = uiMap["choose_hero_panel.spine_banner"] + self.txTitle = uiMap["choose_hero_panel.tx_title"] + self.txTips = uiMap["choose_hero_panel.tx_tips"] + self.btnBuy = uiMap["choose_hero_panel.btn_buy"] + self.txBuy = uiMap["choose_hero_panel.btn_buy.tx_buy"] + self.rewards = uiMap["choose_hero_panel.rewards"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT) + self.rewardCells = {} + for i = 1, 3 do + table.insert(self.rewardCells, uiMap["choose_hero_panel.rewards.pop_reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.POP_REWARD_CELL)) + end + self.gifts = uiMap["choose_hero_panel.gifts"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT) + self.giftItems = {} + for i = 1, 5 do + table.insert(self.giftItems, uiMap["choose_hero_panel.gifts.gift_" .. i]) + end + + -- self.spineBanner:playAnim("animation", true, true) + self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_4)) + self.txTips:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_6)) + + self.btnBuy:addClickListener(function() + if not DataManager.FullMoonData:getChooseHeroIndex() then + self:showChoose() + return + end + PayManager:purchasePackage(self.selectGiftId, PayManager.PURCHARSE_TYPE.ACT_GIFT) + end) +end + +function FullMoonChooseHeroComp:refresh() + self.curGiftId = DataManager.FullMoonData:getCurChooseHeroGiftId() + self.selectGiftId = self.curGiftId + self:refreshGifts() +end + +-- 刷新礼包显示 +function FullMoonChooseHeroComp:refreshGifts() + local chooseFunc = function() + self:showChoose() + end + local gift = DataManager.ShopData:getActGiftConfig()[self.selectGiftId] + + self.txTips:setActive(self.selectGiftId ~= self.curGiftId) + self.btnBuy:setActive(self.selectGiftId == self.curGiftId) + if not DataManager.FullMoonData:isGiftBought(self.selectGiftId) 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.rewardCells) do + if gift.reward[index] then + cell:setVisible(true) + cell:refresh(gift.reward[index].id, gift.reward[index].num, true) + elseif index == #gift.reward + 1 then + cell:setVisible(true) + if DataManager.FullMoonData:getChooseHeroIndex() then + local choose = DataManager.FullMoonData:getChooseRewards(self.selectGiftId, true)[DataManager.FullMoonData:getChooseHeroIndex()] + -- Logger.logHighlight(DataManager.FullMoonData:getChooseHeroIndex()) + cell:refresh(choose.id, choose.num, true) + cell:refreshChoose(chooseFunc) + else + cell:refreshOnlyChoose(chooseFunc) + end + else + cell:setVisible(false) + end + end + self.rewards:RefreshLayout() + + local ids = DataManager.FullMoonData:getCurStepChooseHeroGiftIds() + for index, item in ipairs(self.giftItems) do + if ids[index] then + item:setActive(true) + local map = item:genAllChildren() + local imgGift = map["img_gift"] + local imgBught = map["img_bught"] + local imgSelect = map["img_select"] + + if ids[index] == self.curGiftId then + imgGift:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_chest_2") + elseif ids[index] > self.curGiftId then + imgGift:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_chest_3") + else + imgGift:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_chest_1") + end + imgSelect:setActive(ids[index] == self.selectGiftId) + imgBught:setActive(DataManager.FullMoonData:isGiftBought(ids[index])) + item:addClickListener(function() + self:onSelectGift(ids[index]) + end) + else + item:setActive(false) + end + end + self.gifts:RefreshLayout() +end + +-- 选择礼包 +function FullMoonChooseHeroComp:onSelectGift(id) + if id < self.curGiftId then + -- 已购礼包不允许点击 + return + end + self.selectGiftId = id + self:refreshGifts() +end + +-- 自选弹窗 +function FullMoonChooseHeroComp:showChoose() + ModuleManager.TipsManager:showChooseRewardTips( + I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_7), + I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_8), + DataManager.FullMoonData:getChooseRewards(self.selectGiftId), + function(index) + index = DataManager.FullMoonData:getChooseRewardsIndexByCanChooseIndex(index) + ModuleManager.FullMoonManager:reqGiftChooseHero(index) + end + ) +end + +return FullMoonChooseHeroComp \ No newline at end of file diff --git a/lua/app/ui/activity/full_moon/full_moon_choose_hero_comp.lua.meta b/lua/app/ui/activity/full_moon/full_moon_choose_hero_comp.lua.meta new file mode 100644 index 00000000..c139f7ee --- /dev/null +++ b/lua/app/ui/activity/full_moon/full_moon_choose_hero_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ff32f3cd22038324e8daab0f06524093 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/full_moon/full_moon_new_hero_comp.lua b/lua/app/ui/activity/full_moon/full_moon_new_hero_comp.lua new file mode 100644 index 00000000..0f496bac --- /dev/null +++ b/lua/app/ui/activity/full_moon/full_moon_new_hero_comp.lua @@ -0,0 +1,100 @@ +local FullMoonNewHeroComp = class("FullMoonNewHeroComp", LuaComponent) + +function FullMoonNewHeroComp:init() + local uiMap = self:getUIMap() + -- self.spineBanner = uiMap["new_hero_panel.spine_banner"] + self.txTitle = uiMap["new_hero_panel.tx_title"] + self.txTips = uiMap["new_hero_panel.tx_tips"] + self.btnBuy = uiMap["new_hero_panel.btn_buy"] + self.txBuy = uiMap["new_hero_panel.btn_buy.tx_buy"] + self.rewards = uiMap["new_hero_panel.rewards"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT) + self.rewardCells = {} + for i = 1, 3 do + table.insert(self.rewardCells, uiMap["new_hero_panel.rewards.pop_reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.POP_REWARD_CELL)) + end + self.gifts = uiMap["new_hero_panel.gifts"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT) + self.giftItems = {} + for i = 1, 5 do + table.insert(self.giftItems, uiMap["new_hero_panel.gifts.gift_" .. i]) + end + + -- self.spineBanner:playAnim("animation", true, true) + self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_5)) + self.txTips:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_6)) + + self.btnBuy:addClickListener(function() + PayManager:purchasePackage(self.selectGiftId, PayManager.PURCHARSE_TYPE.ACT_GIFT) + end) +end + +function FullMoonNewHeroComp:refresh() + self.curGiftId = DataManager.FullMoonData:getCurNewHeroGiftId() + self.selectGiftId = self.curGiftId + self:refreshGifts() +end + +-- 刷新礼包显示 +function FullMoonNewHeroComp:refreshGifts() + local gift = DataManager.ShopData:getActGiftConfig()[self.selectGiftId] + + self.txTips:setActive(self.selectGiftId ~= self.curGiftId) + self.btnBuy:setActive(self.selectGiftId == self.curGiftId) + if not DataManager.FullMoonData:isGiftBought(self.selectGiftId) 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.rewardCells) do + if gift.reward[index] then + cell:setVisible(true) + cell:refresh(gift.reward[index].id, gift.reward[index].num, true) + else + cell:setVisible(false) + end + end + self.rewards:RefreshLayout() + + local ids = DataManager.FullMoonData:getCurStepNewHeroGiftIds() + for index, item in ipairs(self.giftItems) do + if ids[index] then + item:setActive(true) + local map = item:genAllChildren() + local imgGift = map["img_gift"] + local imgBught = map["img_bught"] + local imgSelect = map["img_select"] + + if ids[index] == self.curGiftId then + imgGift:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_chest_2") + elseif ids[index] > self.curGiftId then + imgGift:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_chest_3") + else + imgGift:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_chest_1") + end + imgSelect:setActive(ids[index] == self.selectGiftId) + imgBught:setActive(DataManager.FullMoonData:isGiftBought(ids[index])) + item:addClickListener(function() + self:onSelectGift(ids[index]) + end) + else + item:setActive(false) + end + end + self.gifts:RefreshLayout() +end + +-- 选择礼包 +function FullMoonNewHeroComp:onSelectGift(id) + if id < self.curGiftId then + -- 已购礼包不允许点击 + return + end + self.selectGiftId = id + self:refreshGifts() +end + +return FullMoonNewHeroComp \ No newline at end of file diff --git a/lua/app/ui/activity/full_moon/full_moon_new_hero_comp.lua.meta b/lua/app/ui/activity/full_moon/full_moon_new_hero_comp.lua.meta new file mode 100644 index 00000000..981d90b7 --- /dev/null +++ b/lua/app/ui/activity/full_moon/full_moon_new_hero_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8d0203e3e0bcce8458287cbbb13b18be +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/full_moon/full_moon_skin_comp.lua b/lua/app/ui/activity/full_moon/full_moon_skin_comp.lua new file mode 100644 index 00000000..e1c43dde --- /dev/null +++ b/lua/app/ui/activity/full_moon/full_moon_skin_comp.lua @@ -0,0 +1,144 @@ +local FullMoonSkinComp = class("FullMoonSkinComp", LuaComponent) + +function FullMoonSkinComp:init() + local uiMap = self:getUIMap() + self.txTitle = uiMap["skin_panel.banner.title.tx_title"] + self.txBannerDesc1 = uiMap["skin_panel.banner.content.desc1.tx_desc1"] + self.txBannerDesc2 = uiMap["skin_panel.banner.content.desc2.tx_desc2"] + -- 礼包1 + self.spineSkin1 = uiMap["skin_panel.skin1.spine_skin1"] + self.txDesc1 = uiMap["skin_panel.skin1.bg_title.tx_title"] + self.btnBuy1 = uiMap["skin_panel.skin1.btn_buy"] + self.txBuy1 = uiMap["skin_panel.skin1.btn_buy.tx_buy"] + self.challenge1 = uiMap["skin_panel.skin1.challenge"] + self.challengeTag1 = uiMap["skin_panel.skin1.challenge.tag"] + self.imgChallengeTag1 = uiMap["skin_panel.skin1.challenge.tag.content.img"] + self.txChallengeTag1 = uiMap["skin_panel.skin1.challenge.tag.content.tx_num"] + self.rewardCells1 = {} + for i = 1, 3 do + table.insert(self.rewardCells1, uiMap["skin_panel.skin1.rewards.reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL)) + end + -- 礼包2 + self.spineSkin2 = uiMap["skin_panel.skin2.spine_skin2"] + self.txDesc2 = uiMap["skin_panel.skin2.bg_title.tx_title"] + self.btnBuy2 = uiMap["skin_panel.skin2.btn_buy"] + self.txBuy2 = uiMap["skin_panel.skin2.btn_buy.tx_buy"] + self.challenge2 = uiMap["skin_panel.skin2.challenge"] + self.challengeTag2 = uiMap["skin_panel.skin2.challenge.tag"] + self.imgChallengeTag2 = uiMap["skin_panel.skin2.challenge.tag.content.img"] + self.txChallengeTag2 = uiMap["skin_panel.skin2.challenge.tag.content.tx_num"] + self.rewardCells2 = {} + for i = 1, 3 do + table.insert(self.rewardCells2, uiMap["skin_panel.skin2.rewards.reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL)) + end + + self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_9)) + + self.challenge1:addClickListener(function() + ModuleManager.FullMoonManager:skinChallenge(GConst.FullMoonConst.SKIN_CHALLENGE_ID_1) + end) + self.challenge2:addClickListener(function() + ModuleManager.FullMoonManager:skinChallenge(GConst.FullMoonConst.SKIN_CHALLENGE_ID_2) + end) + self.btnBuy1:addClickListener(function() + PayManager:purchasePackage(GConst.FullMoonConst.SKIN_GIFT_ID_1, PayManager.PURCHARSE_TYPE.ACT_GIFT) + end) + self.btnBuy2:addClickListener(function() + PayManager:purchasePackage(GConst.FullMoonConst.SKIN_GIFT_ID_2, PayManager.PURCHARSE_TYPE.ACT_GIFT) + end) + LocalData:recordTodayActSummerWatchedSkin() +end + +function FullMoonSkinComp:refresh() + -- 礼包1 + if not DataManager.FullMoonData:isReceivedSkinFirstChallengeReward(GConst.FullMoonConst.SKIN_CHALLENGE_ID_1) then + self.challengeTag1:setActive(true) + local reward = DataManager.FullMoonData:getSkinFirstChallengeReward(GConst.FullMoonConst.SKIN_CHALLENGE_ID_1) + self.imgChallengeTag1:setSprite(GFunc.getIconRes(reward.id)) + self.txChallengeTag1:setText(reward.num) + GFunc.centerImgAndTx(self.imgChallengeTag1, self.txChallengeTag1) + else + self.challengeTag1:setActive(false) + end + local gift1 = DataManager.ShopData:getActGiftConfig()[GConst.FullMoonConst.SKIN_GIFT_ID_1] + local skinId1,heroId1 + for idx, reward in ipairs(gift1.reward) do + if ConfigManager:getConfig("item")[reward.id].type == GConst.ItemConst.ITEM_TYPE.SKIN then + skinId1 = DataManager.SkinData:getSkinIdByItemId(reward.id) + heroId1 = DataManager.SkinData:getHeroIdBySkinId(skinId1) + end + end + if skinId1 and heroId1 then + self.spineSkin1:getSkeletonGraphic().enabled = false + self.spineSkin1:loadAssetAsync(DataManager.SkinData:getModelId(skinId1), function() + self.spineSkin1:getSkeletonGraphic().enabled = true + self.spineSkin1:playAnim("idle", true, true, true) + end, true) + self.txBannerDesc1:setText(DataManager.HeroData:getHeroById(heroId1):getName() .. "-" .. DataManager.SkinData:getName(skinId1) .. "(" .. I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_9) .. ")") + end + self.txDesc1:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_10, DataManager.HeroData:getHeroById(heroId1):getName())) + for index, cell in ipairs(self.rewardCells1) do + if gift1.reward[index] then + cell:setVisible(true) + cell:refreshByConfig(gift1.reward[index]) + else + cell:setVisible(false) + end + end + if DataManager.ShopData:getGiftRemainBuyNum(GConst.FullMoonConst.SKIN_GIFT_ID_1) > 0 then + self.btnBuy1:setTouchEnable(true) + self.btnBuy1:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_2") + self.txBuy1:setText(GFunc.getFormatPrice(gift1.recharge_id)) + else + self.btnBuy1:setTouchEnable(false) + self.btnBuy1:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_2") + self.txBuy1:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_20)) + end + + -- 礼包2 + if not DataManager.FullMoonData:isReceivedSkinFirstChallengeReward(GConst.FullMoonConst.SKIN_CHALLENGE_ID_2) then + self.challengeTag2:setActive(true) + local reward = DataManager.FullMoonData:getSkinFirstChallengeReward(GConst.FullMoonConst.SKIN_CHALLENGE_ID_2) + self.imgChallengeTag2:setSprite(GFunc.getIconRes(reward.id)) + self.txChallengeTag2:setText(reward.num) + GFunc.centerImgAndTx(self.imgChallengeTag2, self.txChallengeTag2) + else + self.challengeTag2:setActive(false) + end + local gift2 = DataManager.ShopData:getActGiftConfig()[GConst.FullMoonConst.SKIN_GIFT_ID_2] + local skinId2,heroId2 + for idx, reward in ipairs(gift2.reward) do + if ConfigManager:getConfig("item")[reward.id].type == GConst.ItemConst.ITEM_TYPE.SKIN then + skinId2 = DataManager.SkinData:getSkinIdByItemId(reward.id) + heroId2 = DataManager.SkinData:getHeroIdBySkinId(skinId2) + end + end + if skinId2 and heroId2 then + self.spineSkin2:getSkeletonGraphic().enabled = false + self.spineSkin2:loadAssetAsync(DataManager.SkinData:getModelId(skinId2), function() + self.spineSkin2:getSkeletonGraphic().enabled = true + self.spineSkin2:playAnim("idle", true, true, true) + end, true) + self.txBannerDesc2:setText(DataManager.HeroData:getHeroById(heroId2):getName() .. "-" .. DataManager.SkinData:getName(skinId2) .. "(" .. I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_9) .. ")") + end + self.txDesc2:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_10, DataManager.HeroData:getHeroById(heroId2):getName())) + for index, cell in ipairs(self.rewardCells2) do + if gift2.reward[index] then + cell:setVisible(true) + cell:refreshByConfig(gift2.reward[index]) + else + cell:setVisible(false) + end + end + if DataManager.ShopData:getGiftRemainBuyNum(GConst.FullMoonConst.SKIN_GIFT_ID_2) > 0 then + self.btnBuy2:setTouchEnable(true) + self.btnBuy2:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_2") + self.txBuy2:setText(GFunc.getFormatPrice(gift2.recharge_id)) + else + self.btnBuy2:setTouchEnable(false) + self.btnBuy2:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_2") + self.txBuy2:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_20)) + end +end + +return FullMoonSkinComp \ No newline at end of file diff --git a/lua/app/ui/activity/full_moon/full_moon_skin_comp.lua.meta b/lua/app/ui/activity/full_moon/full_moon_skin_comp.lua.meta new file mode 100644 index 00000000..4f42ad11 --- /dev/null +++ b/lua/app/ui/activity/full_moon/full_moon_skin_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2bdec32481442b648a69cea1bf0a2bc9 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/full_moon/full_moon_task_comp.lua b/lua/app/ui/activity/full_moon/full_moon_task_comp.lua new file mode 100644 index 00000000..3bc6111f --- /dev/null +++ b/lua/app/ui/activity/full_moon/full_moon_task_comp.lua @@ -0,0 +1,74 @@ +local FullMoonTaskComp = class("FullMoonTaskComp", LuaComponent) + +function FullMoonTaskComp:init() + local uiMap = self:getUIMap() + self.listProg = uiMap["task_panel.prog.list_prog"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) + self.content = uiMap["task_panel.prog.list_prog.viewport.content"] + self.prog = uiMap["task_panel.prog.list_prog.viewport.content.prog"] + self.imgProg = uiMap["task_panel.prog.list_prog.viewport.content.prog.img_prog"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) + self.listTask = uiMap["task_panel.list_task"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) + self.spineSkin = uiMap["task_panel.prog.spine_skin"] + self.imgScore = uiMap["task_panel.prog.score.img_score"] + self.txScore = uiMap["task_panel.prog.score.tx_score"] + self.txSkin = uiMap["task_panel.prog.skin_desc.skin.tx_skin"] + self.txAllFinish = uiMap["task_panel.tx_all_finish"] + + local skinId,heroId + for id, data in pairs(ConfigManager:getConfig("activity_full_moon_reward")) do + if ConfigManager:getConfig("item")[data.reward.id].type == GConst.ItemConst.ITEM_TYPE.SKIN then + skinId = DataManager.SkinData:getSkinIdByItemId(data.reward.id) + heroId = DataManager.SkinData:getHeroIdBySkinId(skinId) + end + end + if heroId and skinId then + self.txSkin:setText(DataManager.HeroData:getHeroById(heroId):getName() .. "-" .. DataManager.SkinData:getName(skinId) .. "(" .. I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_9) .. ")") + + self.spineSkin:getSkeletonGraphic().enabled = false + self.spineSkin:loadAssetAsync(DataManager.SkinData:getModelId(skinId), function() + self.spineSkin:getSkeletonGraphic().enabled = true + self.spineSkin:playAnim("idle", true, true, true) + end, true) + end +end + +function FullMoonTaskComp:refresh() + self.txScore:setText(DataManager.FullMoonData:getTaskFinishNum()) + GFunc.centerImgAndTx(self.imgScore, self.txScore) + + -- 任务列表 + local tasks = DataManager.FullMoonData:getTaskListSort() + if tasks then + self.txAllFinish:setActive(false) + self.listTask:addInitCallback(function() + return "app/ui/activity/full_moon/cell/full_moon_task_cell" + end) + self.listTask:addRefreshCallback(function(index, cell) + cell:refresh(tasks[index].id) + end) + self.listTask:clearCells() + self.listTask:refillCells(#tasks) + else + self.txAllFinish:setActive(true) + self.txAllFinish:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_11)) + end + + -- 任务进度奖励列表 + self.listProg:addInitCallback(function() + return "app/ui/activity/full_moon/cell/full_moon_task_prog_cell" + end) + self.listProg:addRefreshCallback(function(index, cell) + cell:refresh(DataManager.FullMoonData:getTaskProgressRewardIdByIndex(index)) + end) + self.listProg:clearCells() + self.listProg:refillCells(DataManager.FullMoonData:getTaskProgressRewardTotalNum()) + local idx = DataManager.FullMoonData:getCurTaskProgressRewardIndex() + -- Logger.logHighlight(idx) + self.listProg:moveToIndex(idx) + + local maxIndex = DataManager.FullMoonData:getTaskProgressRewardTotalNum() + local cellWidth = self.listProg:getCellWidth() + self.prog:setSizeDeltaX(cellWidth * maxIndex) + self.imgProg.value = DataManager.FullMoonData:getTaskFinishNum() / DataManager.FullMoonData:getTaskTotalNum() +end + +return FullMoonTaskComp \ No newline at end of file diff --git a/lua/app/ui/activity/full_moon/full_moon_task_comp.lua.meta b/lua/app/ui/activity/full_moon/full_moon_task_comp.lua.meta new file mode 100644 index 00000000..034c2582 --- /dev/null +++ b/lua/app/ui/activity/full_moon/full_moon_task_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c992c98a31d8ac74398f2cba0db13c33 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/full_moon/full_moon_ui.lua b/lua/app/ui/activity/full_moon/full_moon_ui.lua new file mode 100644 index 00000000..853fa3b7 --- /dev/null +++ b/lua/app/ui/activity/full_moon/full_moon_ui.lua @@ -0,0 +1,243 @@ +local FullMoonUI = class("FullMoonUI", BaseUI) +local COMP_TASK = "app/ui/activity/full_moon/full_moon_task_comp" +local COMP_CHOOSE_HERO = "app/ui/activity/full_moon/full_moon_choose_hero_comp" +local COMP_NEW_HERO = "app/ui/activity/full_moon/full_moon_new_hero_comp" +local COMP_SKIN = "app/ui/activity/full_moon/full_moon_skin_comp" + +function FullMoonUI:isFullScreen() + return false +end + +function FullMoonUI:getPrefabPath() + return "assets/prefabs/ui/activity/full_moon/full_moon_ui.prefab" +end + +function FullMoonUI:onPressBackspace() + self:closeUI() +end + +function FullMoonUI:onClose() + if self.actCountdownSid then + self.txCountdown:unscheduleGlobal(self.actCountdownSid) + end +end + +function FullMoonUI:ctor(param) + if param then + self.panelType = param + else + self.panelType = GConst.FullMoonConst.PANEL_TYPE.TASK -- 默认进入任务页签 + end +end + +function FullMoonUI:onLoadRootComplete() + local uiMap = self.root:genAllChildren() + -- 通用 + self.txTitle = uiMap["full_moon_ui.img_title.tx_title"] + self.btnClose = uiMap["full_moon_ui.common.btn_close"] + self.txCountdown = uiMap["full_moon_ui.countdown.tx_countdown"] + self.bg_task = uiMap["full_moon_ui.common.bg_task"] + self.bg_gift = uiMap["full_moon_ui.common.bg_gift"] + -- 子界面 + self.taskPanel = uiMap["full_moon_ui.task_panel"] + self.chooseHeroPanel = uiMap["full_moon_ui.choose_hero_panel"] + self.newHeroPanel = uiMap["full_moon_ui.new_hero_panel"] + self.skinPanel = uiMap["full_moon_ui.skin_panel"] + -- 任务标签 + self.btnTask = uiMap["full_moon_ui.common.btns.btn_task"] + self.txTask1 = uiMap["full_moon_ui.common.btns.btn_task.tx_btn"] + self.txTask2 = uiMap["full_moon_ui.common.btns.btn_task.select.tx_select"] + self.selectTask = uiMap["full_moon_ui.common.btns.btn_task.select"] + -- 自选英雄礼包标签 + self.btnChooseHero = uiMap["full_moon_ui.common.btns.btn_choose_hero"] + self.txChooseHero1 = uiMap["full_moon_ui.common.btns.btn_choose_hero.tx_btn"] + self.txChooseHero2 = uiMap["full_moon_ui.common.btns.btn_choose_hero.select.tx_select"] + self.selectChooseHero = uiMap["full_moon_ui.common.btns.btn_choose_hero.select"] + -- 新英雄礼包标签 + self.btnNewHero = uiMap["full_moon_ui.common.btns.btn_new_hero"] + self.txNewHero1 = uiMap["full_moon_ui.common.btns.btn_new_hero.tx_btn"] + self.txNewHero2 = uiMap["full_moon_ui.common.btns.btn_new_hero.select.tx_select"] + self.selectNewHero = uiMap["full_moon_ui.common.btns.btn_new_hero.select"] + -- 皮肤标签 + self.btnSkin = uiMap["full_moon_ui.common.btns.btn_skin"] + self.txSkin1 = uiMap["full_moon_ui.common.btns.btn_skin.tx_btn"] + self.txSkin2 = uiMap["full_moon_ui.common.btns.btn_skin.select.tx_select"] + self.selectSkin = uiMap["full_moon_ui.common.btns.btn_skin.select"] + + self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_1)) + self.txTask1:setText(I18N:getGlobalText(I18N.GlobalConst.TASK_NAME)) + self.txTask2:setText(I18N:getGlobalText(I18N.GlobalConst.TASK_NAME)) + self.txChooseHero1:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_2)) + self.txChooseHero2:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_2)) + self.txNewHero1:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_3)) + self.txNewHero2:setText(I18N:getGlobalText(I18N.GlobalConst.ACTIVITY_MOON_DESC_3)) + self.txSkin1:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_3)) + self.txSkin2:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_3)) + DataManager.FullMoonData:showActPanel() + + self.btnTask:addClickListener(function() + self.panelType = GConst.FullMoonConst.PANEL_TYPE.TASK + self:onRefresh() + end) + self.btnChooseHero:addClickListener(function() + self.panelType = GConst.FullMoonConst.PANEL_TYPE.CHOOSE_HERO + self:onRefresh() + end) + self.btnNewHero:addClickListener(function() + self.panelType = GConst.FullMoonConst.PANEL_TYPE.NEW_HERO + self:onRefresh() + end) + self.btnSkin:addClickListener(function() + self.panelType = GConst.FullMoonConst.PANEL_TYPE.SKIN + self:onRefresh() + end) + self.btnClose:addClickListener(function() + self:closeUI() + end) + self:addEventListener(EventManager.CUSTOM_EVENT.ACTIVITY_FULL_MOON_END, function() + self:closeUI() + end) + self:bind(DataManager.FullMoonData, "isDirty", function() + -- 检查更新数据 + if DataManager.FullMoonData:getIsInReset() and self.panelType == GConst.FullMoonConst.PANEL_TYPE.TASK then + ModuleManager.FullMoonManager:reqActData() + end + + self:onRefresh() + end) + self:bind(DataManager.ShopData, "isDirty", function() + self:onRefresh() + end) +end + +function FullMoonUI:onRefresh() + -- 倒计时 + if self.actCountdownSid then + self.txCountdown:unscheduleGlobal(self.actCountdownSid) + end + self.txCountdown:setText(GFunc.getTimeStrWithHMS2(DataManager.FullMoonData:getEndRemainTime())) + self.actCountdownSid = self.txCountdown:scheduleGlobal(function() + self.txCountdown:setText(GFunc.getTimeStrWithHMS2(DataManager.FullMoonData:getEndRemainTime())) + end, 1) + + if self.panelType == GConst.FullMoonConst.PANEL_TYPE.TASK then + self:showTaskInfo() + elseif self.panelType == GConst.FullMoonConst.PANEL_TYPE.CHOOSE_HERO then + self:showChooseHeroInfo() + elseif self.panelType == GConst.FullMoonConst.PANEL_TYPE.NEW_HERO then + self:showNewHeroInfo() + elseif self.panelType == GConst.FullMoonConst.PANEL_TYPE.SKIN then + self:showSkinInfo() + end + self:refreshRedPoint() +end + +-- 刷新标签红点 +function FullMoonUI:refreshRedPoint() + -- if DataManager.FullMoonData:hasTaskRedPoint() then + -- self.btnTask:addRedPoint(-65, -5, 0.6) + -- else + -- self.btnTask:removeRedPoint() + -- end + -- if DataManager.FullMoonData:hasBountyRedPoint() then + -- self.btnBounty:addRedPoint(-65, -5, 0.6) + -- else + -- self.btnBounty:removeRedPoint() + -- end + -- if DataManager.FullMoonData:hasSkinRedPoint() then + -- self.btnSkin:addRedPoint(-65, -5, 0.6) + -- else + -- self.btnSkin:removeRedPoint() + -- end + -- if DataManager.FullMoonData:hasHeroRedPoint() then + -- self.btnHero:addRedPoint(-65, -5, 0.6) + -- else + -- self.btnHero:removeRedPoint() + -- end +end + +function FullMoonUI:showTaskInfo() + self.taskPanel:setActive(true) + self.selectTask:setActive(true) + self.chooseHeroPanel:setActive(false) + self.selectChooseHero:setActive(false) + self.newHeroPanel:setActive(false) + self.selectNewHero:setActive(false) + self.skinPanel:setActive(false) + self.selectSkin:setActive(false) + self.bg_task:setActive(true) + self.bg_gift:setActive(false) + + if not self.compTask then + self.taskPanel:initPrefabHelper() + self.taskPanel:genAllChildren() + self.compTask = self.taskPanel:addLuaComponent(COMP_TASK) + end + + self.compTask:refresh() +end + +function FullMoonUI:showChooseHeroInfo() + self.taskPanel:setActive(false) + self.selectTask:setActive(false) + self.chooseHeroPanel:setActive(true) + self.selectChooseHero:setActive(true) + self.newHeroPanel:setActive(false) + self.selectNewHero:setActive(false) + self.skinPanel:setActive(false) + self.selectSkin:setActive(false) + self.bg_task:setActive(false) + self.bg_gift:setActive(true) + + if not self.chooseHeroComp then + self.chooseHeroPanel:initPrefabHelper() + self.chooseHeroPanel:genAllChildren() + self.chooseHeroComp = self.chooseHeroPanel:addLuaComponent(COMP_CHOOSE_HERO) + end + + self.chooseHeroComp:refresh() +end + +function FullMoonUI:showNewHeroInfo() + self.taskPanel:setActive(false) + self.selectTask:setActive(false) + self.chooseHeroPanel:setActive(false) + self.selectChooseHero:setActive(false) + self.newHeroPanel:setActive(true) + self.selectNewHero:setActive(true) + self.skinPanel:setActive(false) + self.selectSkin:setActive(false) + self.bg_task:setActive(false) + self.bg_gift:setActive(true) + + if not self.newHeroComp then + self.newHeroPanel:initPrefabHelper() + self.newHeroPanel:genAllChildren() + self.newHeroComp = self.newHeroPanel:addLuaComponent(COMP_NEW_HERO) + end + + self.newHeroComp:refresh() +end + +function FullMoonUI:showSkinInfo() + self.taskPanel:setActive(false) + self.selectTask:setActive(false) + self.chooseHeroPanel:setActive(false) + self.selectChooseHero:setActive(false) + self.newHeroPanel:setActive(false) + self.selectNewHero:setActive(false) + self.skinPanel:setActive(true) + self.selectSkin:setActive(true) + self.bg_task:setActive(false) + self.bg_gift:setActive(false) + + if not self.compSkin then + self.skinPanel:initPrefabHelper() + self.skinPanel:genAllChildren() + self.compSkin = self.skinPanel:addLuaComponent(COMP_SKIN) + end + + self.compSkin:refresh() +end + +return FullMoonUI \ No newline at end of file diff --git a/lua/app/ui/activity/full_moon/full_moon_ui.lua.meta b/lua/app/ui/activity/full_moon/full_moon_ui.lua.meta new file mode 100644 index 00000000..60ed16b1 --- /dev/null +++ b/lua/app/ui/activity/full_moon/full_moon_ui.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 89c9eb8cb84d89441b6f18941c24b880 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/battle/battle_rune_result_ui.lua b/lua/app/ui/battle/battle_rune_result_ui.lua index 2a50ac78..bc86d883 100644 --- a/lua/app/ui/battle/battle_rune_result_ui.lua +++ b/lua/app/ui/battle/battle_rune_result_ui.lua @@ -211,8 +211,8 @@ function BattleRuneResultUI:refreshTaskNode() local condition = chapterCondition[newIndex] if condition then objs.cell:getBaseObject():setActive(true) - local taskNum = taskProgress[index] and taskProgress[index].progress - local desc = self.runeData:getConditionDesc(condition, taskNum) + local taskNum = taskProgress[newIndex] and taskProgress[newIndex].progress + local desc = self.runeData:getConditionDesc(condition) local over = false if taskProgress[newIndex] then local info = taskProgress[newIndex] diff --git a/lua/app/ui/battle/battle_ui.lua b/lua/app/ui/battle/battle_ui.lua index c7eab930..8cd422f9 100644 --- a/lua/app/ui/battle/battle_ui.lua +++ b/lua/app/ui/battle/battle_ui.lua @@ -500,28 +500,25 @@ function BattleUI:refreshTaskNode() if self.battleController.battleType == GConst.BattleConst.BATTLE_TYPE.DUNGEON_RUNE then self.taskNode:setLocalScale(0.6, 0.6, 0.6) local runeData = DataManager.DungeonData:getDungeonDataByType(ModuleManager.MODULE_KEY.RUNES_OPEN) - local isBossChapter = runeData:isBossChapter(self.battleController.chapterId) local chapterCondition = runeData:getChapterCondition(self.battleController.chapterId) local taskProgress = ModuleManager.DungeonRuneManager:getTaskStatus(self.battleController, chapterCondition) for index, cell in ipairs(self.taskCells) do - local newIndex = index - if isBossChapter then - newIndex = index + 1 - end + local newIndex = index + 1 local condition = chapterCondition[newIndex] if condition then cell:getBaseObject():setActive(true) local atlast, iconName = runeData:getConditionIcon(condition) local taskNum = condition[3] or 0 - Logger.printTable(taskProgress) + local over = false if taskProgress[newIndex] then taskNum = taskProgress[newIndex].totalProgress - taskProgress[newIndex].progress if taskNum < 0 then taskNum = 0 end + over = taskProgress[newIndex].over end - cell:refresh(atlast, iconName, taskNum) + cell:refresh(atlast, iconName, taskNum, over) cell:addClickListener(function() ModuleManager.DungeonRuneManager:showTaskUI(self.battleController.chapterId) end) diff --git a/lua/app/ui/battle/cell/battle_task_cell.lua b/lua/app/ui/battle/cell/battle_task_cell.lua index e1969057..03b66dc1 100644 --- a/lua/app/ui/battle/cell/battle_task_cell.lua +++ b/lua/app/ui/battle/cell/battle_task_cell.lua @@ -2,18 +2,17 @@ local BattleTaskCell = class("BattleTaskCell", BaseCell) local BG = {"common_board_131", "common_board_132"} -- 紫绿 -function BattleTaskCell:refresh(iconAtlas, iconName, taskNum) +function BattleTaskCell:refresh(iconAtlas, iconName, taskNum, over) local uiMap = self:getUIMap() local bg = uiMap["battle_task_cell.bg"] local icon = uiMap["battle_task_cell.icon"] local point = uiMap["battle_task_cell.point"] local desc = uiMap["battle_task_cell.desc"] + local check = uiMap["battle_task_cell.check"] icon:setSprite(iconAtlas, iconName) - + check:setVisible(over == true) desc:setText(taskNum) self:hidePoint(not taskNum) - - self:hidePoint(false) end function BattleTaskCell:hidePoint(hide) diff --git a/lua/app/ui/common/cell/reward_cell.lua b/lua/app/ui/common/cell/reward_cell.lua index b5566f7f..fd0bdd63 100644 --- a/lua/app/ui/common/cell/reward_cell.lua +++ b/lua/app/ui/common/cell/reward_cell.lua @@ -4,6 +4,7 @@ local EFFECT_LIGHT = "assets/prefabs/effects/ui/vfx_ui_arena_gift_b02.prefab" function RewardCell:init() local uiMap = self:getUIMap() + self.content = uiMap["reward_cell.content"] self.icon = uiMap["reward_cell.item_bg.icon"] self.frameBg = uiMap["reward_cell.item_bg"] self.mask = uiMap["reward_cell.item_bg.mask"] @@ -23,6 +24,10 @@ function RewardCell:init() self.skinQlt = uiMap["reward_cell.skin.img_qlt"] -- 特效 self.rootEffect = uiMap["reward_cell.root_effect"] + -- 选中框 + self.select = uiMap["reward_cell.content.item_bg.select"] + -- 自选 + self.choose = uiMap["reward_cell.choose"] self:hideFrameAnimation() self.baseObject:addClickListener(function() @@ -50,6 +55,12 @@ function RewardCell:refresh(reward) self:showFirstPass(false) end +-- 展示自选 +function RewardCell:refreshByChoose() + self.choose:setVisible(true) + self.content:setVisible(false) +end + function RewardCell:refreshByConfig(reward, mask, check) self:showMask(mask, check) if reward.type == GConst.REWARD_TYPE.ITEM then @@ -79,7 +90,10 @@ function RewardCell:refreshItemById(itemId, count, mask, check) end function RewardCell:_refreshItem(info, count) + self.choose:setVisible(false) + self.select:setActive(false) self.lock:setVisible(false) + self.content:setVisible(true) self.numTx:setVisible(true) self.frameBg:setSprite(GConst.ATLAS_PATH.ICON_ITEM, GConst.FRAME_QLT[info.qlt]) if count and count > 0 then @@ -221,4 +235,9 @@ function RewardCell:showLight(show, ui) end end +-- 展示选中框 +function RewardCell:showSelect(show) + self.select:setActive(show == true) +end + return RewardCell \ No newline at end of file diff --git a/lua/app/ui/dungeon_rune/cell/rune_chapter_cell.lua b/lua/app/ui/dungeon_rune/cell/rune_chapter_cell.lua index 3b87e3b0..c382436e 100644 --- a/lua/app/ui/dungeon_rune/cell/rune_chapter_cell.lua +++ b/lua/app/ui/dungeon_rune/cell/rune_chapter_cell.lua @@ -37,34 +37,45 @@ function RuneChapterCell:refresh(id, index, isFinal, chapterListCount) lightImg:setVisible(false) sweep:setVisible(false) local passed = false - if runeData:curFight(id) then -- 正在可打的 - curBg:setVisible(true) - fightBg:setVisible(false) - - local layer = uiMap["chapter_cell.touch_node.bg_cur.desc"] - layer:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_6, id)) + local isBossChapter = runeData:isBossChapter(id) + curBg:setVisible(isBossChapter) + fightBg:setVisible(not isBossChapter) + local curLayerDecs + local curLock + local curMask + if isBossChapter then + curLayerDecs = uiMap["chapter_cell.touch_node.bg_cur.desc"] + curLock = uiMap["chapter_cell.touch_node.bg_cur.lock"] + curMask = uiMap["chapter_cell.touch_node.bg_cur.bg_mask"] else - curBg:setVisible(false) - fightBg:setVisible(true) + curLayerDecs = uiMap["chapter_cell.touch_node.bg.desc"] + curLock = uiMap["chapter_cell.touch_node.bg.lock"] + curMask = uiMap["chapter_cell.touch_node.bg.bg_mask"] + end - local layer = uiMap["chapter_cell.touch_node.bg.desc"] - layer:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_6, id)) - local lock = uiMap["chapter_cell.touch_node.bg.lock"] - if maxPassedId >= id then -- 已通关的 - passed = true - local canSweep = runeData:canSweep(id) - sweep:setVisible(canSweep) - if canSweep then - uiMap["chapter_cell.touch_node.sweep_bg.tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.SMASH)) - end - lock:setVisible(false) - layer:setAnchoredPositionX(0) - -- lightImg:setVisible(true) - -- descMinRound:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_MIN, runeData:getChapterPassRound(id))) - -- descMinRound:setVisible(true) + curLayerDecs:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_6, id)) + if maxPassedId >= id then -- 已通关的 + passed = true + local canSweep = runeData:canSweep(id) + sweep:setVisible(canSweep) + if canSweep then + uiMap["chapter_cell.touch_node.sweep_bg.tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.SMASH)) + end + curLock:setVisible(false) + curMask:setVisible(false) + curLayerDecs:setAnchoredPositionX(0) + -- lightImg:setVisible(true) + -- descMinRound:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_MIN, runeData:getChapterPassRound(id))) + -- descMinRound:setVisible(true) + else + if runeData:canFight(id) then + curLock:setVisible(false) + curMask:setVisible(false) + curLayerDecs:setAnchoredPositionX(0) else - lock:setVisible(true) - GFunc.centerImgAndTx(lock, layer, 5) + curLock:setVisible(true) + curMask:setVisible(true) + GFunc.centerImgAndTx(curLock, curLayerDecs, 5) end end @@ -76,15 +87,49 @@ function RuneChapterCell:refresh(id, index, isFinal, chapterListCount) end local rewards = runeData:getChapterRewards(id) + local rewardCount = 0 for i, cell in ipairs(self.rewardCells) do if rewards[i] then + rewardCount = rewardCount + 1 cell:refreshByConfig(rewards[i], passed, passed) + if isBossChapter then + cell:getBaseObject():setLocalScale(0.6, 0.6, 0.6) + else + cell:getBaseObject():setLocalScale(0.5, 0.5, 0.5) + end + cell:addClickListener(function() + if self.clickFunc then + self.clickFunc() + end + end) + cell:getBaseObject():setActive(true) + else + cell:getBaseObject():setActive(false) end end + + if isBossChapter then + self.rewardCells[1]:getBaseObject():setAnchoredPositionX(-43) + self.rewardCells[2]:getBaseObject():setAnchoredPositionX(43) + else + self.rewardCells[1]:getBaseObject():setAnchoredPositionX(-35) + self.rewardCells[2]:getBaseObject():setAnchoredPositionX(35) + end + + if rewardCount < 2 then + self.rewardCells[1]:getBaseObject():setAnchoredPositionX(0) + end + + sweep:addClickListener(function() + if self.clickFunc then + self.clickFunc() + end + end) end function RuneChapterCell:addClickListener(func) local uiMap = self:getUIMap() + self.clickFunc = func uiMap["chapter_cell.touch_node"]:addClickListener(func) end diff --git a/lua/app/ui/dungeon_rune/dungeon_rune_fight_ui.lua b/lua/app/ui/dungeon_rune/dungeon_rune_fight_ui.lua index d8034308..6cda3958 100644 --- a/lua/app/ui/dungeon_rune/dungeon_rune_fight_ui.lua +++ b/lua/app/ui/dungeon_rune/dungeon_rune_fight_ui.lua @@ -76,6 +76,8 @@ function DungeonRuneFightUI:refreshRewardInfo() local descPassRound = uiMap["dungeon_rune_fight_ui.bg.desc_3"] local imgPassIcon = uiMap["dungeon_rune_fight_ui.bg.icon"] local rewardNode = uiMap["dungeon_rune_fight_ui.bg.reward_node"] + local lineR = uiMap["dungeon_rune_fight_ui.bg.line_r"] + local lineL = uiMap["dungeon_rune_fight_ui.bg.line_l"] rewardNode:setActive(not passed) descPassRound:setVisible(passed) imgPassIcon:setVisible(passed) @@ -85,7 +87,11 @@ function DungeonRuneFightUI:refreshRewardInfo() -- local round = self.runeData:getChapterPassRound(self.id) -- descPassRound:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_MIN, round)) -- GFunc.centerImgAndTx(imgPassIcon, descPassRound, 5) + lineR:setVisible(false) + lineL:setVisible(false) else + lineR:setVisible(true) + lineL:setVisible(true) if not self.rewardCells then self.rewardCells = {} for i = 1, 4 do @@ -128,7 +134,7 @@ function DungeonRuneFightUI:refreshFightBtn() if passed then descAgain:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_DESC_2)) -- title:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_DESC_6)) - title:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_DESC_3)) + title:setText(GConst.EMPTY_STRING) else desc:setText(I18N:getGlobalText(I18N.GlobalConst.TASK_CHALLENGE)) num:setText(1) diff --git a/lua/app/ui/dungeon_rune/dungeon_rune_rebirth_ui.lua b/lua/app/ui/dungeon_rune/dungeon_rune_rebirth_ui.lua index 947dc208..a15809ee 100644 --- a/lua/app/ui/dungeon_rune/dungeon_rune_rebirth_ui.lua +++ b/lua/app/ui/dungeon_rune/dungeon_rune_rebirth_ui.lua @@ -23,13 +23,16 @@ end function DungeonRuneRebirthUI:_display() local uiMap = self.root:genAllChildren() uiMap["dungeon_rune_rebirth_ui.title_bg_img.title_text"]:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_TIP_2)) - uiMap["dungeon_rune_rebirth_ui.title_bg_img.content_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_TIP_3)) + local desc1 local desc2 if self.isHpOver then + desc1 = I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_TIP_3) desc2 = I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_TIP_4) else + desc1 = I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_TIP_6) desc2 = I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_TIP_5) end + uiMap["dungeon_rune_rebirth_ui.title_bg_img.content_tx"]:setText(desc1) uiMap["dungeon_rune_rebirth_ui.title_bg_img.content_tx_2"]:setText(desc2) uiMap["dungeon_rune_rebirth_ui.title_bg_img.desc_close"]:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_DESC_7)) diff --git a/lua/app/ui/dungeon_rune/dungeon_rune_task_ui.lua b/lua/app/ui/dungeon_rune/dungeon_rune_task_ui.lua index 49769cf4..728b1aa1 100644 --- a/lua/app/ui/dungeon_rune/dungeon_rune_task_ui.lua +++ b/lua/app/ui/dungeon_rune/dungeon_rune_task_ui.lua @@ -42,7 +42,7 @@ function DungeonRuneTaskUI:_display() local condition = chapterCondition[newIndex] if condition then cell:getBaseObject():setActive(true) - local taskNum = taskProgress[index] and taskProgress[index].progress + local taskNum = taskProgress[newIndex] and taskProgress[newIndex].progress local desc = self.runeData:getConditionDesc(condition, taskNum) local over = false if taskProgress[newIndex] then diff --git a/lua/app/ui/hero/cell/attr_cell.lua b/lua/app/ui/hero/cell/attr_cell.lua index 617f5bbd..0095f2b5 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 -- 显示普攻增伤百分比 @@ -190,6 +200,8 @@ function AttrCell:showNormalHurtp() local value = 0 if self.nodeType == GConst.HeroConst.ATTR_SHOW_TOTAL then value = self.heroEntity:getTotalAttrValue(self.attrName) + -- 特殊处理:显示总属性时,普攻百分比和技能百分比把所有伤害百分比加上 + value = value + self.heroEntity:getTotalAttrValue(GConst.MATCH_ALL_HURTP_NAME[self.heroEntity:getMatchType()]) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_BASE then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_WEAPON then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then @@ -200,9 +212,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 -- 显示技能增伤百分比 @@ -213,6 +227,8 @@ function AttrCell:showSkillHurtp() local value = 0 if self.nodeType == GConst.HeroConst.ATTR_SHOW_TOTAL then value = self.heroEntity:getTotalAttrValue(self.attrName) + -- 特殊处理:显示总属性时,普攻百分比和技能百分比把所有伤害百分比加上 + value = value + self.heroEntity:getTotalAttrValue(GConst.MATCH_ALL_HURTP_NAME[self.heroEntity:getMatchType()]) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_BASE then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_WEAPON then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then @@ -223,9 +239,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 +260,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..d7945169 --- /dev/null +++ b/lua/app/ui/hero/runes_info_comp.lua @@ -0,0 +1,245 @@ +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.txProg = uiMap["runes_info.prog.tx_prog"] + 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.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 not DataManager.RunesData:canAutoMake() then + GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_27, DataManager.RunesData:getAutoMakeOpenLevel())) + return + end + 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:checkQuenching(true) + end, + } + GFunc.showMessageBox(params) + else + self:endAutoQuenching() + end + end) + self.btnUse:addClickListener(function() + self:checkQuenching(false) + 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() + if maxExp then + self.imgProg.value = curExp / maxExp + self.txProg:setText(curExp .. "/" .. maxExp) + else + self.imgProg.value = 1 + self.txProg:setText(I18N:getGlobalText(I18N.GlobalConst.STR_MAX)) + end + + if self.autoSid == nil then + if DataManager.RunesData:canAutoMake() then + self.spineAuto:playAnim("idle", true, true) + else + self.spineAuto:playAnim("idle2", true, true) + end + end + 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())) + 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) + local qlt = self.runesEntity:getGridQuality(index) + if qlt then + imgQlt:setSprite(GConst.ATLAS_PATH.HERO, GConst.RunesConst.QUALITY_ICON[qlt]) + end + local suit = self.runesEntity:getGridSuit(index) + if suit then + imgSuit:setSprite(GConst.ATLAS_PATH.HERO, "hero_rune_"..suit) + end + 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:checkQuenching(isAuto) + -- 是否全部锁定 + if DataManager.RunesData:getRunes(self.heroEntity:getCfgId()):getAttrLockCount() >= DataManager.RunesData:getUnlockCount() then + GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_25)) + return + end + -- 材料是否足够 + local cost = self.runesEntity:getMaterialCost() + if not GFunc.checkCost(GFunc.getRewardId(cost), GFunc.getRewardNum(cost), true) then + UIManager:showUI("app/ui/runes/runes_source_ui") + return + end + + if self.runesEntity:isUnlockHighQlt() then + local params ={ + content = I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_28), + boxType = GConst.MESSAGE_BOX_TYPE.MB_OK_CANCEL, + okText = I18N:getGlobalText(I18N.GlobalConst.CONTINUE_DESC), + okFunc = function() + self:reqQuenching(isAuto) + end, + } + GFunc.showMessageBox(params) + else + self:reqQuenching(isAuto) + end +end + +-- 请求淬炼 +function RunesInfoComp:reqQuenching(isAuto) + if isAuto then + -- 自动淬炼 + self.mask:setActive(true) + 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 + ModuleManager.RunesManager:reqQuenching(self.heroEntity:getCfgId(), 0) + end, 1 / 3) + self.spineAuto:playAnim("attack", true, true) + else + -- 单次淬炼 + ModuleManager.RunesManager:reqQuenching(self.heroEntity:getCfgId(), 0) + end +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 + +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/main_city/cell/side_bar_full_moon_cell.lua b/lua/app/ui/main_city/cell/side_bar_full_moon_cell.lua new file mode 100644 index 00000000..cc3448aa --- /dev/null +++ b/lua/app/ui/main_city/cell/side_bar_full_moon_cell.lua @@ -0,0 +1,46 @@ +local SideBarBaseCellComp = require "app/ui/main_city/cell/side_bar_base_cell" +local SideBarFullMoonCell = class("SideBarFullMoonCell", SideBarBaseCellComp) + +function SideBarFullMoonCell:getModuleKey() + return ModuleManager.MODULE_KEY.ACTIVITY +end + +function SideBarFullMoonCell:getIsOpen() + return DataManager.FullMoonData:isOpen() and DataManager.FullMoonData:isOpenTime() +end + +function SideBarFullMoonCell:getSpineName() + return "ui_main_btn_act_fullmoon" +end + +function SideBarFullMoonCell:onClick() + ModuleManager.FullMoonManager:showActMainUI() +end + +function SideBarFullMoonCell:getIsShowRedPoint() + return DataManager.FullMoonData:hasEntryRedPoint() +end + +function SideBarFullMoonCell:onRefresh() + self.timeBg:setVisible(true) + self:_refreshTime() +end + +function SideBarFullMoonCell:updateTime() + if self:getIsOpen() then + self:_refreshTime() + else + self:closeBtn() + end +end + +function SideBarFullMoonCell:_refreshTime() + local remainTime = DataManager.FullMoonData:getEndRemainTime() + if remainTime >= 0 then + self.timeTx:setText(GFunc.getTimeStr(remainTime)) + else + self.timeTx:setText("00:00:00") + end +end + +return SideBarFullMoonCell \ No newline at end of file diff --git a/lua/app/ui/main_city/cell/side_bar_full_moon_cell.lua.meta b/lua/app/ui/main_city/cell/side_bar_full_moon_cell.lua.meta new file mode 100644 index 00000000..939749f3 --- /dev/null +++ b/lua/app/ui/main_city/cell/side_bar_full_moon_cell.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4ba87a7695be4af42842b7637db142ae +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/main_city/main_city_ui.lua b/lua/app/ui/main_city/main_city_ui.lua index 96ab9a30..a2dae0ef 100644 --- a/lua/app/ui/main_city/main_city_ui.lua +++ b/lua/app/ui/main_city/main_city_ui.lua @@ -1050,16 +1050,20 @@ function MainCityUI:checkMainPop() -- 续关 if self.isFirstEnter then local battleSnapshot = LocalData:getBattleSnapshot() - LocalData:saveBattleSnapshot({}) if battleSnapshot.battleType then if battleSnapshot.currentVersion == Platform:getClientVersion() then local snapshotTime = battleSnapshot.snapShotTime if snapshotTime and Time:getOverOfServerToday(snapshotTime) >= Time:getOverOfServerToday() then + BIReport:postBatttleSnapshotOpen() local params = { content = I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_14), okFunc = function() + LocalData:saveBattleSnapshot({}) ModuleManager.BattleManager:playBattle(battleSnapshot.battleType, battleSnapshot.parmas, nil, battleSnapshot) end, + cancelFunc = function() + LocalData:saveBattleSnapshot({}) + end, boxType = GConst.MESSAGE_BOX_TYPE.MB_OK_CANCEL, } GFunc.showMessageBox(params) @@ -1107,6 +1111,13 @@ function MainCityUI:checkMainPop() return end + -- 圆月活动 + local showType = DataManager.FullMoonData:getNeedShowActPanel() + if showType then + ModuleManager.FullMoonManager:showActMainUI(showType) + return + end + -- 金猪满了后下次进主城要弹出来 if DataManager.GoldPigData:getPopFlag() and not DataManager.TutorialData:getIsInTutorial() then DataManager.GoldPigData:markPop() @@ -1176,6 +1187,12 @@ function MainCityUI:checkTutorial(onlyCheck) return true end end + + if DataManager.DungeonData:isOpen(ModuleManager.MODULE_KEY.RUNES_OPEN) then + if ModuleManager.TutorialManager:checkFuncTutorial(GConst.TutorialConst.RUNE_DUNGEON, onlyCheck) then + return true + end + end end -- 检查礼包(首充(作废)/入门/章节/新手/助力/成长/金币顺序) 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..8f390497 --- /dev/null +++ b/lua/app/ui/runes/runes_source_ui.lua @@ -0,0 +1,142 @@ +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() + EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.GO_DUNGEON_UI) + self:closeUI() + 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..5d98e0a7 --- /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.RUNES_DESC_26, 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/ui/shop/cell/pop_reward_cell.lua b/lua/app/ui/shop/cell/pop_reward_cell.lua index 2ff51dfc..b3d1fced 100644 --- a/lua/app/ui/shop/cell/pop_reward_cell.lua +++ b/lua/app/ui/shop/cell/pop_reward_cell.lua @@ -3,6 +3,8 @@ local PopRewardCell = class("PopRewardCell", BaseCell) function PopRewardCell:init() local uiMap = self.baseObject:genAllChildren() self.bg = uiMap["pop_reward_cell.bg"] + self.choose = uiMap["pop_reward_cell.choose"] + self.imgChoose = uiMap["pop_reward_cell.img_choose"] if not self.itemCell then self.itemCell = CellManager:addCellComp(uiMap["pop_reward_cell.item_cell"], GConst.TYPEOF_LUA_CLASS.ITEM_CELL) end @@ -10,9 +12,18 @@ function PopRewardCell:init() self.popHeroCell = CellManager:addCellComp(uiMap["pop_reward_cell.pop_hero_cell"], GConst.TYPEOF_LUA_CLASS.POP_HERO_CELL) end self.descTx = uiMap["pop_reward_cell.desc_text"] + self:addClickListener(function() + if self.clickCallback then + self.clickCallback() + end + end) end +-- 显示道具 function PopRewardCell:refresh(id, num, showBg) + self.choose:setActive(false) + self.imgChoose:setActive(false) + self:setClickListener(nil) local cfgInfo = ConfigManager:getConfig("item")[id] if cfgInfo then self.bg:setVisible(showBg) @@ -44,7 +55,23 @@ function PopRewardCell:refresh(id, num, showBg) end end -function PopRewardCell:addClickListener(callback) +-- 显示可选 +function PopRewardCell:refreshChoose(clickFunc) + self.imgChoose:setActive(true) + self:setClickListener(clickFunc) +end + +-- 只显示可选 +function PopRewardCell:refreshOnlyChoose(clickFunc) + self.choose:setActive(true) + self.imgChoose:setActive(false) + self.itemCell:getBaseObject():setActive(false) + self.popHeroCell:getBaseObject():setActive(false) + self.descTx:setText(I18N:getGlobalText(I18N.GlobalConst.REWARD_DESC)) + self:setClickListener(clickFunc) +end + +function PopRewardCell:setClickListener(callback) self.clickCallback = callback end diff --git a/lua/app/ui/tips/choose_reward_tips.lua b/lua/app/ui/tips/choose_reward_tips.lua new file mode 100644 index 00000000..0229091a --- /dev/null +++ b/lua/app/ui/tips/choose_reward_tips.lua @@ -0,0 +1,69 @@ +local ChooseRewardTips = class("ChooseRewardTips", BaseUI) + +function ChooseRewardTips:ctor(params) + self.strTitle = params.title + self.strDesc = params.desc + self.chooseRewards = params.rewards + self.chooseCallback = params.callback +end + +function ChooseRewardTips:onPressBackspace() + self:closeUI() +end + +function ChooseRewardTips:getPrefabPath() + return "assets/prefabs/ui/tips/choose_reward_tips.prefab" +end + +function ChooseRewardTips:isFullScreen() + return false +end + +function ChooseRewardTips:onClose() + if self.chooseCallback and self.selectIndex then + self.chooseCallback(self.selectIndex) + end +end + +function ChooseRewardTips:onLoadRootComplete() + local uiMap = self.root:genAllChildren() + + self.txDesc = uiMap["choose_reward_tips.content.tx_desc"] + self.txTitle = uiMap["choose_reward_tips.content.tx_title"] + self.scrollRectComp = uiMap["choose_reward_tips.content.scroll_rect"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) + self.btnClose = uiMap["choose_reward_tips.content.btn_close"] + self.rewardCell = uiMap["choose_reward_tips.content.reward_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) + + self.selectIndex = nil + self.txTitle:setText(self.strTitle or I18N:getGlobalText(I18N.GlobalConst.HERO_CARD_TIPS_DESC)) + self.txDesc:setText(self.strDesc or I18N:getGlobalText(I18N.GlobalConst.HERO_CARD_TIPS_DESC)) + self.rewardCell:refreshByChoose() + self:initScrollRect() + + self.btnClose:addClickListener(function() + self:closeUI() + end) +end + +function ChooseRewardTips:initScrollRect() + self.scrollRectComp:addInitCallback(function() + return GConst.TYPEOF_LUA_CLASS.REWARD_CELL + end) + self.scrollRectComp:addRefreshCallback(function(index, cell) + cell:refreshByConfig(self.chooseRewards[index]) + cell:showSelect(index == self.selectIndex) + cell:addClickListener(function() + self:onSelectReward(index) + end) + end) + self.scrollRectComp:clearCells() + self.scrollRectComp:refillCells(#self.chooseRewards) +end + +function ChooseRewardTips:onSelectReward(index) + self.selectIndex = index + self.rewardCell:refreshByConfig(self.chooseRewards[self.selectIndex]) + self.scrollRectComp:updateAllCell() +end + +return ChooseRewardTips \ No newline at end of file diff --git a/lua/app/ui/tips/choose_reward_tips.lua.meta b/lua/app/ui/tips/choose_reward_tips.lua.meta new file mode 100644 index 00000000..b60c152d --- /dev/null +++ b/lua/app/ui/tips/choose_reward_tips.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 5bb2d9a852b0b394abd828365adc09d3 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/activity/full_moon.meta b/lua/app/userdata/activity/full_moon.meta new file mode 100644 index 00000000..b2749106 --- /dev/null +++ b/lua/app/userdata/activity/full_moon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aaa5662ae70c08140b8b3f2dde2fb87c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lua/app/userdata/activity/full_moon/full_moon_data.lua b/lua/app/userdata/activity/full_moon/full_moon_data.lua new file mode 100644 index 00000000..fd102023 --- /dev/null +++ b/lua/app/userdata/activity/full_moon/full_moon_data.lua @@ -0,0 +1,603 @@ +local FullMoonData = class("FullMoonData", BaseData) + +function FullMoonData:ctor() + self.data.isDirty = false + + self.taskFinished = 0 + self.curHeroGiftChoose = nil + self.taskStatus = GConst.EMPTY_TABLE + self.taskProgReward = GConst.EMPTY_TABLE + self.chapterSkinClaimed = GConst.EMPTY_TABLE +end + +function FullMoonData:clear() + DataManager:unregisterCrossDayFunc("FullMoonData") +end + +-- 设置活动数据 +function FullMoonData:setActStatus(data) + data = data or GConst.EMPTY_TABLE + + self.startTime = GFunc.formatTimeStep(data.start_at) + self.endTime = GFunc.formatTimeStep(data.end_at) + + if EDITOR_MODE then + Logger.logHighlight("圆月活动开启时间:") + Logger.printTable(data) + end +end + +-- 获取活动数据成功 +function FullMoonData:onGetActData(data) + data = data or GConst.EMPTY_TABLE + + self.taskFinished = data.finished or 0-- 任务奖励总计 + self.taskStatus = data.tasks or GConst.EMPTY_TABLE + self.taskProgReward = data.claimed or GConst.EMPTY_TABLE + self.curHeroGiftChoose = data.custom_gift_choose + self.chapterSkinClaimed = data.chapter_skin_claimed or GConst.EMPTY_TABLE + + if self:isOpenTime() then + -- 注册任务进度监听 + for id, data in ipairs(ConfigManager:getConfig("activity_full_moon_quest")) do + ModuleManager.TaskManager:registerTask("FullMoonData", data.type, function(count) + self:addTaskProgress(data.type, count) + end) + end + end + + if EDITOR_MODE then + Logger.logHighlight("圆月活动数据:") + Logger.printTable(data) + end + -- 跨天 + DataManager:registerCrossDayFunc("FullMoonData", function() + if not self:isOpen() then + return + end + if not self:isOpenTime() then + return + end + + self:setInReset(true) + self:setDirty() + end) + + self.isInitedData = true + self:setDirty() +end + +function FullMoonData:setDirty() + self.data.isDirty = not self.data.isDirty +end + +function FullMoonData:isOpen() + if GFunc.isShenhe() then + return false + end + if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.ACTIVITY, true) then + return false + end + return true +end + +-- 是否在活动配置时间内 +function FullMoonData:isOpenTime() + if self.startTime == nil or self.startTime <= 0 then + return false + end + if self.endTime == nil or self.endTime <= 0 then + return false + end + return Time:getServerTime() >= self.startTime and Time:getServerTime() <= self.endTime +end + +-- 获取活动开启剩余时间(秒) +function FullMoonData:getStartRemainTime() + if self.startTime == nil or self.startTime <= 0 then + return 0 + end + return self.startTime - Time:getServerTime() +end + +-- 获取活动结束剩余时间(秒) +function FullMoonData:getEndRemainTime() + if self.endTime == nil or self.endTime <= 0 then + return 0 + end + return self.endTime - Time:getServerTime() +end + +-- 获取需要展示的活动界面 +function FullMoonData:getNeedShowActPanel() + if not self:isOpen() then + return nil + end + if not self:isOpenTime() then + return nil + end + if not self.isInitedData then + return nil + end + if self.isWatchedActPanel then + return nil + end + + if not self:isAllBoughtSkinGifts() then + return GConst.FullMoonConst.PANEL_TYPE.SKIN + end + + if not self:isAllBoughtNewHeroGifts() then + return GConst.FullMoonConst.PANEL_TYPE.NEW_HERO + end + + if not self:isAllBoughtChooseHeroGifts() then + return GConst.FullMoonConst.PANEL_TYPE.CHOOSE_HERO + end + + if not self:isTaskAllRewardReceived() then + return GConst.FullMoonConst.PANEL_TYPE.TASK + end + + return nil +end + +-- 展示活动界面 +function FullMoonData:showActPanel() + self.isWatchedActPanel = true +end + +function FullMoonData:setInReset(isInReset) + self.isInReset = isInReset +end + +function FullMoonData:getIsInReset() + return self.isInReset +end + +-- 是否有入口红点 +function FullMoonData:hasEntryRedPoint() + return self:hasTaskRedPoint() +end + +-- 任务-------------------------------------------------------------------------------------------------- + +-- 是否奖励全领完 +function FullMoonData:isTaskAllRewardReceived() + for index, id in ipairs(self:getTaskListSort()) do + if not self:isReceivedTaskReward(id) then + return false + end + end + + return true +end + +-- 是否有任务红点 +function FullMoonData:hasTaskRedPoint() + for index, id in ipairs(table.keys(ConfigManager:getConfig("activity_full_moon_quest"))) do + if self:canGetTaskReward(id) and not self:isReceivedTaskReward(id) then + return true + end + end + + for index, id in ipairs(table.keys(ConfigManager:getConfig("activity_full_moon_reward"))) do + if self:isReachTaskProgressReward(id) and not self:isReceivedTaskProgressReward(id) then + return true + end + end + + return false +end + +-- 获取任务完成个数 +function FullMoonData:getTaskFinishNum() + return self.taskFinished +end + +-- 获取任务完成总目标个数 +function FullMoonData:getTaskTotalNum() + local max + for id, value in pairs(ConfigManager:getConfig("activity_full_moon_reward")) do + if max == nil or max < value.quest then + max = value.quest + end + end + + return max +end + +-- 获取下标对应的任务进度奖励id +function FullMoonData:getTaskProgressRewardIdByIndex(index) + for id, value in pairs(ConfigManager:getConfig("activity_full_moon_reward")) do + if index == 1 then + return id + end + index = index - 1 + end +end + +-- 获取任务进度奖励总个数 +function FullMoonData:getTaskProgressRewardTotalNum() + return table.nums(ConfigManager:getConfig("activity_full_moon_reward")) +end + +-- 获取任务进度奖励 +function FullMoonData:getTaskProgressReward(id) + return ConfigManager:getConfig("activity_full_moon_reward")[id].reward +end + +-- 获取任务进度目标 +function FullMoonData:getTaskProgressTarget(id) + return ConfigManager:getConfig("activity_full_moon_reward")[id].quest +end + +-- 任务进度奖励是否满足领取条件 +function FullMoonData:isReachTaskProgressReward(id) + return self:getTaskFinishNum() >= self:getTaskProgressTarget(id) +end + +-- 任务进度奖励是否已领取 +function FullMoonData:isReceivedTaskProgressReward(id) + return self.taskProgReward[id] +end + +-- 获取当前定位的任务进度奖励index +function FullMoonData:getCurTaskProgressRewardIndex() + local index = 0 + + for id, data in pairs(ConfigManager:getConfig("activity_full_moon_reward")) do + index = index + 1 + if self:isReachTaskProgressReward(id) and not self:isReceivedTaskProgressReward(id) then + return index + end + end + + index = 0 + local curStage = self:getTaskProgressRewardId() + for id, data in pairs(ConfigManager:getConfig("activity_full_moon_reward")) do + index = index + 1 + if curStage == id then + return index + end + end + + return nil +end + +-- 获取任务奖励阶段id +function FullMoonData:getTaskProgressRewardId() + local finish = self:getTaskFinishNum() + local curId + for id, data in pairs(ConfigManager:getConfig("activity_full_moon_reward")) do + if finish >= data.quest then + curId = id + else + break + end + finish = finish - data.quest + end + + return curId +end + +-- 获取今日任务列表 +function FullMoonData:getTaskListSort() + local ids = {} + + for id, data in pairs(self.taskStatus) do + local sort = id + 10000000 + if self:canGetTaskReward(id) and not self:isReceivedTaskReward(id) then + sort = sort - 100000 + end + if self:isReceivedTaskReward(id) then + sort = sort + 100000 + end + table.insert(ids, {id = id, sort = sort}) + end + table.sort(ids, function (a, b) + return a.sort < b.sort + end) + + -- Logger.logHighlight("任务列表排序:") + -- Logger.printTable(ids) + return ids +end + +-- 获取任务类型 +function FullMoonData:getTaskType(id) + return ConfigManager:getConfig("activity_full_moon_quest")[id].type +end + +-- 获取任务目标 +function FullMoonData:getTaskTarget(id) + return ConfigManager:getConfig("activity_full_moon_quest")[id].number +end + +-- 获取任务奖励 +function FullMoonData:getTaskReward(id) + return ConfigManager:getConfig("activity_full_moon_quest")[id].reward +end + +-- 获取任务进度 +function FullMoonData:getTaskProgress(id) + if self:getTaskType(id) == GConst.TaskConst.TASK_TYPE.X_PLAYER_LV_REACH then + -- 玩家等级实时处理 + return DataManager.PlayerData:getLv() + end + + return self.taskStatus[id] and self.taskStatus[id].progress or 0 +end + +-- 任务是否完成 +function FullMoonData:canGetTaskReward(id) + return self:getTaskProgress(id) >= self:getTaskTarget(id) +end + +-- 任务奖励是否已领取 +function FullMoonData:isReceivedTaskReward(id) + if self.taskStatus[id] == nil then + return false + end + + return self.taskStatus[id].claimed +end + +-- 添加任务进度 +function FullMoonData:addTaskProgress(taskType, count) + -- Logger.logHighlight("任务进度改变:"..tostring(taskType)..","..tostring(count)) + if not self:isOpen() then + return + end + if not self:isOpenTime() then + return + end + + -- 检查圆月活动任务更新 + if self:getIsInReset() then + ModuleManager.FullMoonManager:reqActData() + end + + for id, data in pairs(self.taskStatus) do + local tt = self:getTaskType(id) + if tt == taskType then + if self.taskStatus[id] == nil then + self.taskStatus[id] = {} + self.taskStatus[id].progress = 0 + end + self.taskStatus[id].progress = self.taskStatus[id].progress + count + end + end + + self:setDirty() +end + +-- 领取任务奖励成功 +function FullMoonData:onReceivedTaskReward(id, finished) + self.taskFinished = finished + if self.taskStatus[id] then + self.taskStatus[id].claimed = true + end + self:setDirty() +end + +-- 领取任务进度奖励成功 +function FullMoonData:onReceivedTaskProgressReward(id) + self.taskProgReward[id] = true + self:setDirty() +end + +-- 英雄自选连购礼包-------------------------------------------------------------------------------------------------- + +-- 所有自选英雄礼包都被购买 +function FullMoonData:isAllBoughtChooseHeroGifts() + for index, id in ipairs(self:getChooseHeroGiftIds()) do + if not self:isGiftBought(id) then + return false + end + end + return true +end + +-- 获取英雄自选礼包ids +function FullMoonData:getChooseHeroGiftIds() + if self.chooseHeroIds == nil then + self.chooseHeroIds = table.keys(DataManager.ShopData:getGiftsByType(PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_HERO_GIFT)) + table.sort(self.chooseHeroIds) + end + + return self.chooseHeroIds +end + +-- 当前所处的英雄礼包 +function FullMoonData:getCurChooseHeroGiftId() + for index, id in pairs(self:getChooseHeroGiftIds()) do + if not self:isGiftBought(id) then + return id + end + end + + return self:getChooseHeroGiftIds()[#self:getChooseHeroGiftIds()] +end + +-- 获取当前组礼包ids +function FullMoonData:getCurStepChooseHeroGiftIds() + local ids = self:getChooseHeroGiftIds() + local curId = self:getCurChooseHeroGiftId() + local result = {} + local step = 1 + + local idx = 0 + for index, value in ipairs(GConst.FullMoonConst.HERO_GIFT_SHOW_STEP) do + result[index] = {} + for i = 1, value do + idx = idx + 1 + if curId == ids[idx] then + step = index + end + if ids[idx] then + table.insert(result[index], ids[idx]) + end + end + end + + return result[step] +end + +-- 当前自选英雄的下标 +function FullMoonData:getChooseHeroIndex() + return self.curHeroGiftChoose > 0 and self.curHeroGiftChoose or nil +end + +-- 获取固定奖励 +function FullMoonData:getFixedRewards(id) + return DataManager.ShopData:getActGiftConfig()[id].reward +end + +-- 获取自选奖励 +function FullMoonData:getChooseRewards(id, isAll) + + local rewards = {} + + if not isAll then + for index, reward in ipairs(DataManager.ShopData:getActGiftConfig()[id].choose_reward) do + local info = ConfigManager:getConfig("item")[reward.id] + if info.type == GConst.ItemConst.ITEM_TYPE.HERO_FRAGMENT then + if DataManager.HeroData:getHeroIsActive(info.parameter) then + table.insert(rewards, reward) + end + end + end + else + rewards = DataManager.ShopData:getActGiftConfig()[id].choose_reward + end + + return rewards +end + +-- 获取可选择的自选奖励下标对应的全部自选奖励下标 +function FullMoonData:getChooseRewardsIndexByCanChooseIndex(index) + local selectReward = self:getChooseRewards(self:getCurChooseHeroGiftId())[index] + local result = {} + for idx, reward in ipairs(self:getChooseRewards(self:getCurChooseHeroGiftId(), true)) do + if reward == selectReward then + return idx + end + end + + Logger.logError("未找到"..index) + return result +end + +-- 自选成功 +function FullMoonData:onChooseHeroSuccess(index) + self.curHeroGiftChoose = index + self:setDirty() +end + +-- 新英雄连购礼包-------------------------------------------------------------------------------------------------- + +-- 所有新英雄礼包都被购买 +function FullMoonData:isAllBoughtNewHeroGifts() + for index, id in ipairs(self:getNewHeroGiftIds()) do + if not self:isGiftBought(id) then + return false + end + end + return true +end + +-- 获取新英雄礼包ids +function FullMoonData:getNewHeroGiftIds() + if self.newHeroIds == nil then + self.newHeroIds = table.keys(DataManager.ShopData:getGiftsByType(PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_NEW_HERO_GIFT)) + table.sort(self.newHeroIds) + end + + return self.newHeroIds +end + +-- 当前所处的新英雄礼包 +function FullMoonData:getCurNewHeroGiftId() + for index, id in pairs(self:getNewHeroGiftIds()) do + if DataManager.ShopData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, id) == 0 then + return id + end + end + + return self:getNewHeroGiftIds()[#self:getNewHeroGiftIds()] +end + +-- 获取当前组礼包ids +function FullMoonData:getCurStepNewHeroGiftIds() + local ids = self:getNewHeroGiftIds() + local curId = self:getCurNewHeroGiftId() + local result = {} + local step = 1 + + local idx = 0 + for index, value in ipairs(GConst.FullMoonConst.HERO_GIFT_SHOW_STEP) do + result[index] = {} + for i = 1, value do + idx = idx + 1 + if curId == ids[idx] then + step = index + end + if ids[idx] then + table.insert(result[index], ids[idx]) + end + end + end + + return result[step] +end + +-- 皮肤礼包-------------------------------------------------------------------------------------------------- + +-- 所有皮肤礼包都被购买 +function FullMoonData:isAllBoughtSkinGifts() + for index, id in ipairs(table.keys(DataManager.ShopData:getGiftsByType(PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_SKIN_GIFT))) do + if not self:isGiftBought(id) then + return false + end + end + return true +end + +-- 皮肤礼包剩余购买次数 +function FullMoonData:getSkinGiftRemainBuyNum(id) + return DataManager.ShopData:getGiftRemainBuyNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, id) +end + +-- 获取皮肤挑战首通奖励 +function FullMoonData:getSkinFirstChallengeReward(id) + return ConfigManager:getConfig("chapter_new_skin_fight")[id].reward[1] +end + +-- 皮肤挑战首通奖励是否已领取 +function FullMoonData:isReceivedSkinFirstChallengeReward(id) + return self.chapterSkinClaimed[id] +end + +-- 设置当前皮肤挑战关卡id +function FullMoonData:setCurSkinChallengeId(id) + self.curSkinChallengeId = id +end + +-- 获取当前皮肤挑战关卡id +function FullMoonData:getCurSkinChallengeId() + return self.curSkinChallengeId +end + +-- 皮肤挑战奖励领取成功 +function FullMoonData:onReceivedSkinChallengeReward(id) + self.chapterSkinClaimed[id] = true + self:setDirty() +end + +-- 礼包是否已购买 +function FullMoonData:isGiftBought(id) + return DataManager.ShopData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, id) > 0 +end + +return FullMoonData \ No newline at end of file diff --git a/lua/app/userdata/activity/full_moon/full_moon_data.lua.meta b/lua/app/userdata/activity/full_moon/full_moon_data.lua.meta new file mode 100644 index 00000000..d4be7b7f --- /dev/null +++ b/lua/app/userdata/activity/full_moon/full_moon_data.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 26e9c0c4a4691ed41a638980ce937de9 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/arena/arena_data.lua b/lua/app/userdata/arena/arena_data.lua index 45f5a7cc..1eb4c4b6 100644 --- a/lua/app/userdata/arena/arena_data.lua +++ b/lua/app/userdata/arena/arena_data.lua @@ -705,7 +705,7 @@ function ArenaData:onMatchInfoReceived(match) end -- 结算战斗数据 -function ArenaData:onBattleResultReceived(settlement, result) +function ArenaData:onBattleResultReceived(score, settlement, result) self.matchInfo = nil -- 战斗记录改变 if self.recentBattle == nil then @@ -714,7 +714,7 @@ function ArenaData:onBattleResultReceived(settlement, result) table.remove(self.recentBattle, #self.recentBattle) table.insert(self.recentBattle, 1, settlement) -- 积分改变 - self.score = self.score + settlement.incr_score + self.score = score self.curGradingId = self:getGradingIdFromScore(self.score) local beforeMaxGrading = self.maxScore diff --git a/lua/app/userdata/bag/item_data.lua b/lua/app/userdata/bag/item_data.lua index 241bc7dc..157e52b8 100644 --- a/lua/app/userdata/bag/item_data.lua +++ b/lua/app/userdata/bag/item_data.lua @@ -164,6 +164,10 @@ function ItemData:addItem(data, itemGetType) else BIReport:postVitGet(data.count, itemGetType) end + elseif data.id == GConst.ItemConst.ITEM_ID_RUNES then + if data.count > 0 then + ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_RUNES_GETED_MATERIALS, data.count) + end else if data.count < 0 then BIReport:postItemUse(data.count, data.id, itemGetType) diff --git a/lua/app/userdata/battle/battle_base_data.lua b/lua/app/userdata/battle/battle_base_data.lua index c8e78492..ccb29cb2 100644 --- a/lua/app/userdata/battle/battle_base_data.lua +++ b/lua/app/userdata/battle/battle_base_data.lua @@ -837,7 +837,7 @@ function BattleBaseData:initHeroData(formation) ---- 普攻\技能增伤百分比 for matchType, attrName in pairs(GConst.MATCH_ALL_HURTP_NAME) do - unitData.attr[attrName] = 2000--heroEntity:getTotalAttrValue(attrName) + unitData.attr[attrName] = heroEntity:getTotalAttrValue(attrName) end local skillInfo = skillCfg[skillId] diff --git a/lua/app/userdata/hero/hero_entity.lua b/lua/app/userdata/hero/hero_entity.lua index 69bd795d..f8fb0cf1 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,49 @@ 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()], true) + local skillHurtPer = self:getRunes():getAttrValue(GConst.MATCH_SKILL_HURTP_NAME[self:getMatchType()], true) + local healPer = self:getRunes():getAttrValue(GConst.MATCH_CURED_NAME[self:getMatchType()]) + local allHurtp = self:getRunes():getAttrValue(GConst.MATCH_ALL_HURTP_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 + self.runesAttr[GConst.MATCH_ALL_HURTP_NAME[self:getMatchType()]] = allHurtp + + 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" + printStr = printStr .. "所有伤害百分比:".. allHurtp .. "\n" + Logger.logHighlight(printStr) + end +end + -- 更新总属性 function HeroEntity:updateTotalAttr() self.allAttr = {} @@ -205,6 +256,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) @@ -502,6 +556,7 @@ function HeroEntity:getTotalBaseHp() end end result = result + DataManager.SkinData:getBaseHp(self) + result = result + self:getRunes():getAttrValue(GConst.MATCH_HP_FIX_NAME[self:getMatchType()], true) return result end @@ -517,8 +572,11 @@ function HeroEntity:getTotalBaseAtk() result = result + equipEntity:getBaseAttack() end end - -- Logger.logHighlight(logStr) + -- logStr = logStr .. "\nSKIN:" .. DataManager.SkinData:getBaseAttack(self) result = result + DataManager.SkinData:getBaseAttack(self) + -- logStr = logStr .. "\nRUNES:" .. self:getRunes():getAttrValue(GConst.MATCH_ATTACK_NAME[self:getMatchType()], true) + result = result + self:getRunes():getAttrValue(GConst.MATCH_ATTACK_NAME[self:getMatchType()], true) + -- Logger.logHighlight(logStr) return result end @@ -547,4 +605,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/player/player_data.lua b/lua/app/userdata/player/player_data.lua index a050f21b..b0a1a707 100644 --- a/lua/app/userdata/player/player_data.lua +++ b/lua/app/userdata/player/player_data.lua @@ -202,6 +202,7 @@ function PlayerData:addPayment(rechargeId) self.data.payAmount = self.data.payAmount + cfg.price self.data.payCount = self.data.payCount + 1 self.pay_counts[rechargeId] = (self.pay_counts[rechargeId] or 0) + 1 + ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_BUY_ANYONE) end function PlayerData:getPayCount() 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..5fc7161a --- /dev/null +++ b/lua/app/userdata/runes/runes_data.lua @@ -0,0 +1,231 @@ +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 - (self:getLevelConfig()[self:getLevel()].cost or 0) +end + +-- 获取到下一档的总经验 +function RunesData:getNextLevelTotalExp() + local nextExp + local cfg = self:getLevelConfig()[self:getLevel() + 1] + if cfg then + nextExp = cfg.cost or 0 + end + local curExp = self:getLevelConfig()[self:getLevel()].cost or 0 + + return nextExp - curExp +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:getAutoMakeOpenLevel() + for level, data in ipairs(self:getLevelConfig()) do + if data.auto and data.auto == 1 then + return level + end + end + + return nil +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_14) + elseif index == 4 then + return I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_12) + elseif index == 5 then + return I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_13) + 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..c3270c9a --- /dev/null +++ b/lua/app/userdata/runes/runes_entity.lua @@ -0,0 +1,235 @@ +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 + +-- 是否存在品质大于s的未锁定 +function RunesEntity:isUnlockHighQlt() + for idx, data in ipairs(self.grids) do + if self:getGridQuality(idx) >= GConst.RunesConst.CHECK_QLT_LOCK and not self:isAttrLock(idx) then + return true + end + end + + return false +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:getGridQuality(index) + if self.grids[index] then + return self.grids[index].quality + 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 nil +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_ATTR_GRID_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) + if type(attrType) ~= "string" then + Logger.logError("获取符文属性传入格式错误") + return 0 + end + + 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[self:getHeroEntity():getMatchType()]) // DEFAULT_FACTOR + return result + elseif not isBase and (attrType == GConst.MATCH_NORMAL_HURTP_NAME[self:getHeroEntity():getMatchType()] or attrType == GConst.MATCH_SKILL_HURTP_NAME[self:getHeroEntity():getMatchType()]) then + result = self:getAttrValue(attrType, true) + result = result + self:getAttrValue(GConst.MATCH_ALL_HURTP_NAME[self:getHeroEntity():getMatchType()], true) + 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 diff --git a/lua/app/userdata/skin/skin_data.lua b/lua/app/userdata/skin/skin_data.lua index bd08a7ae..a6f2e45f 100644 --- a/lua/app/userdata/skin/skin_data.lua +++ b/lua/app/userdata/skin/skin_data.lua @@ -92,12 +92,20 @@ end -- 获取皮肤id所对应英雄id function SkinData:getHeroIdBySkinId(skinId) + if skinId == nil then + return nil + end + local cfg = self:getSkinCfg(skinId) return cfg and cfg.hero_id end -- 获取皮肤id所对应道具id function SkinData:getItemIdBySkinId(skinId) + if skinId == nil then + return nil + end + local cfg = self:getSkinCfg(skinId) return cfg and cfg.item_id end