符文功能

This commit is contained in:
Fang 2023-09-06 16:49:08 +08:00
parent b9b8a10cc4
commit f1f1daafa2
53 changed files with 1971 additions and 438 deletions

View File

@ -154,6 +154,8 @@ BIReport.ITEM_GET_TYPE = {
DUNGEON_RUNE_SETTLEMENT = "DungeonRuneSettlement", DUNGEON_RUNE_SETTLEMENT = "DungeonRuneSettlement",
DUNGEON_RUNE_SWEEP = "DungeonRuneSweep", DUNGEON_RUNE_SWEEP = "DungeonRuneSweep",
DUNGEON_RUNE_BUY_WING = "DungeonRunebuyWing", DUNGEON_RUNE_BUY_WING = "DungeonRunebuyWing",
RUNES_QUENCHING = "RuneQuenching",
RUNES_GIFT = "RuneGift",
} }
BIReport.ADS_CLICK_TYPE = { BIReport.ADS_CLICK_TYPE = {
@ -227,6 +229,7 @@ BIReport.GIFT_TYPE = {
ACT_SUMMER = "ActSummer", ACT_SUMMER = "ActSummer",
ACT_HERO_FUND = "ActHeroFund", ACT_HERO_FUND = "ActHeroFund",
FOURTEEN_DAY_GIFT = "FourteenDayGift", FOURTEEN_DAY_GIFT = "FourteenDayGift",
RUNES_GIFT = "RunesGift",
} }
BIReport.COIN_TYPE = { BIReport.COIN_TYPE = {

View File

@ -16,6 +16,7 @@ function DataManager:init()
self:initManager("BagData", "app/userdata/bag/bag_data") self:initManager("BagData", "app/userdata/bag/bag_data")
self:initManager("EquipData", "app/userdata/equip/equip_data") self:initManager("EquipData", "app/userdata/equip/equip_data")
self:initManager("SkinData", "app/userdata/skin/skin_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("BattleData", "app/userdata/battle/battle_data")
self:initManager("BattlePVPData", "app/userdata/battle/battle_pvp_data") self:initManager("BattlePVPData", "app/userdata/battle/battle_pvp_data")
self:initManager("FormationData", "app/userdata/formation/formation_data") self:initManager("FormationData", "app/userdata/formation/formation_data")
@ -106,6 +107,7 @@ function DataManager:clear()
self.BagData:clear() self.BagData:clear()
self.EquipData:clear() self.EquipData:clear()
self.SkinData:clear() self.SkinData:clear()
self.RunesData:clear()
self.FormationData:clear() self.FormationData:clear()
self.ActivityData:clear() self.ActivityData:clear()
self.MailData:clear() self.MailData:clear()
@ -151,7 +153,8 @@ function DataManager:initWithServerData(data)
self.EquipData:init(data.heroes_equips) self.EquipData:init(data.heroes_equips)
self.EquipData:initGifts(data.act_weapon_armor_gift) self.EquipData:initGifts(data.act_weapon_armor_gift)
self.SkinData:init(data.bag.skins) 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.HeroData:init(data.bag.heroes)
self.BagData:init(data.bag) self.BagData:init(data.bag)
self.FormationData:init(data.fight_info) self.FormationData:init(data.fight_info)

View File

@ -69,6 +69,8 @@ local MODULE_PATHS = {
EquipManager = "app/module/equip/equip_manager", EquipManager = "app/module/equip/equip_manager",
-- 皮肤 -- 皮肤
SkinManager = "app/module/skin/skin_manager", SkinManager = "app/module/skin/skin_manager",
-- 皮肤
RunesManager = "app/module/runes/runes_manager",
-- 英雄基金 -- 英雄基金
HeroFundManager = "app/module/activity/hero_fund/hero_fund_manager", HeroFundManager = "app/module/activity/hero_fund/hero_fund_manager",
-- 世界首领活动 -- 世界首领活动

View File

@ -27,6 +27,7 @@ PayManager.PURCHARSE_ACT_TYPE = {
WEAPON_UPGRADE_GIFT = 15, WEAPON_UPGRADE_GIFT = 15,
ARMOR_UPGRADE_GIFT = 16, ARMOR_UPGRADE_GIFT = 16,
FOURTEEN_DAY_GIFT = 17, FOURTEEN_DAY_GIFT = 17,
RUNES_GIFT = 21,
} }
PayManager.PURCHARSE_TYPE_CONFIG = { PayManager.PURCHARSE_TYPE_CONFIG = {
@ -56,6 +57,7 @@ PayManager.BI_ITEM_GET_TYPE = {
[PayManager.PURCHARSE_ACT_TYPE.WEAPON_UPGRADE_GIFT] = BIReport.ITEM_GET_TYPE.WEAPON_GIFT, [PayManager.PURCHARSE_ACT_TYPE.WEAPON_UPGRADE_GIFT] = BIReport.ITEM_GET_TYPE.WEAPON_GIFT,
[PayManager.PURCHARSE_ACT_TYPE.ARMOR_UPGRADE_GIFT] = BIReport.ITEM_GET_TYPE.ARMOR_GIFT, [PayManager.PURCHARSE_ACT_TYPE.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.FOURTEEN_DAY_GIFT] = BIReport.ITEM_GET_TYPE.FOURTEEN_DAY_GIFT,
[PayManager.PURCHARSE_ACT_TYPE.RUNES_GIFT] = BIReport.ITEM_GET_TYPE.RUNES_GIFT,
}, },
[PayManager.PURCHARSE_TYPE.ACT_GOLD_PIG] = BIReport.ITEM_GET_TYPE.GOLD_PIG, [PayManager.PURCHARSE_TYPE.ACT_GOLD_PIG] = BIReport.ITEM_GET_TYPE.GOLD_PIG,
[PayManager.PURCHARSE_TYPE.MALL_TREASURE] = BIReport.ITEM_GET_TYPE.MALL_TREASURE, [PayManager.PURCHARSE_TYPE.MALL_TREASURE] = BIReport.ITEM_GET_TYPE.MALL_TREASURE,
@ -82,6 +84,7 @@ PayManager.BI_GIFT_TYPE = {
[PayManager.PURCHARSE_ACT_TYPE.WEAPON_UPGRADE_GIFT] = BIReport.GIFT_TYPE.WEAPON_GIFT, [PayManager.PURCHARSE_ACT_TYPE.WEAPON_UPGRADE_GIFT] = BIReport.GIFT_TYPE.WEAPON_GIFT,
[PayManager.PURCHARSE_ACT_TYPE.ARMOR_UPGRADE_GIFT] = BIReport.GIFT_TYPE.ARMOR_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.FOURTEEN_DAY_GIFT] = BIReport.GIFT_TYPE.FOURTEEN_DAY_GIFT,
[PayManager.PURCHARSE_ACT_TYPE.RUNES_GIFT] = BIReport.GIFT_TYPE.RUNES_GIFT,
}, },
[PayManager.PURCHARSE_TYPE.ACT_GOLD_PIG] = BIReport.GIFT_TYPE.GOLD_PIG, [PayManager.PURCHARSE_TYPE.ACT_GOLD_PIG] = BIReport.GIFT_TYPE.GOLD_PIG,
[PayManager.PURCHARSE_TYPE.MALL_TREASURE] = BIReport.GIFT_TYPE.MALL_TREASURE, [PayManager.PURCHARSE_TYPE.MALL_TREASURE] = BIReport.GIFT_TYPE.MALL_TREASURE,

View File

@ -23,6 +23,7 @@ function ServerPushManager:initWhenLogin()
self:addServerPushListener(ProtoMsgType.FromMsgEnum.AIHelpUnreadNtf, ModuleManager.GameSettingManager, ModuleManager.GameSettingManager.rspAiHelperNtf) self:addServerPushListener(ProtoMsgType.FromMsgEnum.AIHelpUnreadNtf, ModuleManager.GameSettingManager, ModuleManager.GameSettingManager.rspAiHelperNtf)
self:addServerPushListener(ProtoMsgType.FromMsgEnum.RecoveryNtf, ModuleManager.ItemManager, ModuleManager.ItemManager.rspRecoveryNtf) self:addServerPushListener(ProtoMsgType.FromMsgEnum.RecoveryNtf, ModuleManager.ItemManager, ModuleManager.ItemManager.rspRecoveryNtf)
self:addServerPushListener(ProtoMsgType.FromMsgEnum.BossRushBoughtNtf, ModuleManager.ActBossRushManager, ModuleManager.ActBossRushManager.rspBossRushBoughtNtf) self:addServerPushListener(ProtoMsgType.FromMsgEnum.BossRushBoughtNtf, ModuleManager.ActBossRushManager, ModuleManager.ActBossRushManager.rspBossRushBoughtNtf)
self:addServerPushListener(ProtoMsgType.FromMsgEnum.RuneUpdateNtf, ModuleManager.RunesManager, ModuleManager.RunesManager.rspUpdate)
end end
---- 移除全局推送监听 ---- 移除全局推送监听

View File

@ -1,5 +1,6 @@
local activity_pvp_wingift = { local activity_pvp_wingift = {
[1]={ [1]={
["win"]=1,
["reward"]={ ["reward"]={
{ {
["type"]=1, ["type"]=1,
@ -20,6 +21,7 @@ local activity_pvp_wingift = {
} }
}, },
[2]={ [2]={
["win"]=4,
["reward"]={ ["reward"]={
{ {
["type"]=1, ["type"]=1,
@ -40,6 +42,7 @@ local activity_pvp_wingift = {
} }
}, },
[3]={ [3]={
["win"]=7,
["reward"]={ ["reward"]={
{ {
["type"]=1, ["type"]=1,
@ -60,6 +63,7 @@ local activity_pvp_wingift = {
} }
}, },
[4]={ [4]={
["win"]=10,
["reward"]={ ["reward"]={
{ {
["type"]=1, ["type"]=1,

View File

@ -3303,8 +3303,8 @@ local arena_rank = {
["type_for_nothing"]="Vw==", ["type_for_nothing"]="Vw==",
["id"]=1, ["id"]=1,
["id_for_nothing"]="Vw==", ["id_for_nothing"]="Vw==",
["num"]=46000, ["num"]=25000,
["num_for_nothing"]="Ug5cA2U=" ["num_for_nothing"]="VA1cA2U="
}, },
{ {
["type"]=1, ["type"]=1,
@ -5383,8 +5383,8 @@ local arena_rank = {
["type_for_nothing"]="Vw==", ["type_for_nothing"]="Vw==",
["id"]=1, ["id"]=1,
["id_for_nothing"]="Vw==", ["id_for_nothing"]="Vw==",
["num"]=54000, ["num"]=25000,
["num_for_nothing"]="UwxcA2U=" ["num_for_nothing"]="VA1cA2U="
}, },
{ {
["type"]=1, ["type"]=1,

View File

@ -53,7 +53,9 @@ local buff = {
["stack"]=2, ["stack"]=2,
["position"]=1, ["position"]=1,
["decr"]=1, ["decr"]=1,
["icon"]="dec_dmg_red_add" ["icon"]="dec_dmg_red_add",
["show_name"]=true,
["ispercent"]=1
}, },
[8]={ [8]={
["id"]=8, ["id"]=8,
@ -62,7 +64,9 @@ local buff = {
["stack"]=2, ["stack"]=2,
["position"]=2, ["position"]=2,
["decr"]=1, ["decr"]=1,
["icon"]="dec_dmg_yellow_add" ["icon"]="dec_dmg_yellow_add",
["show_name"]=true,
["ispercent"]=1
}, },
[9]={ [9]={
["id"]=9, ["id"]=9,
@ -71,7 +75,9 @@ local buff = {
["stack"]=2, ["stack"]=2,
["position"]=3, ["position"]=3,
["decr"]=1, ["decr"]=1,
["icon"]="dec_dmg_green_add" ["icon"]="dec_dmg_green_add",
["show_name"]=true,
["ispercent"]=1
}, },
[10]={ [10]={
["id"]=10, ["id"]=10,
@ -80,7 +86,9 @@ local buff = {
["stack"]=2, ["stack"]=2,
["position"]=4, ["position"]=4,
["decr"]=1, ["decr"]=1,
["icon"]="dec_dmg_blue_add" ["icon"]="dec_dmg_blue_add",
["show_name"]=true,
["ispercent"]=1
}, },
[11]={ [11]={
["id"]=11, ["id"]=11,
@ -89,7 +97,9 @@ local buff = {
["stack"]=2, ["stack"]=2,
["position"]=5, ["position"]=5,
["decr"]=1, ["decr"]=1,
["icon"]="dec_dmg_purple_add" ["icon"]="dec_dmg_purple_add",
["show_name"]=true,
["ispercent"]=1
}, },
[12]={ [12]={
["id"]=12, ["id"]=12,
@ -97,7 +107,9 @@ local buff = {
["buff_type"]=1, ["buff_type"]=1,
["stack"]=2, ["stack"]=2,
["decr"]=1, ["decr"]=1,
["icon"]="dec_dmg_all_add" ["icon"]="dec_dmg_all_add",
["show_name"]=true,
["ispercent"]=1
}, },
[13]={ [13]={
["id"]=13, ["id"]=13,
@ -192,7 +204,8 @@ local buff = {
["buff_type"]=1, ["buff_type"]=1,
["stack"]=2, ["stack"]=2,
["decr"]=1, ["decr"]=1,
["icon"]="weakness_all_add" ["icon"]="weakness_all_add",
["ispercent"]=1
}, },
[25]={ [25]={
["id"]=25, ["id"]=25,
@ -406,6 +419,7 @@ local buff = {
["formula"]=4, ["formula"]=4,
["icon"]="burn", ["icon"]="burn",
["show_name"]=true, ["show_name"]=true,
["ispercent"]=1,
["fx_take"]={ ["fx_take"]={
36 36
} }
@ -416,6 +430,8 @@ local buff = {
["buff_type"]=1, ["buff_type"]=1,
["decr"]=2, ["decr"]=2,
["icon"]="vulnerable", ["icon"]="vulnerable",
["show_name"]=true,
["ispercent"]=1,
["fx_get"]={ ["fx_get"]={
34 34
} }
@ -444,6 +460,7 @@ local buff = {
["formula"]=4, ["formula"]=4,
["icon"]="poison", ["icon"]="poison",
["show_name"]=true, ["show_name"]=true,
["ispercent"]=1,
["fx_take"]={ ["fx_take"]={
35 35
} }
@ -467,6 +484,7 @@ local buff = {
["decr"]=2, ["decr"]=2,
["icon"]="corrupt", ["icon"]="corrupt",
["show_name"]=true, ["show_name"]=true,
["ispercent"]=1,
["fx_get"]={ ["fx_get"]={
19 19
} }
@ -479,6 +497,7 @@ local buff = {
["formula"]=4, ["formula"]=4,
["icon"]="bleed", ["icon"]="bleed",
["show_name"]=true, ["show_name"]=true,
["ispercent"]=1,
["fx_take"]={ ["fx_take"]={
31 31
} }
@ -490,6 +509,7 @@ local buff = {
["decr"]=2, ["decr"]=2,
["icon"]="weaken", ["icon"]="weaken",
["show_name"]=true, ["show_name"]=true,
["ispercent"]=1,
["fx_continued"]={ ["fx_continued"]={
33 33
} }
@ -530,7 +550,7 @@ local buff = {
["id"]=59, ["id"]=59,
["name"]="first_hand", ["name"]="first_hand",
["buff_type"]=1, ["buff_type"]=1,
["decr"]=3, ["decr"]=1,
["icon"]="first_hand" ["icon"]="first_hand"
}, },
[60]={ [60]={
@ -559,7 +579,8 @@ local buff = {
["stack"]=1, ["stack"]=1,
["decr"]=1, ["decr"]=1,
["icon"]="counterattack", ["icon"]="counterattack",
["show_name"]=true ["show_name"]=true,
["ispercent"]=1
}, },
[63]={ [63]={
["id"]=63, ["id"]=63,
@ -568,6 +589,7 @@ local buff = {
["decr"]=1, ["decr"]=1,
["icon"]="thorns", ["icon"]="thorns",
["show_name"]=true, ["show_name"]=true,
["ispercent"]=1,
["fx_continued"]={ ["fx_continued"]={
18 18
} }
@ -765,7 +787,7 @@ local buff = {
["decr"]=1, ["decr"]=1,
["formula"]=3, ["formula"]=3,
["icon"]="rebirth", ["icon"]="rebirth",
["fx_take"]={ ["fx_disappear"]={
44 44
} }
}, },
@ -790,6 +812,7 @@ local buff = {
["decr"]=1, ["decr"]=1,
["formula"]=3, ["formula"]=3,
["icon"]="self_heal", ["icon"]="self_heal",
["show_name"]=true,
["fx_take"]={ ["fx_take"]={
300027 300027
} }
@ -799,14 +822,103 @@ local buff = {
["name"]="charm", ["name"]="charm",
["buff_type"]=7, ["buff_type"]=7,
["decr"]=2, ["decr"]=2,
["icon"]="charm" ["icon"]="charm",
["show_name"]=true
}, },
[88]={ [88]={
["id"]=88, ["id"]=88,
["name"]="immune", ["name"]="immune",
["buff_type"]=7, ["buff_type"]=7,
["decr"]=1, ["decr"]=1,
["icon"]="immune" ["icon"]="immune",
["show_name"]=true
},
[89]={
["id"]=89,
["name"]="forever_first_hand",
["buff_type"]=1,
["decr"]=3,
["icon"]="first_hand"
},
[90]={
["id"]=90,
["name"]="forever_counterattack",
["buff_type"]=1,
["stack"]=1,
["decr"]=3,
["icon"]="counterattack",
["ispercent"]=1
},
[91]={
["id"]=91,
["name"]="forever_dec_dmg_red_add",
["buff_type"]=1,
["stack"]=2,
["position"]=1,
["decr"]=3,
["icon"]="dec_dmg_red_add",
["ispercent"]=1
},
[92]={
["id"]=92,
["name"]="forever_dec_dmg_yellow_add",
["buff_type"]=1,
["stack"]=2,
["position"]=2,
["decr"]=3,
["icon"]="dec_dmg_yellow_add",
["ispercent"]=1
},
[93]={
["id"]=93,
["name"]="forever_dec_dmg_green_add",
["buff_type"]=1,
["stack"]=2,
["position"]=3,
["decr"]=3,
["icon"]="dec_dmg_green_add",
["ispercent"]=1
},
[94]={
["id"]=94,
["name"]="forever_dec_dmg_blue_add",
["buff_type"]=1,
["stack"]=2,
["position"]=4,
["decr"]=3,
["icon"]="dec_dmg_blue_add",
["ispercent"]=1
},
[95]={
["id"]=95,
["name"]="forever_dec_dmg_purple_add",
["buff_type"]=1,
["stack"]=2,
["position"]=5,
["decr"]=3,
["icon"]="dec_dmg_purple_add",
["ispercent"]=1
},
[96]={
["id"]=96,
["name"]="forever_dec_dmg_all_add",
["buff_type"]=1,
["stack"]=2,
["decr"]=3,
["icon"]="dec_dmg_all_add",
["ispercent"]=1
},
[97]={
["id"]=97,
["name"]="forever_thorns",
["buff_type"]=1,
["decr"]=3,
["icon"]="thorns",
["show_name"]=true,
["ispercent"]=1,
["fx_continued"]={
18
}
} }
} }
local keys = { local keys = {
@ -898,12 +1010,21 @@ local keys = {
["ocean_shield"]=buff[85], ["ocean_shield"]=buff[85],
["self_heal"]=buff[86], ["self_heal"]=buff[86],
["charm"]=buff[87], ["charm"]=buff[87],
["immune"]=buff[88] ["immune"]=buff[88],
["forever_first_hand"]=buff[89],
["forever_counterattack"]=buff[90],
["forever_dec_dmg_red_add"]=buff[91],
["forever_dec_dmg_yellow_add"]=buff[92],
["forever_dec_dmg_green_add"]=buff[93],
["forever_dec_dmg_blue_add"]=buff[94],
["forever_dec_dmg_purple_add"]=buff[95],
["forever_dec_dmg_all_add"]=buff[96],
["forever_thorns"]=buff[97]
} }
} }
local config = { local config = {
data=buff, data=buff,
keys=keys, keys=keys,
count=88 count=97
} }
return config return config

View File

@ -492,6 +492,19 @@ local const = {
["activity_pvp_bounty_point"]={ ["activity_pvp_bounty_point"]={
["value"]=10 ["value"]=10
}, },
["activity_pvp_refresh_ad_times"]={
["value"]=1
},
["activity_pvp_refresh_cost"]={
["reward"]={
["type"]=1,
["type_for_nothing"]="Vw==",
["id"]=2,
["id_for_nothing"]="VA==",
["num"]=10,
["num_for_nothing"]="Vwg="
}
},
["activity_skin_fight_id_1"]={ ["activity_skin_fight_id_1"]={
["value"]=4104 ["value"]=4104
}, },
@ -510,6 +523,6 @@ local const = {
} }
} }
local config = { local config = {
data=const,count=102 data=const,count=104
} }
return config return config

View File

@ -440,7 +440,7 @@ local grid_type = {
["break_sfx"]="sfx_piece_zhongrushi_b01" ["break_sfx"]="sfx_piece_zhongrushi_b01"
}, },
[31]={ [31]={
["icon"]="battle_obstacle_lron_1", ["icon"]="battle_obstacle_iron_1",
["next_type"]=0, ["next_type"]=0,
["break_condition"]={ ["break_condition"]={
1, 1,
@ -453,7 +453,7 @@ local grid_type = {
["break_sfx"]="sfx_piece_tiexie_b01" ["break_sfx"]="sfx_piece_tiexie_b01"
}, },
[32]={ [32]={
["icon"]="battle_obstacle_lron_2", ["icon"]="battle_obstacle_iron_2",
["next_type"]=31, ["next_type"]=31,
["break_condition"]={ ["break_condition"]={
1, 1,
@ -466,7 +466,7 @@ local grid_type = {
["break_sfx"]="sfx_piece_tiexie_b01" ["break_sfx"]="sfx_piece_tiexie_b01"
}, },
[33]={ [33]={
["icon"]="battle_obstacle_lron_3", ["icon"]="battle_obstacle_iron_3",
["next_type"]=32, ["next_type"]=32,
["break_condition"]={ ["break_condition"]={
1, 1,

View File

@ -527,13 +527,42 @@ local LocalizationGlobalConst =
DUNGEON_RUNE_TIP_4 = "DUNGEON_RUNE_TIP_4", DUNGEON_RUNE_TIP_4 = "DUNGEON_RUNE_TIP_4",
DUNGEON_RUNE_TIP_5 = "DUNGEON_RUNE_TIP_5", DUNGEON_RUNE_TIP_5 = "DUNGEON_RUNE_TIP_5",
UNFINISHED = "UNFINISHED", UNFINISHED = "UNFINISHED",
RUNES_DESC_1 = "RUNES_DESC_1",
["DUNGEON_RUNE_DESC_1"]= "DUNGEON_RUNE_DESC_1", RUNES_DESC_2 = "RUNES_DESC_2",
["DUNGEON_RUNE_DESC_2"] = "DUNGEON_RUNE_DESC_2", RUNES_DESC_3 = "RUNES_DESC_3",
["DUNGEON_RUNE_DESC_3"] = "DUNGEON_RUNE_DESC_3", RUNES_DESC_4 = "RUNES_DESC_4",
["DUNGEON_RUNE_DESC_4"] = "DUNGEON_RUNE_DESC_4", RUNES_DESC_5 = "RUNES_DESC_5",
["DUNGEON_RUNE_DESC_5"] = "DUNGEON_RUNE_DESC_5", RUNES_DESC_6 = "RUNES_DESC_6",
RUNES_DESC_7 = "RUNES_DESC_7",
RUNES_DESC_8 = "RUNES_DESC_8",
RUNES_DESC_9 = "RUNES_DESC_9",
RUNES_DESC_10 = "RUNES_DESC_10",
RUNES_DESC_11 = "RUNES_DESC_11",
RUNES_DESC_12 = "RUNES_DESC_12",
RUNES_DESC_13 = "RUNES_DESC_13",
RUNES_DESC_14 = "RUNES_DESC_14",
RUNES_DESC_15 = "RUNES_DESC_15",
RUNES_DESC_16 = "RUNES_DESC_16",
RUNES_DESC_17 = "RUNES_DESC_17",
RUNES_DESC_18 = "RUNES_DESC_18",
RUNES_DESC_19 = "RUNES_DESC_19",
RUNES_DESC_20 = "RUNES_DESC_20",
RUNES_DESC_21 = "RUNES_DESC_21",
RUNES_DESC_22 = "RUNES_DESC_22",
RUNES_DESC_23 = "RUNES_DESC_23",
RUNES_DESC_24 = "RUNES_DESC_24",
RUNES_DESC_25 = "RUNES_DESC_25",
DUNGEON_RUNE_DESC_1 = "DUNGEON_RUNE_DESC_1",
DUNGEON_RUNE_DESC_2 = "DUNGEON_RUNE_DESC_2",
DUNGEON_RUNE_DESC_3 = "DUNGEON_RUNE_DESC_3",
DUNGEON_RUNE_DESC_4 = "DUNGEON_RUNE_DESC_4",
DUNGEON_RUNE_DESC_5 = "DUNGEON_RUNE_DESC_5",
DUNGEON_RUNE_DESC_6 = "DUNGEON_RUNE_DESC_6", DUNGEON_RUNE_DESC_6 = "DUNGEON_RUNE_DESC_6",
DUNGEON_RUNE_DESC_7 = "DUNGEON_RUNE_DESC_7",
DUNGEON_RUNE_DESC_8 = "DUNGEON_RUNE_DESC_8",
DUNGEON_RUNE_DESC_9 = "DUNGEON_RUNE_DESC_9",
DUNGEON_RUNE_DESC_10 = "DUNGEON_RUNE_DESC_10",
DUNGEON_RUNE_DESC_11 = "DUNGEON_RUNE_DESC_11",
} }
return LocalizationGlobalConst return LocalizationGlobalConst

View File

@ -2,8 +2,8 @@ local monster_dungeon_rune = {
[108]={ [108]={
["none"]="大史莱姆(红)", ["none"]="大史莱姆(红)",
["monster_base"]=10027, ["monster_base"]=10027,
["hp"]=681920000, ["hp"]=999999999,
["atk"]=6080000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20076, 20076,
@ -15,8 +15,8 @@ local monster_dungeon_rune = {
[208]={ [208]={
["none"]="大史莱姆(黄)", ["none"]="大史莱姆(黄)",
["monster_base"]=10025, ["monster_base"]=10025,
["hp"]=278310000, ["hp"]=999999999,
["atk"]=4040000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20070, 20070,
@ -28,8 +28,8 @@ local monster_dungeon_rune = {
[308]={ [308]={
["none"]="大史莱姆(蓝)", ["none"]="大史莱姆(蓝)",
["monster_base"]=10026, ["monster_base"]=10026,
["hp"]=278310000, ["hp"]=999999999,
["atk"]=4040000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20073, 20073,
@ -41,8 +41,8 @@ local monster_dungeon_rune = {
[408]={ [408]={
["none"]="大史莱姆(绿)", ["none"]="大史莱姆(绿)",
["monster_base"]=10024, ["monster_base"]=10024,
["hp"]=205490000, ["hp"]=999999999,
["atk"]=3950000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20067, 20067,
@ -54,8 +54,8 @@ local monster_dungeon_rune = {
[508]={ [508]={
["none"]="盾刀骷髅兵", ["none"]="盾刀骷髅兵",
["monster_base"]=10009, ["monster_base"]=10009,
["hp"]=482700000, ["hp"]=999999999,
["atk"]=5690000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20025, 20025,
@ -67,8 +67,8 @@ local monster_dungeon_rune = {
[608]={ [608]={
["none"]="盾刀骷髅兵(有头盔)", ["none"]="盾刀骷髅兵(有头盔)",
["monster_base"]=10039, ["monster_base"]=10039,
["hp"]=593840000, ["hp"]=999999999,
["atk"]=5780000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20112, 20112,
@ -80,8 +80,8 @@ local monster_dungeon_rune = {
[708]={ [708]={
["none"]="哥布林匕首(蓝)", ["none"]="哥布林匕首(蓝)",
["monster_base"]=10001, ["monster_base"]=10001,
["hp"]=474020000, ["hp"]=999999999,
["atk"]=5340000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20001, 20001,
@ -93,8 +93,8 @@ local monster_dungeon_rune = {
[808]={ [808]={
["none"]="哥布林匕首(紫)", ["none"]="哥布林匕首(紫)",
["monster_base"]=10003, ["monster_base"]=10003,
["hp"]=554250000, ["hp"]=999999999,
["atk"]=5310000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20007, 20007,
@ -106,8 +106,8 @@ local monster_dungeon_rune = {
[908]={ [908]={
["none"]="哥布林法师(红)", ["none"]="哥布林法师(红)",
["monster_base"]=10008, ["monster_base"]=10008,
["hp"]=298160000, ["hp"]=999999999,
["atk"]=4390000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20022, 20022,
@ -119,8 +119,8 @@ local monster_dungeon_rune = {
[1008]={ [1008]={
["none"]="哥布林法师(蓝)", ["none"]="哥布林法师(蓝)",
["monster_base"]=10005, ["monster_base"]=10005,
["hp"]=525000000, ["hp"]=999999999,
["atk"]=5020000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20013, 20013,
@ -132,8 +132,8 @@ local monster_dungeon_rune = {
[1108]={ [1108]={
["none"]="哥布林法师(绿)", ["none"]="哥布林法师(绿)",
["monster_base"]=10006, ["monster_base"]=10006,
["hp"]=372560000, ["hp"]=999999999,
["atk"]=4530000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20016, 20016,
@ -145,8 +145,8 @@ local monster_dungeon_rune = {
[1208]={ [1208]={
["none"]="哥布林法师(紫)", ["none"]="哥布林法师(紫)",
["monster_base"]=10007, ["monster_base"]=10007,
["hp"]=450590000, ["hp"]=999999999,
["atk"]=5230000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20019, 20019,
@ -158,8 +158,8 @@ local monster_dungeon_rune = {
[1308]={ [1308]={
["none"]="哥布林斧头(红)", ["none"]="哥布林斧头(红)",
["monster_base"]=10002, ["monster_base"]=10002,
["hp"]=426740000, ["hp"]=999999999,
["atk"]=4940000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20004, 20004,
@ -171,8 +171,8 @@ local monster_dungeon_rune = {
[1408]={ [1408]={
["none"]="哥布林棍棒(绿)", ["none"]="哥布林棍棒(绿)",
["monster_base"]=10004, ["monster_base"]=10004,
["hp"]=391500000, ["hp"]=999999999,
["atk"]=5410000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20010, 20010,
@ -184,8 +184,8 @@ local monster_dungeon_rune = {
[1508]={ [1508]={
["none"]="黑色食人花", ["none"]="黑色食人花",
["monster_base"]=10050, ["monster_base"]=10050,
["hp"]=474020000, ["hp"]=999999999,
["atk"]=5340000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20145, 20145,
@ -197,8 +197,8 @@ local monster_dungeon_rune = {
[1608]={ [1608]={
["none"]="红色蝙蝠恶魔", ["none"]="红色蝙蝠恶魔",
["monster_base"]=10052, ["monster_base"]=10052,
["hp"]=507910000, ["hp"]=999999999,
["atk"]=5800000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20151, 20151,
@ -210,8 +210,8 @@ local monster_dungeon_rune = {
[1708]={ [1708]={
["none"]="红色恶魔野猪", ["none"]="红色恶魔野猪",
["monster_base"]=10051, ["monster_base"]=10051,
["hp"]=347620000, ["hp"]=999999999,
["atk"]=4170000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20148, 20148,
@ -223,8 +223,8 @@ local monster_dungeon_rune = {
[1808]={ [1808]={
["none"]="红色蜥蜴剑士", ["none"]="红色蜥蜴剑士",
["monster_base"]=10047, ["monster_base"]=10047,
["hp"]=324830000, ["hp"]=999999999,
["atk"]=4460000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20136, 20136,
@ -236,8 +236,8 @@ local monster_dungeon_rune = {
[1908]={ [1908]={
["none"]="红色幽灵恶魔", ["none"]="红色幽灵恶魔",
["monster_base"]=10055, ["monster_base"]=10055,
["hp"]=309200000, ["hp"]=999999999,
["atk"]=3730000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20160, 20160,
@ -249,8 +249,8 @@ local monster_dungeon_rune = {
[2008]={ [2008]={
["none"]="红色蜘蛛", ["none"]="红色蜘蛛",
["monster_base"]=10046, ["monster_base"]=10046,
["hp"]=507910000, ["hp"]=999999999,
["atk"]=5800000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20133, 20133,
@ -262,8 +262,8 @@ local monster_dungeon_rune = {
[2108]={ [2108]={
["none"]="黄发剑士", ["none"]="黄发剑士",
["monster_base"]=10030, ["monster_base"]=10030,
["hp"]=554250000, ["hp"]=999999999,
["atk"]=5310000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20085, 20085,
@ -275,8 +275,8 @@ local monster_dungeon_rune = {
[2208]={ [2208]={
["none"]="火山甲壳虫", ["none"]="火山甲壳虫",
["monster_base"]=10061, ["monster_base"]=10061,
["hp"]=482700000, ["hp"]=999999999,
["atk"]=5690000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20178, 20178,
@ -288,8 +288,8 @@ local monster_dungeon_rune = {
[2308]={ [2308]={
["none"]="火山岩石怪", ["none"]="火山岩石怪",
["monster_base"]=10060, ["monster_base"]=10060,
["hp"]=298160000, ["hp"]=999999999,
["atk"]=4390000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20175, 20175,
@ -301,8 +301,8 @@ local monster_dungeon_rune = {
[2408]={ [2408]={
["none"]="剑盾士兵(黄发)", ["none"]="剑盾士兵(黄发)",
["monster_base"]=10034, ["monster_base"]=10034,
["hp"]=298160000, ["hp"]=999999999,
["atk"]=4390000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20097, 20097,
@ -314,8 +314,8 @@ local monster_dungeon_rune = {
[2508]={ [2508]={
["none"]="剑盾士兵(蓝发)", ["none"]="剑盾士兵(蓝发)",
["monster_base"]=10035, ["monster_base"]=10035,
["hp"]=372560000, ["hp"]=999999999,
["atk"]=4530000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20100, 20100,
@ -327,8 +327,8 @@ local monster_dungeon_rune = {
[2608]={ [2608]={
["none"]="骷髅弓箭手", ["none"]="骷髅弓箭手",
["monster_base"]=10038, ["monster_base"]=10038,
["hp"]=391500000, ["hp"]=999999999,
["atk"]=5410000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20109, 20109,
@ -340,8 +340,8 @@ local monster_dungeon_rune = {
[2708]={ [2708]={
["none"]="骷髅枪兵", ["none"]="骷髅枪兵",
["monster_base"]=10010, ["monster_base"]=10010,
["hp"]=347620000, ["hp"]=999999999,
["atk"]=4170000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20028, 20028,
@ -353,8 +353,8 @@ local monster_dungeon_rune = {
[2808]={ [2808]={
["none"]="骷髅小法师", ["none"]="骷髅小法师",
["monster_base"]=10040, ["monster_base"]=10040,
["hp"]=482700000, ["hp"]=999999999,
["atk"]=5690000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20115, 20115,
@ -366,8 +366,8 @@ local monster_dungeon_rune = {
[2908]={ [2908]={
["none"]="蓝发剑士", ["none"]="蓝发剑士",
["monster_base"]=10031, ["monster_base"]=10031,
["hp"]=345780000, ["hp"]=999999999,
["atk"]=4720000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20088, 20088,
@ -379,8 +379,8 @@ local monster_dungeon_rune = {
[3008]={ [3008]={
["none"]="蓝色蝙蝠恶魔", ["none"]="蓝色蝙蝠恶魔",
["monster_base"]=10041, ["monster_base"]=10041,
["hp"]=391500000, ["hp"]=999999999,
["atk"]=5410000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20118, 20118,
@ -392,8 +392,8 @@ local monster_dungeon_rune = {
[3108]={ [3108]={
["none"]="蓝色独眼蝙蝠", ["none"]="蓝色独眼蝙蝠",
["monster_base"]=10044, ["monster_base"]=10044,
["hp"]=191410000, ["hp"]=999999999,
["atk"]=3630000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20127, 20127,
@ -405,8 +405,8 @@ local monster_dungeon_rune = {
[3208]={ [3208]={
["none"]="蓝色恶魔野猪", ["none"]="蓝色恶魔野猪",
["monster_base"]=10042, ["monster_base"]=10042,
["hp"]=365170000, ["hp"]=999999999,
["atk"]=4980000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20121, 20121,
@ -418,8 +418,8 @@ local monster_dungeon_rune = {
[3308]={ [3308]={
["none"]="绿色食人花", ["none"]="绿色食人花",
["monster_base"]=10049, ["monster_base"]=10049,
["hp"]=409220000, ["hp"]=999999999,
["atk"]=4500000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20142, 20142,
@ -431,8 +431,8 @@ local monster_dungeon_rune = {
[3408]={ [3408]={
["none"]="绿色蜥蜴剑士", ["none"]="绿色蜥蜴剑士",
["monster_base"]=10048, ["monster_base"]=10048,
["hp"]=482700000, ["hp"]=999999999,
["atk"]=5690000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20139, 20139,
@ -444,8 +444,8 @@ local monster_dungeon_rune = {
[3508]={ [3508]={
["none"]="魔都小枪兵(红)", ["none"]="魔都小枪兵(红)",
["monster_base"]=10057, ["monster_base"]=10057,
["hp"]=191410000, ["hp"]=999999999,
["atk"]=3630000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20166, 20166,
@ -457,8 +457,8 @@ local monster_dungeon_rune = {
[3608]={ [3608]={
["none"]="魔都小枪兵(紫)", ["none"]="魔都小枪兵(紫)",
["monster_base"]=10058, ["monster_base"]=10058,
["hp"]=164360000, ["hp"]=999999999,
["atk"]=3050000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20169, 20169,
@ -470,8 +470,8 @@ local monster_dungeon_rune = {
[3708]={ [3708]={
["none"]="女巫师(蓝)", ["none"]="女巫师(蓝)",
["monster_base"]=10032, ["monster_base"]=10032,
["hp"]=525000000, ["hp"]=999999999,
["atk"]=5020000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20091, 20091,
@ -483,8 +483,8 @@ local monster_dungeon_rune = {
[3808]={ [3808]={
["none"]="女巫师(紫)", ["none"]="女巫师(紫)",
["monster_base"]=10033, ["monster_base"]=10033,
["hp"]=278310000, ["hp"]=999999999,
["atk"]=4040000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20094, 20094,
@ -496,8 +496,8 @@ local monster_dungeon_rune = {
[3908]={ [3908]={
["none"]="青绿鬼火", ["none"]="青绿鬼火",
["monster_base"]=10054, ["monster_base"]=10054,
["hp"]=191410000, ["hp"]=999999999,
["atk"]=3630000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20157, 20157,
@ -509,8 +509,8 @@ local monster_dungeon_rune = {
[4008]={ [4008]={
["none"]="人类弓箭手(红)", ["none"]="人类弓箭手(红)",
["monster_base"]=10036, ["monster_base"]=10036,
["hp"]=554250000, ["hp"]=999999999,
["atk"]=5310000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20103, 20103,
@ -522,8 +522,8 @@ local monster_dungeon_rune = {
[4108]={ [4108]={
["none"]="人类弓箭手(绿)", ["none"]="人类弓箭手(绿)",
["monster_base"]=10037, ["monster_base"]=10037,
["hp"]=205490000, ["hp"]=999999999,
["atk"]=3950000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20106, 20106,
@ -535,8 +535,8 @@ local monster_dungeon_rune = {
[4208]={ [4208]={
["none"]="人鱼双匕首(红)", ["none"]="人鱼双匕首(红)",
["monster_base"]=10065, ["monster_base"]=10065,
["hp"]=243300000, ["hp"]=999999999,
["atk"]=2900000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20187, 20187,
@ -548,8 +548,8 @@ local monster_dungeon_rune = {
[4308]={ [4308]={
["none"]="人鱼双匕首(蓝)", ["none"]="人鱼双匕首(蓝)",
["monster_base"]=10063, ["monster_base"]=10063,
["hp"]=191500000, ["hp"]=999999999,
["atk"]=2660000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20184, 20184,
@ -561,8 +561,8 @@ local monster_dungeon_rune = {
[4408]={ [4408]={
["none"]="兽人大刀兵(红)", ["none"]="兽人大刀兵(红)",
["monster_base"]=10014, ["monster_base"]=10014,
["hp"]=450590000, ["hp"]=999999999,
["atk"]=5230000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20037, 20037,
@ -574,8 +574,8 @@ local monster_dungeon_rune = {
[4508]={ [4508]={
["none"]="兽人大刀兵(黄)", ["none"]="兽人大刀兵(黄)",
["monster_base"]=10015, ["monster_base"]=10015,
["hp"]=507910000, ["hp"]=999999999,
["atk"]=5800000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20040, 20040,
@ -587,8 +587,8 @@ local monster_dungeon_rune = {
[4608]={ [4608]={
["none"]="兽人大刀兵(蓝)", ["none"]="兽人大刀兵(蓝)",
["monster_base"]=10013, ["monster_base"]=10013,
["hp"]=205490000, ["hp"]=999999999,
["atk"]=3950000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20034, 20034,
@ -600,8 +600,8 @@ local monster_dungeon_rune = {
[4708]={ [4708]={
["none"]="兽人大刀兵(绿)", ["none"]="兽人大刀兵(绿)",
["monster_base"]=10012, ["monster_base"]=10012,
["hp"]=482700000, ["hp"]=999999999,
["atk"]=5690000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20031, 20031,
@ -613,8 +613,8 @@ local monster_dungeon_rune = {
[4808]={ [4808]={
["none"]="兽人盾骨兵(红)", ["none"]="兽人盾骨兵(红)",
["monster_base"]=10017, ["monster_base"]=10017,
["hp"]=593840000, ["hp"]=999999999,
["atk"]=5780000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20046, 20046,
@ -626,8 +626,8 @@ local monster_dungeon_rune = {
[4908]={ [4908]={
["none"]="兽人盾骨兵(黄)", ["none"]="兽人盾骨兵(黄)",
["monster_base"]=10018, ["monster_base"]=10018,
["hp"]=593840000, ["hp"]=999999999,
["atk"]=5780000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20049, 20049,
@ -639,8 +639,8 @@ local monster_dungeon_rune = {
[5008]={ [5008]={
["none"]="兽人盾骨兵(蓝)", ["none"]="兽人盾骨兵(蓝)",
["monster_base"]=10019, ["monster_base"]=10019,
["hp"]=372560000, ["hp"]=999999999,
["atk"]=4530000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20052, 20052,
@ -652,8 +652,8 @@ local monster_dungeon_rune = {
[5108]={ [5108]={
["none"]="兽人盾骨兵(绿)", ["none"]="兽人盾骨兵(绿)",
["monster_base"]=10016, ["monster_base"]=10016,
["hp"]=593840000, ["hp"]=999999999,
["atk"]=5780000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20043, 20043,
@ -665,8 +665,8 @@ local monster_dungeon_rune = {
[5208]={ [5208]={
["none"]="双斧莫西干(红)", ["none"]="双斧莫西干(红)",
["monster_base"]=10029, ["monster_base"]=10029,
["hp"]=391500000, ["hp"]=999999999,
["atk"]=5410000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20082, 20082,
@ -678,8 +678,8 @@ local monster_dungeon_rune = {
[5308]={ [5308]={
["none"]="双斧莫西干(紫)", ["none"]="双斧莫西干(紫)",
["monster_base"]=10028, ["monster_base"]=10028,
["hp"]=298160000, ["hp"]=999999999,
["atk"]=4390000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20079, 20079,
@ -691,8 +691,8 @@ local monster_dungeon_rune = {
[5408]={ [5408]={
["none"]="水蜥蜴", ["none"]="水蜥蜴",
["monster_base"]=10064, ["monster_base"]=10064,
["hp"]=224450000, ["hp"]=999999999,
["atk"]=3190000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20190, 20190,
@ -704,8 +704,8 @@ local monster_dungeon_rune = {
[5508]={ [5508]={
["none"]="小史莱姆(红)", ["none"]="小史莱姆(红)",
["monster_base"]=10023, ["monster_base"]=10023,
["hp"]=507910000, ["hp"]=999999999,
["atk"]=5800000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20064, 20064,
@ -717,8 +717,8 @@ local monster_dungeon_rune = {
[5608]={ [5608]={
["none"]="小史莱姆(黄)", ["none"]="小史莱姆(黄)",
["monster_base"]=10021, ["monster_base"]=10021,
["hp"]=593840000, ["hp"]=999999999,
["atk"]=5780000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20058, 20058,
@ -730,8 +730,8 @@ local monster_dungeon_rune = {
[5708]={ [5708]={
["none"]="小史莱姆(蓝)", ["none"]="小史莱姆(蓝)",
["monster_base"]=10022, ["monster_base"]=10022,
["hp"]=205490000, ["hp"]=999999999,
["atk"]=3950000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20061, 20061,
@ -743,8 +743,8 @@ local monster_dungeon_rune = {
[5808]={ [5808]={
["none"]="小史莱姆(绿)", ["none"]="小史莱姆(绿)",
["monster_base"]=10020, ["monster_base"]=10020,
["hp"]=602910000, ["hp"]=999999999,
["atk"]=5280000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20055, 20055,
@ -756,8 +756,8 @@ local monster_dungeon_rune = {
[5908]={ [5908]={
["none"]="紫色独眼蝙蝠", ["none"]="紫色独眼蝙蝠",
["monster_base"]=10043, ["monster_base"]=10043,
["hp"]=474020000, ["hp"]=999999999,
["atk"]=5340000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20124, 20124,
@ -769,8 +769,8 @@ local monster_dungeon_rune = {
[6008]={ [6008]={
["none"]="紫色鬼火", ["none"]="紫色鬼火",
["monster_base"]=10053, ["monster_base"]=10053,
["hp"]=549890000, ["hp"]=999999999,
["atk"]=4690000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20154, 20154,
@ -782,8 +782,8 @@ local monster_dungeon_rune = {
[6108]={ [6108]={
["none"]="紫色幽灵恶魔", ["none"]="紫色幽灵恶魔",
["monster_base"]=10056, ["monster_base"]=10056,
["hp"]=191410000, ["hp"]=999999999,
["atk"]=3630000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20163, 20163,
@ -795,8 +795,8 @@ local monster_dungeon_rune = {
[6208]={ [6208]={
["none"]="紫色蜘蛛", ["none"]="紫色蜘蛛",
["monster_base"]=10045, ["monster_base"]=10045,
["hp"]=205490000, ["hp"]=999999999,
["atk"]=3950000, ["atk"]=999999999,
["atk_times"]=3, ["atk_times"]=3,
["hurt_skill"]={ ["hurt_skill"]={
20130, 20130,
@ -939,6 +939,9 @@ local monster_dungeon_rune = {
30206, 30206,
30207 30207
}, },
["passive_skill"]={
10013
},
["monster_exp"]=0 ["monster_exp"]=0
}, },
[7008]={ [7008]={
@ -979,7 +982,6 @@ local monster_dungeon_rune = {
30220 30220
}, },
["passive_skill"]={ ["passive_skill"]={
10013,
10014, 10014,
30218 30218
}, },
@ -1001,7 +1003,8 @@ local monster_dungeon_rune = {
30226, 30226,
30227, 30227,
30228, 30228,
30229 30229,
30230
}, },
["passive_skill"]={ ["passive_skill"]={
10013, 10013,

View File

@ -90,45 +90,45 @@ local runes_sub = {
}, },
["attr_5"]={ ["attr_5"]={
{ {
["type"]="attr_normal_hurtp_red", ["type"]="attr_normal_hurt_red",
["num"]=10000 ["num"]=10000
}, },
{ {
["type"]="attr_normal_hurtp_yellow", ["type"]="attr_normal_hurt_yellow",
["num"]=10000 ["num"]=10000
}, },
{ {
["type"]="attr_normal_hurtp_green", ["type"]="attr_normal_hurt_green",
["num"]=10000 ["num"]=10000
}, },
{ {
["type"]="attr_normal_hurtp_blue", ["type"]="attr_normal_hurt_blue",
["num"]=10000 ["num"]=10000
}, },
{ {
["type"]="attr_normal_hurtp_purple", ["type"]="attr_normal_hurt_purple",
["num"]=10000 ["num"]=10000
} }
}, },
["attr_6"]={ ["attr_6"]={
{ {
["type"]="attr_skill_hurtp_red", ["type"]="attr_skill_hurt_red",
["num"]=10000 ["num"]=10000
}, },
{ {
["type"]="attr_skill_hurtp_yellow", ["type"]="attr_skill_hurt_yellow",
["num"]=10000 ["num"]=10000
}, },
{ {
["type"]="attr_skill_hurtp_green", ["type"]="attr_skill_hurt_green",
["num"]=10000 ["num"]=10000
}, },
{ {
["type"]="attr_skill_hurtp_blue", ["type"]="attr_skill_hurt_blue",
["num"]=10000 ["num"]=10000
}, },
{ {
["type"]="attr_skill_hurtp_purple", ["type"]="attr_skill_hurt_purple",
["num"]=10000 ["num"]=10000
} }
}, },
@ -334,45 +334,45 @@ local runes_sub = {
}, },
["attr_5"]={ ["attr_5"]={
{ {
["type"]="attr_normal_hurtp_red", ["type"]="attr_normal_hurt_red",
["num"]=20000 ["num"]=20000
}, },
{ {
["type"]="attr_normal_hurtp_yellow", ["type"]="attr_normal_hurt_yellow",
["num"]=20000 ["num"]=20000
}, },
{ {
["type"]="attr_normal_hurtp_green", ["type"]="attr_normal_hurt_green",
["num"]=20000 ["num"]=20000
}, },
{ {
["type"]="attr_normal_hurtp_blue", ["type"]="attr_normal_hurt_blue",
["num"]=20000 ["num"]=20000
}, },
{ {
["type"]="attr_normal_hurtp_purple", ["type"]="attr_normal_hurt_purple",
["num"]=20000 ["num"]=20000
} }
}, },
["attr_6"]={ ["attr_6"]={
{ {
["type"]="attr_skill_hurtp_red", ["type"]="attr_skill_hurt_red",
["num"]=20000 ["num"]=20000
}, },
{ {
["type"]="attr_skill_hurtp_yellow", ["type"]="attr_skill_hurt_yellow",
["num"]=20000 ["num"]=20000
}, },
{ {
["type"]="attr_skill_hurtp_green", ["type"]="attr_skill_hurt_green",
["num"]=20000 ["num"]=20000
}, },
{ {
["type"]="attr_skill_hurtp_blue", ["type"]="attr_skill_hurt_blue",
["num"]=20000 ["num"]=20000
}, },
{ {
["type"]="attr_skill_hurtp_purple", ["type"]="attr_skill_hurt_purple",
["num"]=20000 ["num"]=20000
} }
}, },
@ -578,45 +578,45 @@ local runes_sub = {
}, },
["attr_5"]={ ["attr_5"]={
{ {
["type"]="attr_normal_hurtp_red", ["type"]="attr_normal_hurt_red",
["num"]=30000 ["num"]=30000
}, },
{ {
["type"]="attr_normal_hurtp_yellow", ["type"]="attr_normal_hurt_yellow",
["num"]=30000 ["num"]=30000
}, },
{ {
["type"]="attr_normal_hurtp_green", ["type"]="attr_normal_hurt_green",
["num"]=30000 ["num"]=30000
}, },
{ {
["type"]="attr_normal_hurtp_blue", ["type"]="attr_normal_hurt_blue",
["num"]=30000 ["num"]=30000
}, },
{ {
["type"]="attr_normal_hurtp_purple", ["type"]="attr_normal_hurt_purple",
["num"]=30000 ["num"]=30000
} }
}, },
["attr_6"]={ ["attr_6"]={
{ {
["type"]="attr_skill_hurtp_red", ["type"]="attr_skill_hurt_red",
["num"]=30000 ["num"]=30000
}, },
{ {
["type"]="attr_skill_hurtp_yellow", ["type"]="attr_skill_hurt_yellow",
["num"]=30000 ["num"]=30000
}, },
{ {
["type"]="attr_skill_hurtp_green", ["type"]="attr_skill_hurt_green",
["num"]=30000 ["num"]=30000
}, },
{ {
["type"]="attr_skill_hurtp_blue", ["type"]="attr_skill_hurt_blue",
["num"]=30000 ["num"]=30000
}, },
{ {
["type"]="attr_skill_hurtp_purple", ["type"]="attr_skill_hurt_purple",
["num"]=30000 ["num"]=30000
} }
}, },
@ -822,45 +822,45 @@ local runes_sub = {
}, },
["attr_5"]={ ["attr_5"]={
{ {
["type"]="attr_normal_hurtp_red", ["type"]="attr_normal_hurt_red",
["num"]=40000 ["num"]=40000
}, },
{ {
["type"]="attr_normal_hurtp_yellow", ["type"]="attr_normal_hurt_yellow",
["num"]=40000 ["num"]=40000
}, },
{ {
["type"]="attr_normal_hurtp_green", ["type"]="attr_normal_hurt_green",
["num"]=40000 ["num"]=40000
}, },
{ {
["type"]="attr_normal_hurtp_blue", ["type"]="attr_normal_hurt_blue",
["num"]=40000 ["num"]=40000
}, },
{ {
["type"]="attr_normal_hurtp_purple", ["type"]="attr_normal_hurt_purple",
["num"]=40000 ["num"]=40000
} }
}, },
["attr_6"]={ ["attr_6"]={
{ {
["type"]="attr_skill_hurtp_red", ["type"]="attr_skill_hurt_red",
["num"]=40000 ["num"]=40000
}, },
{ {
["type"]="attr_skill_hurtp_yellow", ["type"]="attr_skill_hurt_yellow",
["num"]=40000 ["num"]=40000
}, },
{ {
["type"]="attr_skill_hurtp_green", ["type"]="attr_skill_hurt_green",
["num"]=40000 ["num"]=40000
}, },
{ {
["type"]="attr_skill_hurtp_blue", ["type"]="attr_skill_hurt_blue",
["num"]=40000 ["num"]=40000
}, },
{ {
["type"]="attr_skill_hurtp_purple", ["type"]="attr_skill_hurt_purple",
["num"]=40000 ["num"]=40000
} }
}, },
@ -1066,45 +1066,45 @@ local runes_sub = {
}, },
["attr_5"]={ ["attr_5"]={
{ {
["type"]="attr_normal_hurtp_red", ["type"]="attr_normal_hurt_red",
["num"]=50000 ["num"]=50000
}, },
{ {
["type"]="attr_normal_hurtp_yellow", ["type"]="attr_normal_hurt_yellow",
["num"]=50000 ["num"]=50000
}, },
{ {
["type"]="attr_normal_hurtp_green", ["type"]="attr_normal_hurt_green",
["num"]=50000 ["num"]=50000
}, },
{ {
["type"]="attr_normal_hurtp_blue", ["type"]="attr_normal_hurt_blue",
["num"]=50000 ["num"]=50000
}, },
{ {
["type"]="attr_normal_hurtp_purple", ["type"]="attr_normal_hurt_purple",
["num"]=50000 ["num"]=50000
} }
}, },
["attr_6"]={ ["attr_6"]={
{ {
["type"]="attr_skill_hurtp_red", ["type"]="attr_skill_hurt_red",
["num"]=50000 ["num"]=50000
}, },
{ {
["type"]="attr_skill_hurtp_yellow", ["type"]="attr_skill_hurt_yellow",
["num"]=50000 ["num"]=50000
}, },
{ {
["type"]="attr_skill_hurtp_green", ["type"]="attr_skill_hurt_green",
["num"]=50000 ["num"]=50000
}, },
{ {
["type"]="attr_skill_hurtp_blue", ["type"]="attr_skill_hurt_blue",
["num"]=50000 ["num"]=50000
}, },
{ {
["type"]="attr_skill_hurtp_purple", ["type"]="attr_skill_hurt_purple",
["num"]=50000 ["num"]=50000
} }
}, },
@ -1310,45 +1310,45 @@ local runes_sub = {
}, },
["attr_5"]={ ["attr_5"]={
{ {
["type"]="attr_normal_hurtp_red", ["type"]="attr_normal_hurt_red",
["num"]=90000 ["num"]=90000
}, },
{ {
["type"]="attr_normal_hurtp_yellow", ["type"]="attr_normal_hurt_yellow",
["num"]=90000 ["num"]=90000
}, },
{ {
["type"]="attr_normal_hurtp_green", ["type"]="attr_normal_hurt_green",
["num"]=90000 ["num"]=90000
}, },
{ {
["type"]="attr_normal_hurtp_blue", ["type"]="attr_normal_hurt_blue",
["num"]=90000 ["num"]=90000
}, },
{ {
["type"]="attr_normal_hurtp_purple", ["type"]="attr_normal_hurt_purple",
["num"]=90000 ["num"]=90000
} }
}, },
["attr_6"]={ ["attr_6"]={
{ {
["type"]="attr_skill_hurtp_red", ["type"]="attr_skill_hurt_red",
["num"]=90000 ["num"]=90000
}, },
{ {
["type"]="attr_skill_hurtp_yellow", ["type"]="attr_skill_hurt_yellow",
["num"]=90000 ["num"]=90000
}, },
{ {
["type"]="attr_skill_hurtp_green", ["type"]="attr_skill_hurt_green",
["num"]=90000 ["num"]=90000
}, },
{ {
["type"]="attr_skill_hurtp_blue", ["type"]="attr_skill_hurt_blue",
["num"]=90000 ["num"]=90000
}, },
{ {
["type"]="attr_skill_hurtp_purple", ["type"]="attr_skill_hurt_purple",
["num"]=90000 ["num"]=90000
} }
}, },
@ -1554,45 +1554,45 @@ local runes_sub = {
}, },
["attr_5"]={ ["attr_5"]={
{ {
["type"]="attr_normal_hurtp_red", ["type"]="attr_normal_hurt_red",
["num"]=100000 ["num"]=100000
}, },
{ {
["type"]="attr_normal_hurtp_yellow", ["type"]="attr_normal_hurt_yellow",
["num"]=100000 ["num"]=100000
}, },
{ {
["type"]="attr_normal_hurtp_green", ["type"]="attr_normal_hurt_green",
["num"]=100000 ["num"]=100000
}, },
{ {
["type"]="attr_normal_hurtp_blue", ["type"]="attr_normal_hurt_blue",
["num"]=100000 ["num"]=100000
}, },
{ {
["type"]="attr_normal_hurtp_purple", ["type"]="attr_normal_hurt_purple",
["num"]=100000 ["num"]=100000
} }
}, },
["attr_6"]={ ["attr_6"]={
{ {
["type"]="attr_skill_hurtp_red", ["type"]="attr_skill_hurt_red",
["num"]=100000 ["num"]=100000
}, },
{ {
["type"]="attr_skill_hurtp_yellow", ["type"]="attr_skill_hurt_yellow",
["num"]=100000 ["num"]=100000
}, },
{ {
["type"]="attr_skill_hurtp_green", ["type"]="attr_skill_hurt_green",
["num"]=100000 ["num"]=100000
}, },
{ {
["type"]="attr_skill_hurtp_blue", ["type"]="attr_skill_hurt_blue",
["num"]=100000 ["num"]=100000
}, },
{ {
["type"]="attr_skill_hurtp_purple", ["type"]="attr_skill_hurt_purple",
["num"]=100000 ["num"]=100000
} }
}, },
@ -1798,45 +1798,45 @@ local runes_sub = {
}, },
["attr_5"]={ ["attr_5"]={
{ {
["type"]="attr_normal_hurtp_red", ["type"]="attr_normal_hurt_red",
["num"]=200000 ["num"]=200000
}, },
{ {
["type"]="attr_normal_hurtp_yellow", ["type"]="attr_normal_hurt_yellow",
["num"]=200000 ["num"]=200000
}, },
{ {
["type"]="attr_normal_hurtp_green", ["type"]="attr_normal_hurt_green",
["num"]=200000 ["num"]=200000
}, },
{ {
["type"]="attr_normal_hurtp_blue", ["type"]="attr_normal_hurt_blue",
["num"]=200000 ["num"]=200000
}, },
{ {
["type"]="attr_normal_hurtp_purple", ["type"]="attr_normal_hurt_purple",
["num"]=200000 ["num"]=200000
} }
}, },
["attr_6"]={ ["attr_6"]={
{ {
["type"]="attr_skill_hurtp_red", ["type"]="attr_skill_hurt_red",
["num"]=200000 ["num"]=200000
}, },
{ {
["type"]="attr_skill_hurtp_yellow", ["type"]="attr_skill_hurt_yellow",
["num"]=200000 ["num"]=200000
}, },
{ {
["type"]="attr_skill_hurtp_green", ["type"]="attr_skill_hurt_green",
["num"]=200000 ["num"]=200000
}, },
{ {
["type"]="attr_skill_hurtp_blue", ["type"]="attr_skill_hurt_blue",
["num"]=200000 ["num"]=200000
}, },
{ {
["type"]="attr_skill_hurtp_purple", ["type"]="attr_skill_hurt_purple",
["num"]=200000 ["num"]=200000
} }
}, },

View File

@ -9326,7 +9326,7 @@ local skill = {
["round"]=1 ["round"]=1
} }
}, },
["obj"]=2 ["obj"]=1
}, },
[5400423]={ [5400423]={
["position"]=5, ["position"]=5,
@ -9567,10 +9567,10 @@ local skill = {
["trigger"]=2, ["trigger"]=2,
["effect"]={ ["effect"]={
{ {
["type"]="dec_dmg_red_add", ["type"]="forever_dec_dmg_red_add",
["num"]=5000, ["num"]=5000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=9999
} }
}, },
["obj"]=1, ["obj"]=1,
@ -9584,10 +9584,10 @@ local skill = {
["trigger"]=2, ["trigger"]=2,
["effect"]={ ["effect"]={
{ {
["type"]="dec_dmg_yellow_add", ["type"]="forever_dec_dmg_yellow_add",
["num"]=5000, ["num"]=5000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=9999
} }
}, },
["obj"]=1, ["obj"]=1,
@ -9601,10 +9601,10 @@ local skill = {
["trigger"]=2, ["trigger"]=2,
["effect"]={ ["effect"]={
{ {
["type"]="dec_dmg_green_add", ["type"]="forever_dec_dmg_green_add",
["num"]=5000, ["num"]=5000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=9999
} }
}, },
["obj"]=1, ["obj"]=1,
@ -9618,10 +9618,10 @@ local skill = {
["trigger"]=2, ["trigger"]=2,
["effect"]={ ["effect"]={
{ {
["type"]="dec_dmg_blue_add", ["type"]="forever_dec_dmg_blue_add",
["num"]=5000, ["num"]=5000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=9999
} }
}, },
["obj"]=1, ["obj"]=1,
@ -9635,10 +9635,10 @@ local skill = {
["trigger"]=2, ["trigger"]=2,
["effect"]={ ["effect"]={
{ {
["type"]="dec_dmg_purple_add", ["type"]="forever_dec_dmg_purple_add",
["num"]=5000, ["num"]=5000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=9999
} }
}, },
["obj"]=1, ["obj"]=1,
@ -9652,10 +9652,10 @@ local skill = {
["trigger"]=2, ["trigger"]=2,
["effect"]={ ["effect"]={
{ {
["type"]="first_hand", ["type"]="forever_first_hand",
["num"]=10000, ["num"]=10000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=9999
} }
}, },
["obj"]=1, ["obj"]=1,
@ -9669,10 +9669,10 @@ local skill = {
["trigger"]=2, ["trigger"]=2,
["effect"]={ ["effect"]={
{ {
["type"]="counterattack", ["type"]="forever_counterattack",
["num"]=2500, ["num"]=2500,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=9999
} }
}, },
["obj"]=1 ["obj"]=1
@ -24046,7 +24046,7 @@ local skill = {
{ {
["type"]="state", ["type"]="state",
["attr"]="dmg_addition_all_add", ["attr"]="dmg_addition_all_add",
["op"]="=", ["op"]="<",
["v"]=0, ["v"]=0,
["side"]=1 ["side"]=1
} }
@ -24062,7 +24062,7 @@ local skill = {
{ {
["type"]="state", ["type"]="state",
["attr"]="vulnerable", ["attr"]="vulnerable",
["op"]="=", ["op"]="<",
["v"]=0, ["v"]=0,
["side"]=1 ["side"]=1
} }
@ -24252,7 +24252,7 @@ local skill = {
2, 2,
0 0
}, },
["cd"]=3, ["cd"]=2,
["cd_start"]=0, ["cd_start"]=0,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -24275,7 +24275,7 @@ local skill = {
{ {
["type"]="weaken", ["type"]="weaken",
["num"]=2500, ["num"]=2500,
["ratio"]=1000, ["ratio"]=10000,
["round"]=2 ["round"]=2
} }
}, },
@ -24305,7 +24305,7 @@ local skill = {
{ {
["type"]="weaken", ["type"]="weaken",
["num"]=2500, ["num"]=2500,
["ratio"]=1000, ["ratio"]=10000,
["round"]=2 ["round"]=2
} }
}, },
@ -24335,7 +24335,7 @@ local skill = {
{ {
["type"]="weaken", ["type"]="weaken",
["num"]=2500, ["num"]=2500,
["ratio"]=1000, ["ratio"]=10000,
["round"]=2 ["round"]=2
} }
}, },
@ -24370,7 +24370,7 @@ local skill = {
} }
}, },
["obj"]=2, ["obj"]=2,
["cd"]=7, ["cd"]=4,
["cd_start"]=0, ["cd_start"]=0,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -24398,8 +24398,8 @@ local skill = {
} }
}, },
["obj"]=2, ["obj"]=2,
["cd"]=7, ["cd"]=4,
["cd_start"]=3, ["cd_start"]=2,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
["sound_hit"]={ ["sound_hit"]={
@ -24492,7 +24492,7 @@ local skill = {
} }
}, },
["obj"]=2, ["obj"]=2,
["cd"]=5, ["cd"]=4,
["cd_start"]=0, ["cd_start"]=0,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -24514,7 +24514,7 @@ local skill = {
} }
}, },
["obj"]=2, ["obj"]=2,
["cd"]=5, ["cd"]=4,
["cd_start"]=1, ["cd_start"]=1,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -24536,7 +24536,7 @@ local skill = {
} }
}, },
["obj"]=2, ["obj"]=2,
["cd"]=5, ["cd"]=4,
["cd_start"]=2, ["cd_start"]=2,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -24555,7 +24555,7 @@ local skill = {
["effect_type"]=1, ["effect_type"]=1,
["trigger"]=1, ["trigger"]=1,
["obj"]=2, ["obj"]=2,
["cd"]=5, ["cd"]=4,
["cd_start"]=3, ["cd_start"]=3,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -24643,7 +24643,7 @@ local skill = {
["effect"]={ ["effect"]={
{ {
["type"]="heal", ["type"]="heal",
["num"]=10000, ["num"]=100000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=1 ["round"]=1
} }
@ -24656,7 +24656,7 @@ local skill = {
["effect"]={ ["effect"]={
{ {
["type"]="shield", ["type"]="shield",
["num"]=1000, ["num"]=2000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=3 ["round"]=3
}, },
@ -24769,10 +24769,22 @@ local skill = {
["num"]=20000, ["num"]=20000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=0
},
{
["type"]="imprison",
["num"]=0,
["ratio"]=10000,
["round"]=2
},
{
["type"]="corrupt",
["num"]=7500,
["ratio"]=10000,
["round"]=2
} }
}, },
["obj"]=2, ["obj"]=2,
["cd"]=4, ["cd"]=3,
["cd_start"]=0, ["cd_start"]=0,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -24796,11 +24808,11 @@ local skill = {
["type"]="normal_attack_add", ["type"]="normal_attack_add",
["num"]=2, ["num"]=2,
["ratio"]=10000, ["ratio"]=10000,
["round"]=2 ["round"]=3
} }
}, },
["obj"]=2, ["obj"]=1,
["cd"]=4, ["cd"]=3,
["cd_start"]=0 ["cd_start"]=0
}, },
[30197]={ [30197]={
@ -24884,7 +24896,7 @@ local skill = {
} }
}, },
["obj"]=1, ["obj"]=1,
["cd"]=11, ["cd"]=10,
["cd_start"]=0 ["cd_start"]=0
}, },
[30201]={ [30201]={
@ -24899,7 +24911,7 @@ local skill = {
} }
}, },
["obj"]=1, ["obj"]=1,
["cd"]=11, ["cd"]=10,
["cd_start"]=2 ["cd_start"]=2
}, },
[30202]={ [30202]={
@ -24914,7 +24926,7 @@ local skill = {
} }
}, },
["obj"]=1, ["obj"]=1,
["cd"]=11, ["cd"]=10,
["cd_start"]=4 ["cd_start"]=4
}, },
[30203]={ [30203]={
@ -24929,7 +24941,7 @@ local skill = {
} }
}, },
["obj"]=1, ["obj"]=1,
["cd"]=11, ["cd"]=10,
["cd_start"]=6 ["cd_start"]=6
}, },
[30204]={ [30204]={
@ -24944,7 +24956,7 @@ local skill = {
} }
}, },
["obj"]=1, ["obj"]=1,
["cd"]=11, ["cd"]=10,
["cd_start"]=8 ["cd_start"]=8
}, },
[30205]={ [30205]={
@ -24953,7 +24965,7 @@ local skill = {
["effect"]={ ["effect"]={
{ {
["type"]="hurt", ["type"]="hurt",
["num"]=20000, ["num"]=40000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=0
}, },
@ -24965,7 +24977,7 @@ local skill = {
} }
}, },
["obj"]=2, ["obj"]=2,
["cd"]=9, ["cd"]=3,
["cd_start"]=0, ["cd_start"]=0,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -24981,7 +24993,7 @@ local skill = {
["effect"]={ ["effect"]={
{ {
["type"]="hurt", ["type"]="hurt",
["num"]=20000, ["num"]=40000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=0
}, },
@ -24993,8 +25005,8 @@ local skill = {
} }
}, },
["obj"]=2, ["obj"]=2,
["cd"]=9, ["cd"]=3,
["cd_start"]=3, ["cd_start"]=1,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
["sound_hit"]={ ["sound_hit"]={
@ -25009,7 +25021,7 @@ local skill = {
["effect"]={ ["effect"]={
{ {
["type"]="hurt", ["type"]="hurt",
["num"]=20000, ["num"]=40000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=0
}, },
@ -25021,8 +25033,8 @@ local skill = {
} }
}, },
["obj"]=2, ["obj"]=2,
["cd"]=9, ["cd"]=3,
["cd_start"]=6, ["cd_start"]=2,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
["sound_hit"]={ ["sound_hit"]={
@ -25119,7 +25131,7 @@ local skill = {
["effect"]={ ["effect"]={
{ {
["type"]="shield", ["type"]="shield",
["num"]=1000, ["num"]=2000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=2 ["round"]=2
} }
@ -25129,7 +25141,7 @@ local skill = {
2, 2,
0 0
}, },
["cd"]=4, ["cd"]=3,
["cd_start"]=0, ["cd_start"]=0,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -25155,7 +25167,7 @@ local skill = {
2, 2,
0 0
}, },
["cd"]=4, ["cd"]=3,
["cd_start"]=1, ["cd_start"]=1,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -25181,7 +25193,7 @@ local skill = {
2, 2,
0 0
}, },
["cd"]=4, ["cd"]=3,
["cd_start"]=2, ["cd_start"]=2,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -25265,25 +25277,21 @@ local skill = {
["trigger"]=2, ["trigger"]=2,
["effect"]={ ["effect"]={
{ {
["type"]="dec_dmg_all_add", ["type"]="forever_dec_dmg_all_add",
["num"]=5000, ["num"]=5000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=999
} }
}, },
["obj"]=1 ["obj"]=1
}, },
[30219]={ [30219]={
["skill_type"]=9,
["skill_type_parameter"]={
12500
},
["effect_type"]=1, ["effect_type"]=1,
["trigger"]=1, ["trigger"]=1,
["effect"]={ ["effect"]={
{ {
["type"]="hurt", ["type"]="hurt",
["num"]=20000, ["num"]=80000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=0
}, },
@ -25299,7 +25307,7 @@ local skill = {
2, 2,
0 0
}, },
["cd"]=5, ["cd"]=4,
["cd_start"]=0, ["cd_start"]=0,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -25310,6 +25318,10 @@ local skill = {
["fx_self"]=200099 ["fx_self"]=200099
}, },
[30220]={ [30220]={
["skill_type"]=9,
["skill_type_parameter"]={
12500
},
["effect_type"]=1, ["effect_type"]=1,
["trigger"]=1, ["trigger"]=1,
["effect"]={ ["effect"]={
@ -25325,7 +25337,7 @@ local skill = {
2, 2,
0 0
}, },
["cd"]=5, ["cd"]=4,
["cd_start"]=2, ["cd_start"]=2,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -25409,10 +25421,10 @@ local skill = {
["trigger"]=2, ["trigger"]=2,
["effect"]={ ["effect"]={
{ {
["type"]="thorns", ["type"]="forever_thorns",
["num"]=1000, ["num"]=1000,
["ratio"]=10000, ["ratio"]=10000,
["round"]=0 ["round"]=999
} }
}, },
["obj"]=1 ["obj"]=1
@ -25422,8 +25434,8 @@ local skill = {
["trigger"]=1, ["trigger"]=1,
["effect"]={ ["effect"]={
{ {
["type"]="undead", ["type"]="rebirth",
["num"]=0, ["num"]=62500,
["ratio"]=10000, ["ratio"]=10000,
["round"]=2 ["round"]=2
}, },
@ -25439,7 +25451,7 @@ local skill = {
2, 2,
0 0
}, },
["cd"]=4, ["cd"]=6,
["cd_start"]=2, ["cd_start"]=2,
["shake_time"]=200, ["shake_time"]=200,
["shake_type"]=6, ["shake_type"]=6,
@ -25462,7 +25474,7 @@ local skill = {
2, 2,
0 0
}, },
["cd"]=7, ["cd"]=6,
["cd_start"]=0, ["cd_start"]=0,
["name_act"]="skill01" ["name_act"]="skill01"
}, },
@ -25479,7 +25491,7 @@ local skill = {
2, 2,
0 0
}, },
["cd"]=8, ["cd"]=6,
["cd_start"]=1, ["cd_start"]=1,
["name_act"]="skill01" ["name_act"]="skill01"
}, },
@ -25517,6 +25529,38 @@ local skill = {
["cd_start"]=4, ["cd_start"]=4,
["name_act"]="skill01" ["name_act"]="skill01"
}, },
[30230]={
["effect_type"]=1,
["trigger"]=1,
["effect"]={
{
["type"]="rebirth",
["num"]=62500,
["ratio"]=10000,
["round"]=2
},
{
["type"]="heal",
["num"]=125000,
["ratio"]=10000,
["round"]=1
}
},
["obj"]=1,
["skill_position"]={
2,
0
},
["cd"]=6,
["cd_start"]=5,
["shake_time"]=200,
["shake_type"]=6,
["sound_hit"]={
10018
},
["name_act"]="skill01",
["fx_self"]=200099
},
[40001]={ [40001]={
["effect_type"]=1, ["effect_type"]=1,
["trigger"]=1, ["trigger"]=1,
@ -30443,6 +30487,6 @@ local skill = {
} }
} }
local config = { local config = {
data=skill,count=1102 data=skill,count=1103
} }
return config return config

View File

@ -1636,7 +1636,7 @@ local skill_rogue = {
["qlt"]=4, ["qlt"]=4,
["type"]=1, ["type"]=1,
["parameter"]={ ["parameter"]={
1400325 1400425
}, },
["skill_position"]=1, ["skill_position"]=1,
["icon"]="270" ["icon"]="270"
@ -5319,7 +5319,7 @@ local skill_rogue = {
["effect"]={ ["effect"]={
{ {
["type"]="add_skill", ["type"]="add_skill",
["num"]=5400321, ["num"]=5400421,
["ratio"]=10000, ["ratio"]=10000,
["round"]=999 ["round"]=999
} }
@ -5336,7 +5336,7 @@ local skill_rogue = {
["effect"]={ ["effect"]={
{ {
["type"]="add_skill", ["type"]="add_skill",
["num"]=5400322, ["num"]=5400422,
["ratio"]=10000, ["ratio"]=10000,
["round"]=1 ["round"]=1
} }
@ -5353,7 +5353,7 @@ local skill_rogue = {
["effect"]={ ["effect"]={
{ {
["type"]="add_skill", ["type"]="add_skill",
["num"]=5400323, ["num"]=5400423,
["ratio"]=10000, ["ratio"]=10000,
["round"]=1 ["round"]=1
} }
@ -5372,7 +5372,7 @@ local skill_rogue = {
["effect"]={ ["effect"]={
{ {
["type"]="add_skill", ["type"]="add_skill",
["num"]=5400324, ["num"]=5400424,
["ratio"]=10000, ["ratio"]=10000,
["round"]=1 ["round"]=1
} }
@ -5391,7 +5391,7 @@ local skill_rogue = {
["effect"]={ ["effect"]={
{ {
["type"]="add_skill", ["type"]="add_skill",
["num"]=5400325, ["num"]=5400425,
["ratio"]=10000, ["ratio"]=10000,
["round"]=999 ["round"]=999
} }
@ -5408,7 +5408,7 @@ local skill_rogue = {
["effect"]={ ["effect"]={
{ {
["type"]="add_skill", ["type"]="add_skill",
["num"]=5400326, ["num"]=5400426,
["ratio"]=10000, ["ratio"]=10000,
["round"]=1 ["round"]=1
} }

View File

@ -527,7 +527,31 @@ local localization_global =
["DUNGEON_RUNE_TIP_4"] = "血量回复至50%", ["DUNGEON_RUNE_TIP_4"] = "血量回复至50%",
["DUNGEON_RUNE_TIP_5"] = "回合数+5", ["DUNGEON_RUNE_TIP_5"] = "回合数+5",
["UNFINISHED"] = "未完成", ["UNFINISHED"] = "未完成",
["RUNES_DESC_1"] = "符文铸台:{0}级",
["RUNES_DESC_2"] = "符文套装",
["RUNES_DESC_3"] = "符文铸台{0}级解锁",
["RUNES_DESC_4"] = "一键淬炼",
["RUNES_DESC_5"] = "淬炼",
["RUNES_DESC_6"] = "符文",
["RUNES_DESC_7"] = "符文铸台等级",
["RUNES_DESC_8"] = "1.消耗符文精粹提升符文铸台等级。\n2.符文铸台等级提升将解锁付文栏,有概率淬炼出高品质符文。\n3.所有英雄符文铸台等级互通。\n4.同一种属性最多只会出现2条。",
["RUNES_DESC_9"] = "符文套装效果",
["RUNES_DESC_10"] = "生命套装",
["RUNES_DESC_11"] = "攻击套装",
["RUNES_DESC_12"] = "增伤套装",
["RUNES_DESC_13"] = "暴击套装",
["RUNES_DESC_14"] = "爆伤套装",
["RUNES_DESC_15"] = "Lv1-2件套:{0}",
["RUNES_DESC_16"] = "Lv2-4件套:{0}",
["RUNES_DESC_17"] = "符文每日礼包",
["RUNES_DESC_18"] = "强化材料不足",
["RUNES_DESC_19"] = "符文精华不足,洋葱头也没办法",
["RUNES_DESC_20"] = "符文之塔获得",
["RUNES_DESC_21"] = "一键淬炼只有在出现S和SS符文或符文精粹不足时停止是否开始",
["RUNES_DESC_22"] = "符文属性",
["RUNES_DESC_23"] = "无套装效果",
["RUNES_DESC_24"] = "请先激活英雄",
["RUNES_DESC_25"] = "符文淬炼至少保留1个未锁符文",
["DUNGEON_RUNE_DESC_1"] = "目标", ["DUNGEON_RUNE_DESC_1"] = "目标",
["DUNGEON_RUNE_DESC_2"] = "再次挑战", ["DUNGEON_RUNE_DESC_2"] = "再次挑战",
["DUNGEON_RUNE_DESC_3"] = "通关获得", ["DUNGEON_RUNE_DESC_3"] = "通关获得",

View File

@ -876,28 +876,28 @@ local skill_rogue = {
["desc"]="九尾祥瑞激活所需能量<color=#3cff28>-2</color>。" ["desc"]="九尾祥瑞激活所需能量<color=#3cff28>-2</color>。"
}, },
[2400400]={ [2400400]={
["desc"]="解锁双截龙棍:使用后本次伤害提升,并额外造成多次大量技能伤害。" ["desc"]="解锁啊,打!:使用后本次伤害提升,并额外造成多次大量技能伤害。"
}, },
[2400401]={ [2400401]={
["desc"]="双截龙棍技能伤害提升。" ["desc"]="啊,打!技能伤害提升。"
}, },
[2400402]={ [2400402]={
["desc"]="双截龙棍沿+方向可额外消除<color=#3cff28>4</color>格。" ["desc"]="啊,打!沿+方向可额外消除<color=#3cff28>4</color>格。"
}, },
[2400403]={ [2400403]={
["desc"]="龙哥普攻有<color=#3cff28>5%</color>概率附加<color=#3cff28>眩晕</color>效果,<color=#3cff28>1</color>回合。" ["desc"]="龙哥普攻有<color=#3cff28>5%</color>概率附加<color=#3cff28>眩晕</color>效果,<color=#3cff28>1</color>回合。"
}, },
[2400404]={ [2400404]={
["desc"]="双截龙棍沿X方向可额外消除<color=#3cff28>4</color>格。" ["desc"]="啊,打!沿X方向可额外消除<color=#3cff28>4</color>格。"
}, },
[2400405]={ [2400405]={
["desc"]="双截龙棍可附加<color=#3cff28>流血</color>效果,<color=#3cff28>2</color>回合。" ["desc"]="啊,打!可附加<color=#3cff28>流血</color>效果,<color=#3cff28>2</color>回合。"
}, },
[2400406]={ [2400406]={
["desc"]="<color=#fcff28>Combo</color>:龙哥普攻对<color=#3cff28>冰霜</color>和<color=#3cff28>流血</color>敌人额外增伤。" ["desc"]="<color=#fcff28>Combo</color>:龙哥普攻对<color=#3cff28>冰霜</color>和<color=#3cff28>流血</color>敌人额外增伤。"
}, },
[2400407]={ [2400407]={
["desc"]="双截龙棍附加的<color=#3cff28>眩晕</color>效果概率提高至<color=#3cff28>10%</color>,回合数<color=#3cff28>+1</color>。" ["desc"]="啊,打!附加的<color=#3cff28>眩晕</color>效果概率提高至<color=#3cff28>10%</color>,回合数<color=#3cff28>+1</color>。"
}, },
[3400400]={ [3400400]={
["desc"]="解锁刺杀艺术:使用后本次伤害提升,并额外造成多次大量技能伤害。" ["desc"]="解锁刺杀艺术:使用后本次伤害提升,并额外造成多次大量技能伤害。"
@ -936,7 +936,7 @@ local skill_rogue = {
["desc"]="飞棺降物附加的<color=#3cff28>冰霜</color>效果,回合数<color=#3cff28>+1</color>。" ["desc"]="飞棺降物附加的<color=#3cff28>冰霜</color>效果,回合数<color=#3cff28>+1</color>。"
}, },
[4400404]={ [4400404]={
["desc"]="<color=#fcff28>Combo</color>:已逝行者普攻<color=#3cff28>腐败</color>敌人将恢复生命。" ["desc"]="<color=#fcff28>Combo</color>:已逝行者普攻<color=#3cff28>腐败</color>敌人将恢复生命。"
}, },
[4400405]={ [4400405]={
["desc"]="飞棺降物释放后为团队附加<color=#3cff28>重生</color>效果,<color=#3cff28>1</color>回合。" ["desc"]="飞棺降物释放后为团队附加<color=#3cff28>重生</color>效果,<color=#3cff28>1</color>回合。"

View File

@ -13,6 +13,7 @@ local CONST_PATHS = {
HeroConst = "app/module/hero/hero_const", HeroConst = "app/module/hero/hero_const",
FormationConst = "app/module/formation/formation_const", FormationConst = "app/module/formation/formation_const",
EquipConst = "app/module/equip/equip_const", EquipConst = "app/module/equip/equip_const",
RunesConst = "app/module/runes/runes_const",
DungeonConst = "app/module/dungeon/dungeon_const", DungeonConst = "app/module/dungeon/dungeon_const",
ShopConst = "app/module/shop/shop_const", ShopConst = "app/module/shop/shop_const",
SummonConst = "app/module/summon/summon_const", SummonConst = "app/module/summon/summon_const",
@ -310,7 +311,8 @@ GConst.MESSAGE_BOX_TYPE = {
GConst.MESSAGE_BOX_SHOW_TODAY = { GConst.MESSAGE_BOX_SHOW_TODAY = {
BOUNTY_BUY_LEVEL = 1, BOUNTY_BUY_LEVEL = 1,
HOT_SELL_BUY = 2, HOT_SELL_BUY = 2,
ACTIVITY_BUY_LEVEL = 2, ACTIVITY_BUY_LEVEL = 3,
RUNES_AUTO = 4,
} }
GConst.QUALITY_TYPE = GConst.QUALITY_TYPE =

View File

@ -434,10 +434,27 @@ function GFunc.getBuffDesc(buffName, effectNum, ispercent)
end end
function GFunc.getAttrDesc(attrName, attrNum) function GFunc.getAttrDesc(attrName, attrNum)
attrNum = attrNum // 100 attrNum = GFunc.getAttrShowValue(attrName, attrNum, true)
return I18N:getTextWithOtherKey("attr", "name", attrName, "desc", attrNum) return I18N:getTextWithOtherKey("attr", "name", attrName, "desc", attrNum)
end end
-- 获取属性用于显示的数值
function GFunc.getAttrShowValue(attrType, attrNum, notPercentSign)
if table.containValue(GConst.MATCH_ATTACK_ADD_NAME, attrType) or
table.containValue(GConst.MATCH_HP_ADD_NAME, attrType) or
table.containValue(GConst.MATCH_NORMAL_HURTP_NAME, attrType) or
table.containValue(GConst.MATCH_SKILL_HURTP_NAME, attrType) or
table.containValue(GConst.MATCH_CRIT_NAME, attrType) or
table.containValue(GConst.MATCH_CRIT_TIME_NAME, attrType) or
table.containValue(GConst.MATCH_CURED_NAME, attrType)
then
local str = notPercentSign and "" or "%"
return attrNum // GConst.BattleConst.PERCENT_FACTOR .. str
else
return attrNum // GConst.BattleConst.DEFAULT_FACTOR
end
end
function GFunc.getAttrName(key) function GFunc.getAttrName(key)
return I18N:getText("attr", key, "name") return I18N:getText("attr", key, "name")
end end
@ -1821,7 +1838,7 @@ function GFunc.formatPlayerName(name)
return name return name
end end
-- info = {array_heroes, heroes_equips, skins} -- 服务器返回的数据 -- info = {array_heroes, heroes_equips, skins, heroes_runes} -- 服务器返回的数据
function GFunc.formatPlayerFormationInfo(info) function GFunc.formatPlayerFormationInfo(info)
local formation = {} local formation = {}
if not info.array_heroes then if not info.array_heroes then
@ -1840,6 +1857,9 @@ function GFunc.formatPlayerFormationInfo(info)
if not info.skins then if not info.skins then
info.skins = {} info.skins = {}
end end
if not info.heroes_runes then
info.heroes_runes = {}
end
for matchType, heroEntity in pairs(formation) do for matchType, heroEntity in pairs(formation) do
local heroId = heroEntity:getCfgId() local heroId = heroEntity:getCfgId()
@ -1868,6 +1888,13 @@ function GFunc.formatPlayerFormationInfo(info)
if #skinIds > 0 then if #skinIds > 0 then
heroEntity:setSkins(skinIds) heroEntity:setSkins(skinIds)
end 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 end
return formation return formation

View File

@ -20,6 +20,7 @@ BattleConst.SKILL_TYPE_ASSISTING = 3
BattleConst.SKILL_TYPE_PASSIVE = 4 BattleConst.SKILL_TYPE_PASSIVE = 4
BattleConst.SKILL_SELECT_COUNT = 3 BattleConst.SKILL_SELECT_COUNT = 3
BattleConst.DEFAULT_FACTOR = 10000 BattleConst.DEFAULT_FACTOR = 10000
BattleConst.PERCENT_FACTOR = 100
BattleConst.TIME_FACTOR = 1000 BattleConst.TIME_FACTOR = 1000
BattleConst.INIT_POS_X = 140 -- 战斗单位初始化的坐标 BattleConst.INIT_POS_X = 140 -- 战斗单位初始化的坐标
BattleConst.UNIT_FRONT_POS_X = 0 -- 战斗单位身前的坐标 BattleConst.UNIT_FRONT_POS_X = 0 -- 战斗单位身前的坐标

View File

@ -1,5 +1,14 @@
local HeroConst = {} local HeroConst = {}
-- 英雄颜色类型
HeroConst.MATCH_TYPE = {
RED = 1,
YELLOW = 2,
GREEN = 3,
BLUE = 4,
PURPLE = 5
}
HeroConst.MATCH_ICON_NAME = { HeroConst.MATCH_ICON_NAME = {
[1] = "match_1", [1] = "match_1",
[2] = "match_2", [2] = "match_2",
@ -21,7 +30,7 @@ HeroConst.PANEL_TYPE = {
HERO = 1, HERO = 1,
WEAPON = 2, WEAPON = 2,
ARMOR = 3, ARMOR = 3,
SKIN = 4, RUNES = 4,
} }
-- 总计 -- 总计
@ -70,6 +79,18 @@ HeroConst.ATTR_SHOW_SKIN = {
GConst.MATCH_SKILL_HURTP_NAME, -- 技能增伤百分比 GConst.MATCH_SKILL_HURTP_NAME, -- 技能增伤百分比
GConst.MATCH_CURED_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 = { HeroConst.SHOW_NODE = {
@ -77,6 +98,7 @@ HeroConst.SHOW_NODE = {
HeroConst.ATTR_SHOW_BASE, HeroConst.ATTR_SHOW_BASE,
HeroConst.ATTR_SHOW_WEAPON, HeroConst.ATTR_SHOW_WEAPON,
HeroConst.ATTR_SHOW_ARMOR, HeroConst.ATTR_SHOW_ARMOR,
HeroConst.ATTR_SHOW_RUNES,
HeroConst.ATTR_SHOW_SKIN, HeroConst.ATTR_SHOW_SKIN,
} }

View File

@ -1,7 +1,11 @@
local HeroManager = class("HeroManager", BaseModule) local HeroManager = class("HeroManager", BaseModule)
function HeroManager:showHeroDetailUI(heroId, onlyLook, heroEntity, skinId, formationType) function HeroManager:showHeroDetailUI(heroId, onlyLook, heroEntity, formationType)
UIManager:showUI("app/ui/hero/hero_detail_ui", {heroId = heroId, onlyLook = onlyLook, heroEntity = heroEntity, skinId = skinId, formationType = 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 end
function HeroManager:showHeroUnlockUI(heroIdList) function HeroManager:showHeroUnlockUI(heroIdList)

View File

@ -19,6 +19,7 @@ ItemConst.ITEM_ID_ARENA_TICKET = 22
ItemConst.ITEM_ID_FOURTEEN_DAY_EXCHANGE = 51 ItemConst.ITEM_ID_FOURTEEN_DAY_EXCHANGE = 51
ItemConst.ITEM_ID_GLOD_WING = 49 ItemConst.ITEM_ID_GLOD_WING = 49
ItemConst.ITEM_ID_SLIVER_WING = 50 ItemConst.ITEM_ID_SLIVER_WING = 50
ItemConst.ITEM_ID_RUNES = 55
ItemConst.ITEM_TYPE = { ItemConst.ITEM_TYPE = {
RES = 1, RES = 1,

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 18d45baac20fe4d4b8f98e500a15c222
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,29 @@
local RunesConst = {}
RunesConst.GIFT_IDS = {
210102,
210202,
210302,
}
RunesConst.QUALITY_ICON = {
[1] = "hero_rune_f",
[2] = "hero_rune_e",
[3] = "hero_rune_d",
[4] = "hero_rune_c",
[5] = "hero_rune_b",
[6] = "hero_rune_a",
[7] = "hero_rune_s",
[8] = "hero_rune_ss",
}
-- 最大属性栏位数
RunesConst.MAX_ATTR_GRID_COUNT = 6
-- 品质个数
RunesConst.MAX_QUALITY_COUNT = 8
-- 最大套装个数
RunesConst.MAX_SUITS_COUNT = 5
-- 最大符文种类个数
RunesConst.MAX_ATTR_COUNT = 11
return RunesConst

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 7209380a6f275fe4fa7fd87e464fde53 guid: 4bda2a68bd04f8e4993df04a2b3878c7
ScriptedImporter: ScriptedImporter:
internalIDToNameTable: [] internalIDToNameTable: []
externalObjects: {} externalObjects: {}

View File

@ -0,0 +1,45 @@
local RunesManager = class("RunesManager", BaseModule)
-- 锁定和解锁属性栏
function RunesManager:reqChangeLockGrid(heroId, index, isLock)
self:sendMessage(ProtoMsgType.FromMsgEnum.RuneLockReq, {hero_id = heroId, grid_num = index, lock = isLock}, {}, self.rspChangeLockGrid)
end
function RunesManager:rspChangeLockGrid(result)
if result.hero_girds then
DataManager.RunesData:onGridLockSuccess(result.reqData.hero_id, result.hero_girds.grids)
end
end
-- 淬炼
function RunesManager:reqQuenching(heroId, autoCount)
if DataManager.RunesData:getRunes(heroId):getAttrLockCount() >= DataManager.RunesData:getUnlockCount() then
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_25))
return
end
if self.isReqQuenching then
return
end
local cost = DataManager.RunesData:getRunes(heroId):getMaterialCost()
if not GFunc.checkCost(GFunc.getRewardId(cost), GFunc.getRewardNum(cost), true) then
UIManager:showUI("app/ui/runes/runes_source_ui")
return
end
self.isReqQuenching = true
self:sendMessage(ProtoMsgType.FromMsgEnum.RuneQuenchingReq, {hero_id = heroId, auto_count = autoCount}, {}, self.rspQuenching, BIReport.ITEM_GET_TYPE.RUNES_QUENCHING)
end
function RunesManager:rspQuenching(result)
self.isReqQuenching = false
if result.err_code == GConst.ERROR_STR.SUCCESS then
DataManager.RunesData:onQuenchingSuccess(result.level, result.exp, result.reqData.hero_id, result.hero_girds.grids)
end
end
function RunesManager:rspUpdate(result)
DataManager.RunesData:init(result.rune)
end
return RunesManager

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 88f86325d3b00894d8fb5beb962a5ac0
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -48,7 +48,7 @@ function TipsManager:showRewardTips(rewardId, rewardType, tarPrefabObj, alignTyp
return return
elseif info.type == GConst.ItemConst.ITEM_TYPE.SKIN then 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 return
elseif info.type == GConst.ItemConst.ITEM_TYPE.RANDOM_BOX_ITEM or info.type == GConst.ItemConst.ITEM_TYPE.FIXED_BOX_ITEM then elseif info.type == GConst.ItemConst.ITEM_TYPE.RANDOM_BOX_ITEM or info.type == GConst.ItemConst.ITEM_TYPE.FIXED_BOX_ITEM then
self:showBoxItemTips(rewardId) self:showBoxItemTips(rewardId)

View File

@ -1,6 +1,4 @@
local AttrCell = class("AttrCell", BaseCell) local AttrCell = class("AttrCell", BaseCell)
local DEFAULT_FACTOR = GConst.BattleConst.DEFAULT_FACTOR
local PERCENT_FACTOR = 100
function AttrCell:init() function AttrCell:init()
local uiMap = self:getUIMap() local uiMap = self:getUIMap()
@ -63,9 +61,11 @@ function AttrCell:showHp()
value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getHp() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getHp()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getHp(self.heroEntity) 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 end
self.txValue:setText(value // DEFAULT_FACTOR) self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end end
-- 显示攻击力 -- 显示攻击力
@ -95,9 +95,11 @@ function AttrCell:showAtk()
value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getAttack() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getAttack()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getAttack(self.heroEntity) 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 end
self.txValue:setText(value // DEFAULT_FACTOR) self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end end
-- 显示普攻增伤 -- 显示普攻增伤
@ -117,9 +119,11 @@ function AttrCell:showNormalHurt()
value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getNormalHurt() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getNormalHurt()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getNormalHurt(self.heroEntity) 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 end
self.txValue:setText(value // DEFAULT_FACTOR) self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end end
-- 显示技能增伤 -- 显示技能增伤
@ -139,9 +143,11 @@ function AttrCell:showSkillHurt()
value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getSkillHurt() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getSkillHurt()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getSkillHurt(self.heroEntity) 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 end
self.txValue:setText(value // DEFAULT_FACTOR) self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end end
-- 显示暴击率 -- 显示暴击率
@ -158,9 +164,11 @@ function AttrCell:showCrit()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getCritPercent(self.heroEntity) 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 end
self.txValue:setText(value // PERCENT_FACTOR .. "%") self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end end
-- 显示暴击伤害百分比 -- 显示暴击伤害百分比
@ -177,9 +185,11 @@ function AttrCell:showCritAtk()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getCritHurtPercent(self.heroEntity) 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 end
self.txValue:setText(value // PERCENT_FACTOR .. "%") self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end end
-- 显示普攻增伤百分比 -- 显示普攻增伤百分比
@ -200,9 +210,11 @@ function AttrCell:showNormalHurtp()
-- value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getNormalHurtPercent() -- value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getNormalHurtPercent()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getNormalHurtPercent(self.heroEntity) 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 end
self.txValue:setText(value // PERCENT_FACTOR .. "%") self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end end
-- 显示技能增伤百分比 -- 显示技能增伤百分比
@ -223,9 +235,11 @@ function AttrCell:showSkillHurtp()
-- value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getSkillHurtPercent() -- value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getSkillHurtPercent()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getSkillHurtPercent(self.heroEntity) 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 end
self.txValue:setText(value // PERCENT_FACTOR .. "%") self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end end
-- 显示治疗效果提升百分比 -- 显示治疗效果提升百分比
@ -242,9 +256,11 @@ function AttrCell:showCured()
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then
elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then
value = value + DataManager.SkinData:getHealPercent(self.heroEntity) 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 end
self.txValue:setText(value // PERCENT_FACTOR .. "%") self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value))
end end
return AttrCell return AttrCell

View File

@ -20,11 +20,13 @@ function AttrNodeCell:refresh(heroEntity, node)
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_16)) self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_16))
elseif node == GConst.HeroConst.ATTR_SHOW_SKIN then elseif node == GConst.HeroConst.ATTR_SHOW_SKIN then
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_17)) 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 end
self.attrCount = 0 self.attrCount = 0
for index, attr in ipairs(node) do 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 self.attrCount = self.attrCount + 1
CellManager:loadCellAsync(ATTR_CELL_PATH, ATTR_CELL, self.itemsRoot, function(cell) CellManager:loadCellAsync(ATTR_CELL_PATH, ATTR_CELL, self.itemsRoot, function(cell)
cell:refresh(heroEntity, node, attr) cell:refresh(heroEntity, node, attr)
@ -33,6 +35,18 @@ function AttrNodeCell:refresh(heroEntity, node)
end end
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() function AttrNodeCell:getShowAttrCount()
return self.attrCount return self.attrCount

View File

@ -44,7 +44,7 @@ function HeroAttrUI:onRefresh()
local totalHeight = 0 local totalHeight = 0
for index, node in ipairs(GConst.HeroConst.SHOW_NODE) do 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) CellManager:loadCellAsync(ATTR_NODE_CELL_PATH, ATTR_NODE_CELL, self.rootNodes, function(cell)
cell:refresh(self.heroEntity, node) cell:refresh(self.heroEntity, node)
@ -60,4 +60,17 @@ function HeroAttrUI:onRefresh()
self.rootNodes:setAnchoredPositionY(0) self.rootNodes:setAnchoredPositionY(0)
end 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 return HeroAttrUI

View File

@ -58,7 +58,7 @@ function HeroComp:init()
if heroId then if heroId then
local hero = DataManager.HeroData:getHeroById(heroId) local hero = DataManager.HeroData:getHeroById(heroId)
if hero then if hero then
ModuleManager.HeroManager:showHeroDetailUI(heroId, nil, nil, nil, self.battleType) ModuleManager.HeroManager:showHeroDetailUI(heroId, nil, nil, self.battleType)
end end
end end
end) end)
@ -265,7 +265,7 @@ function HeroComp:onClickHero(cell, heroId)
self.largeHeroCell:refresh(entity, not entity:isActived(), self.onClickUseFunc) self.largeHeroCell:refresh(entity, not entity:isActived(), self.onClickUseFunc)
self.largeHeroCell:showCheck(self.curFormation[entity:getMatchType()] == heroId) self.largeHeroCell:showCheck(self.curFormation[entity:getMatchType()] == heroId)
else 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) self.largeHeroCell:getBaseObject():setAnchoredPositionX(OUT_SCREEN_X)
end end
else else

View File

@ -2,10 +2,9 @@ local HeroDetailUI = class("HeroDetailUI", BaseUI)
local COMP_HERO = "app/ui/hero/hero_info_comp" local COMP_HERO = "app/ui/hero/hero_info_comp"
local COMP_WEAPON = "app/ui/hero/weapon_info_comp" local COMP_WEAPON = "app/ui/hero/weapon_info_comp"
local COMP_ARMOR = "app/ui/hero/armor_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_HERO = 942
local SIZE_DELTA_Y_LOOK_HERO = 802 local SIZE_DELTA_Y_LOOK_HERO = 802
local SIZE_DELTA_Y_LOOK_SKIN = 720
function HeroDetailUI:isFullScreen() function HeroDetailUI:isFullScreen()
return false return false
@ -20,12 +19,7 @@ function HeroDetailUI:onPressBackspace()
end end
function HeroDetailUI:ctor(parmas) 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 self.panelType = parmas.panelType or GConst.HeroConst.PANEL_TYPE.HERO
end
self.formationType = parmas.formationType self.formationType = parmas.formationType
self.onlyLook = parmas.onlyLook self.onlyLook = parmas.onlyLook
if parmas.heroEntity then if parmas.heroEntity then
@ -43,9 +37,10 @@ function HeroDetailUI:onLoadRootComplete()
self.heroInfo = uiMap["hero_detail_ui.hero_info"] self.heroInfo = uiMap["hero_detail_ui.hero_info"]
self.weaponInfo = uiMap["hero_detail_ui.weapon_info"] self.weaponInfo = uiMap["hero_detail_ui.weapon_info"]
self.armorInfo = uiMap["hero_detail_ui.armor_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.txTitle = uiMap["hero_detail_ui.common.img_title.tx_title"]
self.btnClose = uiMap["hero_detail_ui.common.btn_close"] 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.btnHero = uiMap["hero_detail_ui.common.btns.btn_hero"]
self.txHero1 = uiMap["hero_detail_ui.common.btns.btn_hero.tx_btn"] self.txHero1 = uiMap["hero_detail_ui.common.btns.btn_hero.tx_btn"]
self.selectHero = uiMap["hero_detail_ui.common.btns.btn_hero.select"] 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.txArmor1 = uiMap["hero_detail_ui.common.btns.btn_armor.tx_btn"]
self.selectArmor = uiMap["hero_detail_ui.common.btns.btn_armor.select"] 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.txArmor2 = uiMap["hero_detail_ui.common.btns.btn_armor.select.tx_select"]
self.btnSkin = uiMap["hero_detail_ui.common.btns.btn_skin"] self.btnRunes = uiMap["hero_detail_ui.common.btns.btn_runes"]
self.lockSkin = uiMap["hero_detail_ui.common.btns.btn_skin.content.img_lock"] self.lockRunes = uiMap["hero_detail_ui.common.btns.btn_runes.content.img_lock"]
self.txSkin1 = uiMap["hero_detail_ui.common.btns.btn_skin.content.tx_btn"] self.txRunes1 = uiMap["hero_detail_ui.common.btns.btn_runes.content.tx_btn"]
self.selectSkin = uiMap["hero_detail_ui.common.btns.btn_skin.select"] self.selectRunes = uiMap["hero_detail_ui.common.btns.btn_runes.select"]
self.txSkin2 = uiMap["hero_detail_ui.common.btns.btn_skin.select.tx_select"] self.txRunes2 = uiMap["hero_detail_ui.common.btns.btn_runes.select.tx_select"]
self.btnLeft = uiMap["hero_detail_ui.common.btn_left"] self.btnLeft = uiMap["hero_detail_ui.common.btn_left"]
self.btnRight = uiMap["hero_detail_ui.common.btn_right"] 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.txWeapon2:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_1))
self.txArmor1:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_2)) self.txArmor1:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_2))
self.txArmor2: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.txRunes1:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_6))
self.txSkin2:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN)) self.txRunes2:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_6))
if not DataManager.EquipData:isWeaponOpen() then if not DataManager.EquipData:isWeaponOpen() then
self.lockWeapon:setVisible(true) self.lockWeapon:setVisible(true)
GFunc.centerImgAndTx(self.lockWeapon, self.txWeapon1, 5) GFunc.centerImgAndTx(self.lockWeapon, self.txWeapon1, 5)
@ -88,11 +83,11 @@ function HeroDetailUI:onLoadRootComplete()
else else
self.lockArmor:setVisible(false) self.lockArmor:setVisible(false)
end end
if not DataManager.SkinData:isOpen() then if not DataManager.RunesData:isOpen() then
self.lockSkin:setVisible(true) self.lockRunes:setVisible(true)
GFunc.centerImgAndTx(self.lockSkin, self.txSkin1, 5) GFunc.centerImgAndTx(self.lockRunes, self.txRunes1, 5)
else else
self.lockSkin:setVisible(false) self.lockRunes:setVisible(false)
end end
self.heroList = DataManager.HeroData:getAllHeroesSort(self.formationType) self.heroList = DataManager.HeroData:getAllHeroesSort(self.formationType)
@ -117,18 +112,22 @@ function HeroDetailUI:onLoadRootComplete()
self.panelType = GConst.HeroConst.PANEL_TYPE.ARMOR self.panelType = GConst.HeroConst.PANEL_TYPE.ARMOR
self:refreshShow() self:refreshShow()
end) end)
self.btnSkin:addClickListener(function() self.btnRunes:addClickListener(function()
if not DataManager.SkinData:isOpen(true) then if not DataManager.RunesData:isOpen(true) then
return return
end 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() self:refreshShow()
end) end)
self.btnClose:addClickListener(function() self.btnClose:addClickListener(function()
self:closeUI() self:closeUI()
end) end)
self.btnLeft:addClickListener(function() self.btnLeft:addClickListener(function()
if not self:isExistLeftHero() then if not self:isShowLeftArrow() then
return return
end end
self.heroEntity = DataManager.HeroData:getHeroById(self.heroList[self.idxLast].cfgId) self.heroEntity = DataManager.HeroData:getHeroById(self.heroList[self.idxLast].cfgId)
@ -136,7 +135,7 @@ function HeroDetailUI:onLoadRootComplete()
self:refreshShow() self:refreshShow()
end) end)
self.btnRight:addClickListener(function() self.btnRight:addClickListener(function()
if not self:isExistRightHero() then if not self:isShowRightArrow() then
return return
end end
self.heroEntity = DataManager.HeroData:getHeroById(self.heroList[self.idxNext].cfgId) 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:addEventListener(EventManager.CUSTOM_EVENT.GO_DUNGEON_UI, function()
self:closeUI() self:closeUI()
end) end)
self:addEventListener(EventManager.CUSTOM_EVENT.SKIN_SELECT, function(skinId)
self.compSkin:refreshSelectSkin(skinId)
end)
end end
function HeroDetailUI:updateSide() function HeroDetailUI:updateSide()
@ -190,28 +186,26 @@ function HeroDetailUI:refreshShow()
self:showWeaponInfo() self:showWeaponInfo()
elseif self.panelType == GConst.HeroConst.PANEL_TYPE.ARMOR then elseif self.panelType == GConst.HeroConst.PANEL_TYPE.ARMOR then
self:showArmorInfo() self:showArmorInfo()
elseif self.panelType == GConst.HeroConst.PANEL_TYPE.SKIN then elseif self.panelType == GConst.HeroConst.PANEL_TYPE.RUNES then
self:showSkinInfo() self:showRunesInfo()
end end
if self.onlyLook then -- 仅查看的不显示升级和激活按钮 if self.onlyLook then -- 仅查看的不显示升级和激活按钮
self.btnHero:setActive(false) self.btnHero:setActive(false)
self.btnWeapon:setActive(false) self.btnWeapon:setActive(false)
self.btnArmor:setActive(false) self.btnArmor:setActive(false)
self.btnSkin:setActive(false) self.btnRunes:setActive(false)
self.btnLeft:setActive(false) self.btnLeft:setActive(false)
self.btnRight:setActive(false) self.btnRight:setActive(false)
if self.panelType == GConst.HeroConst.PANEL_TYPE.HERO then if self.panelType == GConst.HeroConst.PANEL_TYPE.HERO then
self.commonInfo:setSizeDeltaY(SIZE_DELTA_Y_LOOK_HERO) 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 end
else else
self.btnHero:setActive(true) self.btnHero:setActive(true)
self.btnWeapon:setActive(true) self.btnWeapon:setActive(true)
self.btnArmor:setActive(true) self.btnArmor:setActive(true)
self.btnSkin:setActive(true) self.btnRunes:setActive(true)
self.btnLeft:setActive(self:isExistLeftHero()) self.btnLeft:setActive(self:isShowLeftArrow())
self.btnRight:setActive(self:isExistRightHero()) self.btnRight:setActive(self:isShowRightArrow())
self.commonInfo:setSizeDeltaY(SIZE_DELTA_Y_HERO) self.commonInfo:setSizeDeltaY(SIZE_DELTA_Y_HERO)
self:refreshRedPoint() self:refreshRedPoint()
end end
@ -243,8 +237,9 @@ function HeroDetailUI:showHeroInfo()
self.selectWeapon:setActive(false) self.selectWeapon:setActive(false)
self.armorInfo:setActive(false) self.armorInfo:setActive(false)
self.selectArmor:setActive(false) self.selectArmor:setActive(false)
self.skinInfo:setActive(false) self.runesInfo:setActive(false)
self.selectSkin:setActive(false) self.selectRunes:setActive(false)
self.bg:setActive(true)
if not self.compHero then if not self.compHero then
self.heroInfo:initPrefabHelper() self.heroInfo:initPrefabHelper()
@ -263,8 +258,9 @@ function HeroDetailUI:showWeaponInfo()
self.selectWeapon:setActive(true) self.selectWeapon:setActive(true)
self.armorInfo:setActive(false) self.armorInfo:setActive(false)
self.selectArmor:setActive(false) self.selectArmor:setActive(false)
self.skinInfo:setActive(false) self.runesInfo:setActive(false)
self.selectSkin:setActive(false) self.selectRunes:setActive(false)
self.bg:setActive(true)
if not self.compWeapon then if not self.compWeapon then
self.weaponInfo:initPrefabHelper() self.weaponInfo:initPrefabHelper()
@ -284,8 +280,9 @@ function HeroDetailUI:showArmorInfo()
self.selectWeapon:setActive(false) self.selectWeapon:setActive(false)
self.armorInfo:setActive(true) self.armorInfo:setActive(true)
self.selectArmor:setActive(true) self.selectArmor:setActive(true)
self.skinInfo:setActive(false) self.runesInfo:setActive(false)
self.selectSkin:setActive(false) self.selectRunes:setActive(false)
self.bg:setActive(true)
if not self.compArmor then if not self.compArmor then
self.armorInfo:initPrefabHelper() self.armorInfo:initPrefabHelper()
@ -298,34 +295,42 @@ function HeroDetailUI:showArmorInfo()
self.compArmor:refresh() self.compArmor:refresh()
end end
function HeroDetailUI:showSkinInfo() function HeroDetailUI:showRunesInfo()
self.heroInfo:setActive(false) self.heroInfo:setActive(false)
self.selectHero:setActive(false) self.selectHero:setActive(false)
self.weaponInfo:setActive(false) self.weaponInfo:setActive(false)
self.selectWeapon:setActive(false) self.selectWeapon:setActive(false)
self.armorInfo:setActive(false) self.armorInfo:setActive(false)
self.selectArmor:setActive(false) self.selectArmor:setActive(false)
self.skinInfo:setActive(true) self.runesInfo:setActive(true)
self.selectSkin:setActive(true) self.selectRunes:setActive(true)
self.bg:setActive(false)
if not self.compSkin then if not self.compRunes then
self.skinInfo:initPrefabHelper() self.runesInfo:initPrefabHelper()
self.skinInfo:genAllChildren() self.runesInfo:genAllChildren()
self.compSkin = self.skinInfo:addLuaComponent(COMP_SKIN) self.compRunes = self.runesInfo:addLuaComponent(COMP_RUNES)
self.compSkin:setUI(self)
end end
self.compSkin:setHeroData(self.heroEntity, self.onlyLookSkinId) self.compRunes:setHeroData(self.heroEntity)
self.compSkin:refresh() self.compRunes:refresh()
end
-- 是否显示左箭头
function HeroDetailUI:isShowLeftArrow()
if self.panelType == GConst.HeroConst.PANEL_TYPE.RUNES then
return false
end end
-- 是否存在左侧英雄
function HeroDetailUI:isExistLeftHero()
return self.idxLast and self.idxLast > 0 return self.idxLast and self.idxLast > 0
end 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 return self.idxNext and self.idxNext <= #self.heroList
end end

View File

@ -34,6 +34,8 @@ function HeroInfoComp:init()
self.bgElement = uiMap["hero_detail_ui.bg.element_bg"] self.bgElement = uiMap["hero_detail_ui.bg.element_bg"]
self.btnAttr = uiMap["hero_info.bg_6.btn_attr"] self.btnAttr = uiMap["hero_info.bg_6.btn_attr"]
self.fragmentNode = uiMap["hero_detail_ui.bg.fragment_bg"] 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.skill = {}
self.skillIcon = {} self.skillIcon = {}
@ -47,7 +49,12 @@ function HeroInfoComp:init()
self.spineObjSkill:setVisible(false) self.spineObjSkill:setVisible(false)
self.spineObjLv:setVisible(false) self.spineObjLv:setVisible(false)
self.spineObj: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() self.btnUp:addClickListener(function()
ModuleManager.HeroManager:upgradeHero(self.heroEntity:getCfgId(), self.heroEntity) ModuleManager.HeroManager:upgradeHero(self.heroEntity:getCfgId(), self.heroEntity)
end) end)

View File

@ -1,13 +1,37 @@
local SkinInfoComp = class("SkinInfoComp", LuaComponent) local HeroSkinUI = class("HeroSkinUI", BaseUI)
local DEFAULT_FACTOR = GConst.BattleConst.DEFAULT_FACTOR
local PERCENT_FACTOR = 100
local SIZE_DELTA_Y_SKIN = 942 local SIZE_DELTA_Y_SKIN = 942
local SIZE_DELTA_Y_LOOK = 720 local SIZE_DELTA_Y_LOOK = 720
function SkinInfoComp:init() function HeroSkinUI:isFullScreen()
local uiMap = self:getUIMap() 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.txName = uiMap["skin_info.name.tx_name"]
self.bgQlt = uiMap["skin_info.bg_qlt"] self.bgQlt = uiMap["skin_info.bg_qlt"]
self.iconQlt = uiMap["skin_info.bg_qlt.icon_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] self.attr[i] = uiMap["skin_info.attr_" .. i]
end end
self.txTitle:setText(self.heroEntity:getName())
self.txDesc1:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN_ATTR)) self.txDesc1:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN_ATTR))
self.txDesc2:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN_LIST)) self.txDesc2:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN_LIST))
self.btnClose:addClickListener(function()
self:closeUI()
end)
self.btnUse:addClickListener(function() self.btnUse:addClickListener(function()
ModuleManager.SkinManager:reqChangeSkin(self.heroEntity:getCfgId(), self.selectSkinId) ModuleManager.SkinManager:reqChangeSkin(self.heroEntity:getCfgId(), self.selectSkinId)
end) end)
self.btnAttr:addClickListener(function() self.btnAttr:addClickListener(function()
UIManager:showUI("app/ui/hero/hero_attr_ui", {heroEntity = self.heroEntity}) UIManager:showUI("app/ui/hero/hero_attr_ui", {heroEntity = self.heroEntity})
end) 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:bind(self.heroEntity, "isDirty", function()
self:refresh() self:onRefresh()
end)
self:addEventListener(EventManager.CUSTOM_EVENT.SKIN_SELECT, function(skinId)
self:refreshSelectSkin(skinId)
end) end)
end end
function SkinInfoComp:refresh() function HeroSkinUI:onRefresh()
local ids = DataManager.SkinData:getHeroAllSkinIdsSort(self.heroEntity:getCfgId()) local ids = DataManager.SkinData:getHeroAllSkinIdsSort(self.heroEntity:getCfgId())
self.scrollrectComp:addInitCallback(function() self.scrollrectComp:addInitCallback(function()
return "app/ui/hero/cell/skin_cell" return "app/ui/hero/cell/skin_cell"
@ -70,7 +86,7 @@ function SkinInfoComp:refresh()
end end
-- 刷新选择皮肤相关内容 -- 刷新选择皮肤相关内容
function SkinInfoComp:refreshSelectSkin(selectId) function HeroSkinUI:refreshSelectSkin(selectId)
if selectId then if selectId then
self.selectSkinId = selectId self.selectSkinId = selectId
self.scrollrectComp:updateAllCell() self.scrollrectComp:updateAllCell()
@ -95,77 +111,65 @@ function SkinInfoComp:refreshSelectSkin(selectId)
local txTitle = map["tx_title"] local txTitle = map["tx_title"]
local txNum = map["tx_num"] local txNum = map["tx_num"]
local showValue
if curAttr[index].type == GConst.MATCH_ATTACK_NAME[self.heroEntity:getMatchType()] then if curAttr[index].type == GConst.MATCH_ATTACK_NAME[self.heroEntity:getMatchType()] then
-- 攻击 -- 攻击
table.insert(showAttrType, GConst.MATCH_ATTACK_NAME[self.heroEntity:getMatchType()]) table.insert(showAttrType, GConst.MATCH_ATTACK_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_5") imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_5")
txTitle:setText("<color=#FCB501>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_ATK).."</color>") txTitle:setText("<color=#FCB501>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_ATK).."</color>")
showValue = curAttr[index].num // DEFAULT_FACTOR
elseif curAttr[index].type == GConst.MATCH_ATTACK_ADD_NAME[self.heroEntity:getMatchType()] then elseif curAttr[index].type == GConst.MATCH_ATTACK_ADD_NAME[self.heroEntity:getMatchType()] then
-- 攻击加成百分比 -- 攻击加成百分比
table.insert(showAttrType, GConst.MATCH_ATTACK_ADD_NAME[self.heroEntity:getMatchType()]) table.insert(showAttrType, GConst.MATCH_ATTACK_ADD_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_5") imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_5")
txTitle:setText("<color=#FCB501>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_ATK).."</color>") txTitle:setText("<color=#FCB501>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_ATK).."</color>")
showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
elseif curAttr[index].type == GConst.MATCH_HP_FIX_NAME[self.heroEntity:getMatchType()] then elseif curAttr[index].type == GConst.MATCH_HP_FIX_NAME[self.heroEntity:getMatchType()] then
-- 生命 -- 生命
table.insert(showAttrType, GConst.MATCH_HP_FIX_NAME[self.heroEntity:getMatchType()]) table.insert(showAttrType, GConst.MATCH_HP_FIX_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_4") imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_4")
txTitle:setText("<color=#FB6895>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_HP).."</color>") txTitle:setText("<color=#FB6895>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_HP).."</color>")
showValue = curAttr[index].num // DEFAULT_FACTOR
elseif curAttr[index].type == GConst.MATCH_HP_ADD_NAME[self.heroEntity:getMatchType()] then elseif curAttr[index].type == GConst.MATCH_HP_ADD_NAME[self.heroEntity:getMatchType()] then
-- 生命加成百分比 -- 生命加成百分比
table.insert(showAttrType, GConst.MATCH_HP_ADD_NAME[self.heroEntity:getMatchType()]) table.insert(showAttrType, GConst.MATCH_HP_ADD_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_4") imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_4")
txTitle:setText("<color=#FB6895>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_HP).."</color>") txTitle:setText("<color=#FB6895>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_HP).."</color>")
showValue = (curAttr[index].num // PERCENT_FACTOR) .. "%"
elseif curAttr[index].type == GConst.MATCH_NORMAL_HURT_NAME[self.heroEntity:getMatchType()] then elseif curAttr[index].type == GConst.MATCH_NORMAL_HURT_NAME[self.heroEntity:getMatchType()] then
-- 普攻增伤 -- 普攻增伤
table.insert(showAttrType, GConst.MATCH_NORMAL_HURT_NAME[self.heroEntity:getMatchType()]) table.insert(showAttrType, GConst.MATCH_NORMAL_HURT_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_20") imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_20")
txTitle:setText("<color=#4CCFFA>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_NORMAL_HURT).."</color>") txTitle:setText("<color=#4CCFFA>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_NORMAL_HURT).."</color>")
showValue = curAttr[index].num // DEFAULT_FACTOR
elseif curAttr[index].type == GConst.MATCH_SKILL_HURT_NAME[self.heroEntity:getMatchType()] then elseif curAttr[index].type == GConst.MATCH_SKILL_HURT_NAME[self.heroEntity:getMatchType()] then
-- 技能增伤 -- 技能增伤
table.insert(showAttrType, GConst.MATCH_SKILL_HURT_NAME[self.heroEntity:getMatchType()]) table.insert(showAttrType, GConst.MATCH_SKILL_HURT_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_21") imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_21")
txTitle:setText("<color=#EC80FF>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_SKILL_HURT).."</color>") txTitle:setText("<color=#EC80FF>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_SKILL_HURT).."</color>")
showValue = curAttr[index].num // DEFAULT_FACTOR
elseif curAttr[index].type == GConst.MATCH_NORMAL_HURTP_NAME[self.heroEntity:getMatchType()] then elseif curAttr[index].type == GConst.MATCH_NORMAL_HURTP_NAME[self.heroEntity:getMatchType()] then
-- 普攻增伤百分比 -- 普攻增伤百分比
table.insert(showAttrType, GConst.MATCH_NORMAL_HURTP_NAME[self.heroEntity:getMatchType()]) table.insert(showAttrType, GConst.MATCH_NORMAL_HURTP_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_20") imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_20")
txTitle:setText("<color=#4CCFFA>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_NORMAL_HURTP).."</color>") txTitle:setText("<color=#4CCFFA>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_NORMAL_HURTP).."</color>")
showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
elseif curAttr[index].type == GConst.MATCH_SKILL_HURTP_NAME[self.heroEntity:getMatchType()] then elseif curAttr[index].type == GConst.MATCH_SKILL_HURTP_NAME[self.heroEntity:getMatchType()] then
-- 技能增伤百分比 -- 技能增伤百分比
table.insert(showAttrType, GConst.MATCH_SKILL_HURTP_NAME[self.heroEntity:getMatchType()]) table.insert(showAttrType, GConst.MATCH_SKILL_HURTP_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_21") imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_21")
txTitle:setText("<color=#EC80FF>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_SKILL_HURTP).."</color>") txTitle:setText("<color=#EC80FF>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_SKILL_HURTP).."</color>")
showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
elseif curAttr[index].type == GConst.MATCH_CRIT_NAME[self.heroEntity:getMatchType()] then elseif curAttr[index].type == GConst.MATCH_CRIT_NAME[self.heroEntity:getMatchType()] then
-- 暴击率百分比 -- 暴击率百分比
table.insert(showAttrType, GConst.MATCH_CRIT_NAME[self.heroEntity:getMatchType()]) table.insert(showAttrType, GConst.MATCH_CRIT_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_22") imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_22")
txTitle:setText("<color=#FFF95F>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_CRIT).."</color>") txTitle:setText("<color=#FFF95F>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_CRIT).."</color>")
showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
elseif curAttr[index].type == GConst.MATCH_CRIT_TIME_NAME[self.heroEntity:getMatchType()] then elseif curAttr[index].type == GConst.MATCH_CRIT_TIME_NAME[self.heroEntity:getMatchType()] then
-- 暴击伤害百分比 -- 暴击伤害百分比
table.insert(showAttrType, GConst.MATCH_CRIT_TIME_NAME[self.heroEntity:getMatchType()]) table.insert(showAttrType, GConst.MATCH_CRIT_TIME_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_23") imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_23")
txTitle:setText("<color=#FF4848>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_CRIT_TIME).."</color>") txTitle:setText("<color=#FF4848>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_CRIT_TIME).."</color>")
showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
elseif curAttr[index].type == GConst.MATCH_CURED_NAME[self.heroEntity:getMatchType()] then elseif curAttr[index].type == GConst.MATCH_CURED_NAME[self.heroEntity:getMatchType()] then
-- 治疗提升百分比 -- 治疗提升百分比
table.insert(showAttrType, GConst.MATCH_CURED_NAME[self.heroEntity:getMatchType()]) table.insert(showAttrType, GConst.MATCH_CURED_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_24") imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_24")
txTitle:setText("<color=#85FF82>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_CURED).."</color>") txTitle:setText("<color=#85FF82>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_CURED).."</color>")
showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
else else
obj:setVisible(false) obj:setVisible(false)
end end
txNum:setText(showValue) txNum:setText(GFunc.getAttrShowValue(curAttr[index].type, curAttr[index].num))
else else
obj:setVisible(false) obj:setVisible(false)
end end
@ -221,12 +225,14 @@ function SkinInfoComp:refreshSelectSkin(selectId)
if self.onlyLook then -- 仅查看 if self.onlyLook then -- 仅查看
self.txDesc2:setVisible(false) self.txDesc2:setVisible(false)
self.scrollrectComp.baseObject: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 else
self.txDesc2:setVisible(true) self.txDesc2:setVisible(true)
self.scrollrectComp.baseObject: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
end end
return SkinInfoComp return HeroSkinUI

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 013e50285bf00304b9911ee482aa7b3d
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -0,0 +1,193 @@
local RunesInfoComp = class("RunesInfoComp", LuaComponent)
local LOCK_ICON = "common_lock"
local UNLOCK_ICON = "common_lock_1"
function RunesInfoComp:init()
local uiMap = self:getUIMap()
self.btnHelp = uiMap["runes_info.btn_help"]
self.imgProg = uiMap["runes_info.prog.img_prog"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER)
self.txLevel = uiMap["runes_info.level.tx_level"]
self.btnSuit = uiMap["runes_info.btn_suit"]
self.txSuit = uiMap["runes_info.btn_suit.tx_suit"]
self.itemMaterial = uiMap["runes_info.item_material"]
self.txNum = uiMap["runes_info.item_material.tx_num"]
self.btnUse = uiMap["runes_info.bottom.btn_use"]
self.txUse = uiMap["runes_info.bottom.btn_use.tx_use"]
self.imgCost = uiMap["runes_info.bottom.btn_use.cost.img_cost"]
self.txCost = uiMap["runes_info.bottom.btn_use.cost.tx_cost"]
self.btnAuto = uiMap["runes_info.bottom.btn_auto"]
self.spineAuto = uiMap["runes_info.bottom.btn_auto.spine_auto"]
self.txAuto = uiMap["runes_info.bottom.btn_auto.tx_auto"]
self.txEmpty = uiMap["runes_info.suits.tx_empty"]
self.mask = uiMap["runes_info.bottom.mask"]
self.suits = {}
for i = 1, 3 do
self.suits[i] = uiMap["runes_info.suits.item_suit_" .. i]
end
self.grids = {}
for i = 1, 6 do
self.grids[i] = uiMap["runes_info.list_attr.grid_" .. i]
end
self.mask:setActive(false)
self.spineAuto:playAnim("idle", true, true)
self.txSuit:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_2))
self.txUse:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_5))
self.txAuto:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_4))
self.txEmpty:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_23))
self.itemMaterial:addClickListener(function()
UIManager:showUI("app/ui/runes/runes_source_ui")
end)
self.btnHelp:addClickListener(function()
UIManager:showUI("app/ui/runes/runes_level_ui")
end)
self.btnSuit:addClickListener(function()
UIManager:showUI("app/ui/runes/runes_suit_ui", self.heroEntity)
end)
self.btnAuto:addClickListener(function()
if self.autoSid == nil then
local params ={
content = I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_21),
boxType = GConst.MESSAGE_BOX_TYPE.MB_OK_CANCEL,
showToday = GConst.MESSAGE_BOX_SHOW_TODAY.RUNES_AUTO,
okFunc = function()
self:startAutoQuenching()
end,
}
GFunc.showMessageBox(params)
else
self:endAutoQuenching()
end
end)
self.btnUse:addClickListener(function()
ModuleManager.RunesManager:reqQuenching(self.heroEntity:getCfgId(), 0)
end)
self:bind(DataManager.BagData.ItemData, "dirty", function()
self:refresh()
end)
self:bind(DataManager.RunesData, "isDirty", function()
self:refresh()
end)
end
function RunesInfoComp:setHeroData(heroEntity)
self.heroEntity = heroEntity
self.runesEntity = DataManager.RunesData:getRunes(self.heroEntity:getCfgId())
end
function RunesInfoComp:refresh()
local curExp = DataManager.RunesData:getLevelExp()
local maxExp = DataManager.RunesData:getNextLevelTotalExp()
self.txNum:setText(DataManager.RunesData:getMaterialCount())
self.txCost:setText(GFunc.getRewardNum(self.runesEntity:getMaterialCost()))
self.txLevel:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_1, DataManager.RunesData:getLevel()))
self.imgProg.value = curExp / maxExp
GFunc.centerImgAndTx(self.imgCost, self.txCost)
self:refreshSuit()
self:refreshRunes()
end
-- 刷新符文
function RunesInfoComp:refreshRunes()
for index, obj in ipairs(self.grids) do
local map = obj:genAllChildren()
local imgQlt = map["img_qlt"]
local imgSuit = map["img_suit"]
local txAttr = map["tx_attr"]
local imgLock = map["img_lock"]
local lock = map["lock"]
local txLock = map["tx_lock"]
obj:getComponent(GConst.TYPEOF_UNITY_CLASS.ANIMATOR).enabled = false
if DataManager.RunesData:isUnlock(index) then
lock:setActive(false)
imgQlt:setSprite(GConst.ATLAS_PATH.HERO, GConst.RunesConst.QUALITY_ICON[index])
imgSuit:setSprite(GConst.ATLAS_PATH.HERO, "hero_rune_"..self.runesEntity:getGridSuit(index))
imgLock:setSprite(GConst.ATLAS_PATH.COMMON, self.runesEntity:isAttrLock(index) and LOCK_ICON or UNLOCK_ICON)
local attr = self.runesEntity:getGridAttr(index)
if attr then
txAttr:setText(GFunc.getAttrDesc(attr.type, attr.num))
end
imgLock:addClickListener(function()
ModuleManager.RunesManager:reqChangeLockGrid(self.heroEntity:getCfgId(), index, not self.runesEntity:isAttrLock(index))
end)
else
lock:setActive(true)
txLock:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_3, DataManager.RunesData:getUnlockLevel(index)))
end
end
end
-- 刷新套装
function RunesInfoComp:refreshSuit()
local ids = self.runesEntity:getSuitIds()
local isEmpty = true
for index, obj in ipairs(self.suits) do
local map = obj:genAllChildren()
local img = map["img"]
local tx = map["tx"]
if ids[index] then
local level = self.runesEntity:getSuitLevel(ids[index].id)
if level > 0 then
isEmpty = false
obj:setActive(true)
img:setSprite(GConst.ATLAS_PATH.HERO, "hero_rune_"..ids[index].id)
tx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, level))
else
obj:setActive(false)
end
else
obj:setActive(false)
end
end
self.txEmpty:setActive(isEmpty)
end
-- 开始自动淬炼
function RunesInfoComp:startAutoQuenching()
self.mask:setActive(true)
self:autoQuenching()
self.autoSid = self.baseObject:scheduleGlobal(function()
local cost = self.runesEntity:getMaterialCost()
if not GFunc.checkCost(GFunc.getRewardId(cost), GFunc.getRewardNum(cost), true) then
self:endAutoQuenching()
return
end
self:autoQuenching()
end, 1 / 3)
self.spineAuto:playAnim("attack", true, true)
end
-- 结束自动淬炼
function RunesInfoComp:endAutoQuenching()
self.mask:setActive(false)
if self.autoSid then
self.baseObject:unscheduleGlobal(self.autoSid)
self.autoSid = nil
end
for index, obj in ipairs(self.grids) do
if DataManager.RunesData:isUnlock(index) then
local animator = obj:getComponent(GConst.TYPEOF_UNITY_CLASS.ANIMATOR)
animator.enabled = true
-- CS.UnityEngine.Animator.StringToHash("runes_shake") 结果是1132417824
animator:Play(1132417824, -1, 0)
end
end
self.spineAuto:playAnim("idle", true, true)
end
-- 请求一次自动淬炼
function RunesInfoComp:autoQuenching()
ModuleManager.RunesManager:reqQuenching(self.heroEntity:getCfgId(), 0)
end
return RunesInfoComp

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 4d6ae74e1ac107c4ca73bacaafebec15
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

8
lua/app/ui/runes.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 03aa5a5d9fc516842b410568fc7345d7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 4e658a421ae93f9429873a072c30732f
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -0,0 +1,140 @@
local RunesSourceUI = class("RunesSourceUI", BaseUI)
function RunesSourceUI:isFullScreen()
return false
end
function RunesSourceUI:getPrefabPath()
return "assets/prefabs/ui/runes/runes_source_ui.prefab"
end
function RunesSourceUI:onPressBackspace()
self:closeUI()
end
function RunesSourceUI:ctor()
self.curGiftIndex = 1
end
function RunesSourceUI:onLoadRootComplete()
local uiMap = self.root:genAllChildren()
self.btnClose = uiMap["runes_source_ui.btn_close"]
-- 来源界面
self.panelMain = uiMap["runes_source_ui.panel_main"]
self.txTitleMain = uiMap["runes_source_ui.panel_main.title.tx_title"]
self.txTips = uiMap["runes_source_ui.panel_main.img_banner.tx_tips"]
self.txGet = uiMap["runes_source_ui.panel_main.tx_get"]
self.txDesc = uiMap["runes_source_ui.panel_main.target.tx_desc"]
self.btnGo = uiMap["runes_source_ui.panel_main.target.btn_go"]
self.txGo = uiMap["runes_source_ui.panel_main.target.btn_go.tx_go"]
-- 礼包界面
self.panelGift = uiMap["runes_source_ui.panel_gift"]
self.btn1 = uiMap["runes_source_ui.panel_gift.btns.btn_1"]
self.txBtn1 = uiMap["runes_source_ui.panel_gift.btns.btn_1.tx_btn"]
self.select1 = uiMap["runes_source_ui.panel_gift.btns.btn_1.select"]
self.txSelect1 = uiMap["runes_source_ui.panel_gift.btns.btn_1.select.tx_select"]
self.btn2 = uiMap["runes_source_ui.panel_gift.btns.btn_2"]
self.txBtn2 = uiMap["runes_source_ui.panel_gift.btns.btn_2.tx_btn"]
self.select2 = uiMap["runes_source_ui.panel_gift.btns.btn_2.select"]
self.txSelect2 = uiMap["runes_source_ui.panel_gift.btns.btn_2.select.tx_select"]
self.btn3 = uiMap["runes_source_ui.panel_gift.btns.btn_3"]
self.txBtn3 = uiMap["runes_source_ui.panel_gift.btns.btn_3.tx_btn"]
self.select3 = uiMap["runes_source_ui.panel_gift.btns.btn_3.select"]
self.txSelect3 = uiMap["runes_source_ui.panel_gift.btns.btn_3.select.tx_select"]
self.txTitleGift = uiMap["runes_source_ui.panel_gift.tx_title"]
self.txTime = uiMap["runes_source_ui.panel_gift.time.tx_time"]
self.btnBuy = uiMap["runes_source_ui.panel_gift.btn_buy"]
self.txBuy = uiMap["runes_source_ui.panel_gift.btn_buy.tx_buy"]
self.giftRewardCells = {}
for i = 1, 4 do
self.giftRewardCells[i] = uiMap["runes_source_ui.panel_gift.item_node.pop_reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.POP_REWARD_CELL)
end
self.txTitleGift:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_17))
self.txTitleMain:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_18))
self.txTips:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_19))
self.txGet:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_23))
self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_20))
self.txGo:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_21))
local gift1 = DataManager.ShopData:getActGiftConfig()[GConst.RunesConst.GIFT_IDS[1]]
self.txBtn1:setText(GFunc.getFormatPrice(gift1.recharge_id))
self.txSelect1:setText(GFunc.getFormatPrice(gift1.recharge_id))
local gift2 = DataManager.ShopData:getActGiftConfig()[GConst.RunesConst.GIFT_IDS[2]]
self.txBtn2:setText(GFunc.getFormatPrice(gift2.recharge_id))
self.txSelect2:setText(GFunc.getFormatPrice(gift2.recharge_id))
local gift3 = DataManager.ShopData:getActGiftConfig()[GConst.RunesConst.GIFT_IDS[3]]
self.txBtn3:setText(GFunc.getFormatPrice(gift3.recharge_id))
self.txSelect3:setText(GFunc.getFormatPrice(gift3.recharge_id))
self.btn1:addClickListener(function()
if self.curGiftIndex == 1 then
return
end
self.curGiftIndex = 1
self:onRefresh()
end)
self.btn2:addClickListener(function()
if self.curGiftIndex == 2 then
return
end
self.curGiftIndex = 2
self:onRefresh()
end)
self.btn3:addClickListener(function()
if self.curGiftIndex == 3 then
return
end
self.curGiftIndex = 3
self:onRefresh()
end)
self.btnGo:addClickListener(function()
ModuleManager.DungeonRuneManager:showMainUI()
end)
self.btnBuy:addClickListener(function()
PayManager:purchasePackage(GConst.RunesConst.GIFT_IDS[self.curGiftIndex], PayManager.PURCHARSE_TYPE.ACT_GIFT)
end)
self.btnClose:addClickListener(function()
self:closeUI()
end)
self:bind(DataManager.ShopData, "isDirty", function()
self:onRefresh()
end)
end
function RunesSourceUI:onRefresh()
self.select1:setActive(self.curGiftIndex == 1)
self.select2:setActive(self.curGiftIndex == 2)
self.select3:setActive(self.curGiftIndex == 3)
local giftId = GConst.RunesConst.GIFT_IDS[self.curGiftIndex]
local gift = DataManager.ShopData:getActGiftConfig()[giftId]
if gift == nil then
self.panelGift:setActive(false)
return
end
local remain = DataManager.ShopData:getGiftRemainBuyNum(giftId)
self.panelGift:setActive(true)
self.txTime:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_18, remain))
if remain > 0 then
self.btnBuy:setTouchEnable(true)
self.btnBuy:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_1")
self.txBuy:setText(GFunc.getFormatPrice(gift.recharge_id))
else
self.btnBuy:setTouchEnable(false)
self.btnBuy:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_1")
self.txBuy:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_20))
end
for index, cell in ipairs(self.giftRewardCells) do
if gift.reward[index] then
cell:setVisible(true, 0.8)
cell:refresh(gift.reward[index].id, gift.reward[index].num, true)
else
cell:setVisible(false)
end
end
end
return RunesSourceUI

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: e0f16c6f0334eb04db5746a1576d0387
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -0,0 +1,69 @@
local RunesSuitUI = class("RunesSuitUI", BaseUI)
function RunesSuitUI:isFullScreen()
return false
end
function RunesSuitUI:getPrefabPath()
return "assets/prefabs/ui/runes/runes_suit_ui.prefab"
end
function RunesSuitUI:onPressBackspace()
self:closeUI()
end
function RunesSuitUI:ctor(params)
self.heroEntity = params
self.runesEntity = DataManager.RunesData:getRunes(self.heroEntity:getCfgId())
self.curLevel = DataManager.RunesData:getLevel()
end
function RunesSuitUI:onLoadRootComplete()
local uiMap = self.root:genAllChildren()
self.txTitle = uiMap["runes_suit_ui.bg.title.tx_title"]
self.btnClose = uiMap["runes_suit_ui.bg.close_btn"]
self.suits = {}
for i = 1, 5 do
self.suits[i] = uiMap["runes_suit_ui.bg.list.suit_cell_" .. i]
end
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_9))
self.btnClose:addClickListener(function()
self:closeUI()
end)
end
function RunesSuitUI:onRefresh()
for index, obj in ipairs(self.suits) do
local map = obj:genAllChildren()
local imgIcon = map["img_type"]
local txName = map["tx_suit_name"]
local txAttr1 = map["tx_suit_attr1"]
local txAttr2 = map["tx_suit_attr2"]
local txLevel = map["tx_level"]
imgIcon:setSprite(GConst.ATLAS_PATH.HERO, "hero_rune_"..index)
txName:setText(DataManager.RunesData:getSuitName(index))
local attr1 = DataManager.RunesData:getSuitAttr(index, self.heroEntity:getMatchType(), 1)
local attr2 = DataManager.RunesData:getSuitAttr(index, self.heroEntity:getMatchType(), 2)
local level = self.runesEntity:getSuitLevel(index)
txLevel:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, level))
local str1 = I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_15, GFunc.getAttrDesc(attr1.type, attr1.num))
local str2 = I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_16, GFunc.getAttrDesc(attr2.type, attr2.num))
if level == 0 then
str1 = "<color=#FFFFFF>" .. str1 .. "</color>"
str2 = "<color=#FFFFFF>" .. str2 .. "</color>"
elseif level == 1 then
str1 = "<color=#F9FF60>" .. str1 .. "</color>"
str2 = "<color=#FFFFFF>" .. str2 .. "</color>"
elseif level == 2 then
str1 = "<color=#FFFFFF>" .. str1 .. "</color>"
str2 = "<color=#F9FF60>" .. str2 .. "</color>"
end
txAttr1:setText(str1)
txAttr2:setText(str2)
end
end
return RunesSuitUI

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 7eaccbe09a9a77b4c8def1595e994b66
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -12,6 +12,7 @@ function HeroEntity:ctor(cfgId, lv, skin)
self.baseAttrOriginal = {} self.baseAttrOriginal = {}
self.equipAttr = {} self.equipAttr = {}
self.skinAttr = {} self.skinAttr = {}
self.runesAttr = {}
self.allAttr = {} self.allAttr = {}
end end
@ -54,6 +55,12 @@ function HeroEntity:onSkinAttrChange()
self:setDirty() self:setDirty()
end end
function HeroEntity:onRunesAttrChange()
self:updateRunesAttr()
self:updateTotalAttr()
self:setDirty()
end
function HeroEntity:setDirty() function HeroEntity:setDirty()
self.data.isDirty = not self.data.isDirty self.data.isDirty = not self.data.isDirty
end end
@ -67,6 +74,7 @@ function HeroEntity:updateAllAttr()
self:updateBaseAttr() self:updateBaseAttr()
self:updateEquipAttr() self:updateEquipAttr()
self:updateSkinAttr() self:updateSkinAttr()
self:updateRunesAttr()
self:updateTotalAttr() self:updateTotalAttr()
end end
@ -193,6 +201,46 @@ function HeroEntity:updateSkinAttr()
end end
end end
-- 更新符文属性
function HeroEntity:updateRunesAttr()
self.runesAttr = {}
local hp = self:getRunes():getAttrValue(GConst.MATCH_HP_FIX_NAME[self:getMatchType()])
local atk = self:getRunes():getAttrValue(GConst.MATCH_ATTACK_NAME[self:getMatchType()])
local normalHurt = self:getRunes():getAttrValue(GConst.MATCH_NORMAL_HURT_NAME[self:getMatchType()])
local skillHurt = self:getRunes():getAttrValue(GConst.MATCH_SKILL_HURT_NAME[self:getMatchType()])
local critPer = self:getRunes():getAttrValue(GConst.MATCH_CRIT_NAME[self:getMatchType()])
local critHurtPer = self:getRunes():getAttrValue(GConst.MATCH_CRIT_TIME_NAME[self:getMatchType()])
local normalHurtPer = self:getRunes():getAttrValue(GConst.MATCH_NORMAL_HURTP_NAME[self:getMatchType()])
local skillHurtPer = self:getRunes():getAttrValue(GConst.MATCH_SKILL_HURTP_NAME[self:getMatchType()])
local healPer = self:getRunes():getAttrValue(GConst.MATCH_CURED_NAME[self:getMatchType()])
self.runesAttr[GConst.MATCH_HP_NAME[self:getMatchType()]] = hp
self.runesAttr[GConst.MATCH_ATTACK_NAME[self:getMatchType()]] = atk
self.runesAttr[GConst.MATCH_NORMAL_HURT_NAME[self:getMatchType()]] = normalHurt
self.runesAttr[GConst.MATCH_SKILL_HURT_NAME[self:getMatchType()]] = skillHurt
self.runesAttr[GConst.MATCH_CRIT_NAME[self:getMatchType()]] = critPer
self.runesAttr[GConst.MATCH_CRIT_TIME_NAME[self:getMatchType()]] = critHurtPer
self.runesAttr[GConst.MATCH_NORMAL_HURTP_NAME[self:getMatchType()]] = normalHurtPer
self.runesAttr[GConst.MATCH_SKILL_HURTP_NAME[self:getMatchType()]] = skillHurtPer
self.runesAttr[GConst.MATCH_CURED_NAME[self:getMatchType()]] = healPer
if EDITOR_MODE then
local printStr = ""
printStr = printStr .. "更新符文数值:"..self:getCfgId() .. "\n"
printStr = printStr .. "生命:".. hp .. "\n"
printStr = printStr .. "攻击力:".. atk .. "\n"
printStr = printStr .. "普攻增伤:".. normalHurt .. "\n"
printStr = printStr .. "技能增伤:".. skillHurt .. "\n"
printStr = printStr .. "暴击率:".. critPer .. "\n"
printStr = printStr .. "暴击伤害百分比:".. critHurtPer .. "\n"
printStr = printStr .. "普攻增伤百分比:".. normalHurtPer .. "\n"
printStr = printStr .. "技能增伤百分比:".. skillHurtPer .. "\n"
printStr = printStr .. "治疗加成百分比:".. healPer .. "\n"
Logger.logHighlight(printStr)
end
end
-- 更新总属性 -- 更新总属性
function HeroEntity:updateTotalAttr() function HeroEntity:updateTotalAttr()
self.allAttr = {} self.allAttr = {}
@ -205,6 +253,9 @@ function HeroEntity:updateTotalAttr()
for k, v in pairs(self.skinAttr) do for k, v in pairs(self.skinAttr) do
self:addTotalAttrValue(k, v) self:addTotalAttrValue(k, v)
end end
for k, v in pairs(self.runesAttr) do
self:addTotalAttrValue(k, v)
end
end end
function HeroEntity:setTotalAttrValue(name, value) function HeroEntity:setTotalAttrValue(name, value)
@ -500,6 +551,7 @@ function HeroEntity:getTotalBaseHp()
end end
end end
result = result + DataManager.SkinData:getBaseHp(self) result = result + DataManager.SkinData:getBaseHp(self)
result = result + self:getRunes():getAttrValue(GConst.MATCH_HP_FIX_NAME, true)
return result return result
end end
@ -517,6 +569,7 @@ function HeroEntity:getTotalBaseAtk()
end end
-- Logger.logHighlight(logStr) -- Logger.logHighlight(logStr)
result = result + DataManager.SkinData:getBaseAttack(self) result = result + DataManager.SkinData:getBaseAttack(self)
result = result + self:getRunes():getAttrValue(GConst.MATCH_ATTACK_NAME, true)
return result return result
end end
@ -545,4 +598,18 @@ function HeroEntity:getSkins()
return self.unlockSkins return self.unlockSkins
end 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 return HeroEntity

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 623c3622200ddb346836080a5e43badb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,218 @@
local RunesData = class("RunesData", BaseData)
local RunesEntity = require "app/userdata/runes/runes_entity"
function RunesData:ctor()
self.data.isDirty = false
end
function RunesData:clear()
DataManager:unregisterTryOpenFunc("RunesData")
end
function RunesData:init(data)
data = data or GConst.EMPTY_TABLE
if EDITOR_MODE then
Logger.logHighlight("符文初始化数据")
Logger.printTable(data)
end
self.level = data.level or 1
self.exp = data.exp or 0
if data.heroes_grids then
for heroId, grids in pairs(data.heroes_grids) do
self:addEquip(heroId, grids.grids)
end
end
-- 活动开启
DataManager:registerTryOpenFunc("RunesData", function()
if self:isOpen() then
DataManager:unregisterTryOpenFunc("RunesData")
self:setDirty()
end
end)
self:setDirty()
end
function RunesData:setDirty()
self.data.isDirty = not self.data.isDirty
end
function RunesData:isOpen(showToast)
if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.RUNES_OPEN, not showToast) then
return false
end
return true
end
function RunesData:addEquip(heroId, grids)
if self.runes == nil then
self.runes = {}
end
if self.runes[heroId] == nil then
self.runes[heroId] = self:createEntity(heroId, grids)
else
self.runes[heroId]:updateGrids(grids)
end
end
function RunesData:createEntity(heroId, grids)
return RunesEntity:create(heroId, grids)
end
function RunesData:getRunes(heroId)
if self.runes == nil then
self.runes = {}
end
if self.runes[heroId] == nil then
self.runes[heroId] = self:createEntity(heroId)
end
return self.runes[heroId]
end
-- 获取当前等级配置
function RunesData:getLevelConfig()
return ConfigManager:getConfig("runes_level")
end
-- 获取铸台最大等级
function RunesData:getMaxLevel()
return #self:getLevelConfig()
end
-- 获取符文铸台等级
function RunesData:getLevel()
return self.level
end
-- 获取等级当前经验
function RunesData:getLevelExp()
return self.exp
end
-- 获取到下一档的总经验
function RunesData:getNextLevelTotalExp()
local cfg = self:getLevelConfig()[self:getLevel() + 1]
if cfg then
return cfg.cost or 0
end
return 0
end
-- 获取相应铸台等级的品质概率
function RunesData:getQualityRate(level, quality)
local cfg = self:getLevelConfig()[level]
local total = 0
for i = 1, GConst.RunesConst.MAX_QUALITY_COUNT do
total = total + (cfg["weight_"..i] or 0)
end
local value = cfg["weight_"..quality]
if value then
return string.format("%.2f",(value / total) * 100)
else
return 0
end
end
-- 获取相应套装的相应属性
function RunesData:getSuitAttr(id, heroType, suitLevel)
local data = ConfigManager:getConfig("runes_suit")[id]
local attrs
if heroType == GConst.HeroConst.MATCH_TYPE.RED then
attrs = data.red_suit_attr
elseif heroType == GConst.HeroConst.MATCH_TYPE.YELLOW then
attrs = data.yellow_suit_attr
elseif heroType == GConst.HeroConst.MATCH_TYPE.GREEN then
attrs = data.green_suit_attr
elseif heroType == GConst.HeroConst.MATCH_TYPE.BLUE then
attrs = data.blue_suit_attr
elseif heroType == GConst.HeroConst.MATCH_TYPE.PURPLE then
attrs = data.purple_suit_attr
end
if attrs ~= nil and attrs[suitLevel] then
return attrs[suitLevel]
end
return nil
end
-- 获取锻造材料个数
function RunesData:getMaterialCount()
return DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_RUNES)
end
-- 是否可以一键铸造
function RunesData:canAutoMake()
local cfg = self:getLevelConfig()[self:getLevel()]
return cfg.auto and cfg.auto == 1
end
-- 符文栏是否解锁
function RunesData:isUnlock(index)
local level = self:getLevel()
return index <= self:getLevelConfig()[level].grid
end
-- 获取符文栏解锁个数
function RunesData:getUnlockCount()
local unlock = 0
for i = 1, GConst.RunesConst.MAX_ATTR_GRID_COUNT do
if self:isUnlock(i) then
unlock = unlock + 1
end
end
return unlock
end
-- 获取符文栏解锁等级要求
function RunesData:getUnlockLevel(index)
for level, data in ipairs(self:getLevelConfig()) do
if data.grid >= index then
return level
end
end
return 0
end
-- 获取套装名
function RunesData:getSuitName(index)
if index == 1 then
return I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_10)
elseif index == 2 then
return I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_11)
elseif index == 3 then
return I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_12)
elseif index == 4 then
return I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_13)
elseif index == 5 then
return I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_14)
end
return nil
end
-- 改变属性栏锁定状态成功
function RunesData:onGridLockSuccess(heroId, grids)
self.runes[heroId]:updateGrids(grids)
self:setDirty()
end
-- 淬炼成功
function RunesData:onQuenchingSuccess(level, exp, heroId, grids)
self.level = level
self.exp = exp
self.runes[heroId]:updateGrids(grids)
self:setDirty()
end
return RunesData

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: a9a5f762edecf854ab9eecd7ace92c0e
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -0,0 +1,206 @@
local RunesEntity = class("RunesEntity", BaseData)
local DEFAULT_FACTOR = GConst.BattleConst.DEFAULT_FACTOR
function RunesEntity:ctor(heroId, grids)
self.heroId = heroId
self.grids = grids or GConst.EMPTY_TABLE
end
function RunesEntity:setDirty()
self.data.isDirty = not self.data.isDirty
end
function RunesEntity:updateGrids(grids)
self.grids = grids or GConst.EMPTY_TABLE
self:getHeroEntity():onRunesAttrChange()
self:setDirty()
end
function RunesEntity:getHeroEntity()
if self.heroEntity == nil then
self.heroEntity = DataManager.HeroData:getHeroById(self.heroId)
end
return self.heroEntity
end
-- 符文栏是否锁定属性
function RunesEntity:isAttrLock(index)
if self.grids[index] then
return self.grids[index].lock
end
return false
end
-- 获取已锁定的符文栏个数
function RunesEntity:getAttrLockCount()
local lock = 0
for i = 1, GConst.RunesConst.MAX_ATTR_GRID_COUNT do
if self:isAttrLock(i) then
lock = lock + 1
end
end
return lock
end
-- 获取锻造的材料消耗
function RunesEntity:getMaterialCost()
local base = GFunc.getConstReward("runes_cost_base")
local add = GFunc.getConstReward("runes_cost_add")
local total = {id = base.id, num = base.num, type = base.type}
total.num = total.num + (add.num * self:getAttrLockCount())
return total
end
-- -- 获取随机符文属性
-- function RunesEntity:getRandomAttr()
-- local randomQlt = math.random(GConst.RunesConst.MAX_QUALITY_COUNT - 2)
-- local randomAttr = math.random(GConst.RunesConst.MAX_ATTR_COUNT)
-- local cfg = ConfigManager:getConfig("runes_sub")[randomQlt]
-- return cfg["attr_"..randomAttr][self:getHeroEntity():getMatchType()]
-- end
-- -- 获取随机套装
-- function RunesEntity:getRandomSuit()
-- return math.random(GConst.RunesConst.MAX_SUITS_COUNT)
-- end
-- 获取格子的符文属性
function RunesEntity:getGridAttr(index)
if self.grids[index] then
local cfg = ConfigManager:getConfig("runes_sub")[self.grids[index].quality]
local attr = cfg["attr_"..self.grids[index].attr]
if attr then
return attr[self:getHeroEntity():getMatchType()]
end
end
return nil
end
-- 获取格子的套装
function RunesEntity:getGridSuit(index)
if self.grids[index] then
return self.grids[index].suit
end
Logger.logError("英雄".. self.heroId .. "未获取到格子的符文数据:"..tostring(index))
return 0
end
-- 获取套装等级,2件套是lv1,4件套是lv2没有就是lv0
function RunesEntity:getSuitLevel(index)
local count = self:getSuitCount(index)
if count and count >= 4 then
return 2
end
if count and count >= 2 then
return 1
end
return 0
end
-- 获取套装个数
function RunesEntity:getSuitCount(id)
local data = table.find(self:getSuitIds(), function(value) return value.id == id end)
return data and data.count or 0
end
-- 获取已有的套装id map
function RunesEntity:getSuitIds()
local typeCount = {}
for i = 1, GConst.RunesConst.MAX_SUITS_COUNT do
local t = self:getGridSuit(i)
if t then
local temp = table.find(typeCount, function(value) return value.id == t end)
if temp then
temp.count = temp.count + 1
else
table.insert(typeCount, {id = t, count = 1})
end
end
end
table.sort(typeCount, function(a, b)
return a.count > b.count
end)
return typeCount
end
-- 属性相关接口start------------------------------------------------------------------------------------
-- 获取所有属性加成,未经过计算加成
function RunesEntity:getAllAttr()
if not DataManager.RunesData:isOpen() then
return nil
end
local all = {}
local func = function(attr)
if attr == nil then
return nil
end
local temp = table.find(all, function(value)
return value.type == attr.type
end)
if temp then
temp.num = temp.num + attr.num
else
table.insert(all, {type = attr.type, num = attr.num})
end
end
-- 格子属性
for i = 1, GConst.RunesConst.MAX_ATTR_GRID_COUNT do
func(self:getGridAttr(i))
end
-- 套装属性
local pos = self:getHeroEntity():getMatchType()
for idx, data in pairs(self:getSuitIds()) do
func(DataManager.RunesData:getSuitAttr(data.id, pos, self:getSuitLevel(data.id)))
end
return all
end
-- 是否拥有某属性
function RunesEntity:hasAttr(attrType)
return self:getAttrValue(attrType) > 0
end
-- 获取属性 , isBase是否是基础配置的属性
function RunesEntity:getAttrValue(attrType, isBase)
local result
if not isBase and attrType == GConst.MATCH_HP_FIX_NAME[self:getHeroEntity():getMatchType()] then
result = self:getAttrValue(GConst.MATCH_HP_FIX_NAME[self:getHeroEntity():getMatchType()], true)
result = result + self:getHeroEntity():getTotalBaseHp() * self:getAttrValue(GConst.MATCH_HP_ADD_NAME[self:getHeroEntity():getMatchType()]) // DEFAULT_FACTOR
return result
elseif not isBase and attrType == GConst.MATCH_ATTACK_NAME[self:getHeroEntity():getMatchType()] then
result = self:getAttrValue(GConst.MATCH_ATTACK_NAME[self:getHeroEntity():getMatchType()], true)
result = result + self:getHeroEntity():getTotalBaseAtk() * self:getAttrValue(GConst.MATCH_ATTACK_ADD_NAME) // DEFAULT_FACTOR
return result
else
local all = self:getAllAttr()
if all == nil then
return 0
end
result = table.find(all, function(value)
return attrType == value.type
end)
end
return result and result.num or 0
end
-- 属性相关接口end------------------------------------------------------------------------------------
return RunesEntity

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 22f546c66a8d67842b8befee0e17a707
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -19,6 +19,7 @@ end
function ShopData:initCrossDay() function ShopData:initCrossDay()
DataManager:registerCrossDayFunc("ShopData", function() DataManager:registerCrossDayFunc("ShopData", function()
self:resetRunesGift()
self:resetMallDaily() self:resetMallDaily()
self:resetCommonDailyGemAdCount() self:resetCommonDailyGemAdCount()
self:resetCommonDailyCoinAdCount() self:resetCommonDailyCoinAdCount()
@ -95,6 +96,14 @@ function ShopData:getGiftBoughtNum(actType, actId)
return 0 return 0
end 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) function ShopData:getGiftRemainBuyNum(actId)
local bought = self:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, actId) local bought = self:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, actId)
@ -1030,4 +1039,11 @@ function ShopData:markPopLastChapterActGift()
end end
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 return ShopData