Merge branch 'fang/runes' into 'dev_20230919'

符文功能

See merge request b6-client/b6-lua!15
This commit is contained in:
陈希 2023-09-12 06:50:28 +00:00
commit 0abdb166d2
52 changed files with 1967 additions and 434 deletions

View File

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

View File

@ -16,6 +16,7 @@ function DataManager:init()
self:initManager("BagData", "app/userdata/bag/bag_data")
self:initManager("EquipData", "app/userdata/equip/equip_data")
self:initManager("SkinData", "app/userdata/skin/skin_data")
self:initManager("RunesData", "app/userdata/runes/runes_data")
self:initManager("BattleData", "app/userdata/battle/battle_data")
self:initManager("BattlePVPData", "app/userdata/battle/battle_pvp_data")
self:initManager("FormationData", "app/userdata/formation/formation_data")
@ -106,6 +107,7 @@ function DataManager:clear()
self.BagData:clear()
self.EquipData:clear()
self.SkinData:clear()
self.RunesData:clear()
self.FormationData:clear()
self.ActivityData:clear()
self.MailData:clear()
@ -151,7 +153,8 @@ function DataManager:initWithServerData(data)
self.EquipData:init(data.heroes_equips)
self.EquipData:initGifts(data.act_weapon_armor_gift)
self.SkinData:init(data.bag.skins)
-- HeroData要在EquipData和SkinData之后初始化依赖它们的属性数据
self.RunesData:init(data.rune)
-- HeroData要在EquipData、SkinData、RunesData之后初始化依赖它们的属性数据
self.HeroData:init(data.bag.heroes)
self.BagData:init(data.bag)
self.FormationData:init(data.fight_info)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,14 @@
local HeroConst = {}
-- 英雄颜色类型
HeroConst.MATCH_TYPE = {
RED = 1,
YELLOW = 2,
GREEN = 3,
BLUE = 4,
PURPLE = 5
}
HeroConst.MATCH_ICON_NAME = {
[1] = "match_1",
[2] = "match_2",
@ -21,7 +30,7 @@ HeroConst.PANEL_TYPE = {
HERO = 1,
WEAPON = 2,
ARMOR = 3,
SKIN = 4,
RUNES = 4,
}
-- 总计
@ -70,6 +79,18 @@ HeroConst.ATTR_SHOW_SKIN = {
GConst.MATCH_SKILL_HURTP_NAME, -- 技能增伤百分比
GConst.MATCH_CURED_NAME, -- 治疗效果提升百分比
}
-- 符文
HeroConst.ATTR_SHOW_RUNES = {
GConst.MATCH_HP_FIX_NAME, -- 生命
GConst.MATCH_ATTACK_NAME, -- 攻击
GConst.MATCH_NORMAL_HURT_NAME, -- 普攻增伤
GConst.MATCH_SKILL_HURT_NAME, -- 技能增伤
GConst.MATCH_CRIT_NAME, -- 暴击率百分比
GConst.MATCH_CRIT_TIME_NAME, -- 暴击伤害百分比
GConst.MATCH_NORMAL_HURTP_NAME, -- 普攻增伤百分比
GConst.MATCH_SKILL_HURTP_NAME, -- 技能增伤百分比
GConst.MATCH_CURED_NAME, -- 治疗效果提升百分比
}
-- 需要显示属性的模块
HeroConst.SHOW_NODE = {
@ -77,6 +98,7 @@ HeroConst.SHOW_NODE = {
HeroConst.ATTR_SHOW_BASE,
HeroConst.ATTR_SHOW_WEAPON,
HeroConst.ATTR_SHOW_ARMOR,
HeroConst.ATTR_SHOW_RUNES,
HeroConst.ATTR_SHOW_SKIN,
}

View File

@ -1,7 +1,11 @@
local HeroManager = class("HeroManager", BaseModule)
function HeroManager:showHeroDetailUI(heroId, onlyLook, heroEntity, skinId, formationType)
UIManager:showUI("app/ui/hero/hero_detail_ui", {heroId = heroId, onlyLook = onlyLook, heroEntity = heroEntity, skinId = skinId, formationType = formationType})
function HeroManager:showHeroDetailUI(heroId, onlyLook, heroEntity, formationType)
UIManager:showUI("app/ui/hero/hero_detail_ui", {heroId = heroId, onlyLook = onlyLook, heroEntity = heroEntity, formationType = formationType})
end
function HeroManager:showHeroSkinUI(heroId, onlyLookSkinId)
UIManager:showUI("app/ui/hero/hero_skin_ui", {heroId = heroId, onlyLookSkinId = onlyLookSkinId})
end
function HeroManager:showHeroUnlockUI(heroIdList)

View File

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

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
guid: 7209380a6f275fe4fa7fd87e464fde53
guid: 4bda2a68bd04f8e4993df04a2b3878c7
ScriptedImporter:
internalIDToNameTable: []
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
elseif info.type == GConst.ItemConst.ITEM_TYPE.SKIN then
-- 英雄皮肤
ModuleManager.HeroManager:showHeroDetailUI(DataManager.SkinData:getHeroIdBySkinId(info.parameter), true, nil, info.parameter)
ModuleManager.HeroManager:showHeroSkinUI(DataManager.SkinData:getHeroIdBySkinId(info.parameter), info.parameter)
return
elseif info.type == GConst.ItemConst.ITEM_TYPE.RANDOM_BOX_ITEM or info.type == GConst.ItemConst.ITEM_TYPE.FIXED_BOX_ITEM then
self:showBoxItemTips(rewardId)

View File

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

View File

@ -20,11 +20,13 @@ function AttrNodeCell:refresh(heroEntity, node)
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_16))
elseif node == GConst.HeroConst.ATTR_SHOW_SKIN then
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_17))
elseif node == GConst.HeroConst.ATTR_SHOW_RUNES then
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_22))
end
self.attrCount = 0
for index, attr in ipairs(node) do
if node ~= GConst.HeroConst.ATTR_SHOW_SKIN or DataManager.SkinData:hasAttr(heroEntity, attr[heroEntity:getMatchType()]) then
if self:isShowAttr(heroEntity, node, attr) then
self.attrCount = self.attrCount + 1
CellManager:loadCellAsync(ATTR_CELL_PATH, ATTR_CELL, self.itemsRoot, function(cell)
cell:refresh(heroEntity, node, attr)
@ -33,6 +35,18 @@ function AttrNodeCell:refresh(heroEntity, node)
end
end
-- 是否显示属性项
function AttrNodeCell:isShowAttr(heroEntity, node, attr)
if node == GConst.HeroConst.ATTR_SHOW_SKIN then
return DataManager.SkinData:hasAttr(heroEntity, attr[heroEntity:getMatchType()])
end
if node == GConst.HeroConst.ATTR_SHOW_RUNES then
return heroEntity:getRunes():hasAttr(attr[heroEntity:getMatchType()])
end
return true
end
--获取节点显示属性个数
function AttrNodeCell:getShowAttrCount()
return self.attrCount

View File

@ -44,7 +44,7 @@ function HeroAttrUI:onRefresh()
local totalHeight = 0
for index, node in ipairs(GConst.HeroConst.SHOW_NODE) do
-- 有皮肤属性时才显示皮肤
if node ~= GConst.HeroConst.ATTR_SHOW_SKIN or #DataManager.SkinData:getOwnAllAttr(self.heroEntity) > 0 then
if self:isShowAttr(node) then
CellManager:loadCellAsync(ATTR_NODE_CELL_PATH, ATTR_NODE_CELL, self.rootNodes, function(cell)
cell:refresh(self.heroEntity, node)
@ -60,4 +60,17 @@ function HeroAttrUI:onRefresh()
self.rootNodes:setAnchoredPositionY(0)
end
-- 是否显示属性块
function HeroAttrUI:isShowAttr(node)
if node == GConst.HeroConst.ATTR_SHOW_SKIN then
return #DataManager.SkinData:getOwnAllAttr(self.heroEntity) > 0
end
if node == GConst.HeroConst.ATTR_SHOW_RUNES then
local all = self.heroEntity:getRunes():getAllAttr()
return all and #all > 0
end
return true
end
return HeroAttrUI

View File

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

View File

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

View File

@ -34,6 +34,8 @@ function HeroInfoComp:init()
self.bgElement = uiMap["hero_detail_ui.bg.element_bg"]
self.btnAttr = uiMap["hero_info.bg_6.btn_attr"]
self.fragmentNode = uiMap["hero_detail_ui.bg.fragment_bg"]
self.btnSkin = uiMap["hero_info.up.btn_skin"]
self.txSkin = uiMap["hero_info.up.btn_skin.tx_skin"]
self.skill = {}
self.skillIcon = {}
@ -47,7 +49,12 @@ function HeroInfoComp:init()
self.spineObjSkill:setVisible(false)
self.spineObjLv:setVisible(false)
self.spineObj:setVisible(false)
self.txSkin:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN))
self.btnSkin:setActive(DataManager.SkinData:isOpen())
self.btnSkin:addClickListener(function()
ModuleManager.HeroManager:showHeroSkinUI(self.heroEntity:getCfgId())
end)
self.btnUp:addClickListener(function()
ModuleManager.HeroManager:upgradeHero(self.heroEntity:getCfgId(), self.heroEntity)
end)

View File

@ -1,13 +1,37 @@
local SkinInfoComp = class("SkinInfoComp", LuaComponent)
local DEFAULT_FACTOR = GConst.BattleConst.DEFAULT_FACTOR
local PERCENT_FACTOR = 100
local HeroSkinUI = class("HeroSkinUI", BaseUI)
local SIZE_DELTA_Y_SKIN = 942
local SIZE_DELTA_Y_LOOK = 720
function SkinInfoComp:init()
local uiMap = self:getUIMap()
function HeroSkinUI:isFullScreen()
return false
end
function HeroSkinUI:getPrefabPath()
return "assets/prefabs/ui/hero/hero_skin_ui.prefab"
end
function HeroSkinUI:onPressBackspace()
self:closeUI()
end
function HeroSkinUI:ctor(parmas)
self.heroEntity = DataManager.HeroData:getHeroById(parmas.heroId)
if parmas.onlyLookSkinId then
self.onlyLook = true
self.selectSkinId = parmas.onlyLookSkinId
else
self.onlyLook = false
self.selectSkinId = self.heroEntity:getSkinId()
end
end
function HeroSkinUI:onLoadRootComplete()
local uiMap = self.root:genAllChildren()
self.bg = uiMap["hero_skin_ui.bg"]
self.content = uiMap["hero_skin_ui.content"]
self.txTitle = uiMap["hero_skin_ui.common.img_title.tx_title"]
self.btnClose = uiMap["hero_skin_ui.common.btn_close"]
self.txName = uiMap["skin_info.name.tx_name"]
self.bgQlt = uiMap["skin_info.bg_qlt"]
self.iconQlt = uiMap["skin_info.bg_qlt.icon_qlt"]
@ -26,36 +50,28 @@ function SkinInfoComp:init()
self.attr[i] = uiMap["skin_info.attr_" .. i]
end
self.txTitle:setText(self.heroEntity:getName())
self.txDesc1:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN_ATTR))
self.txDesc2:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN_LIST))
self.btnClose:addClickListener(function()
self:closeUI()
end)
self.btnUse:addClickListener(function()
ModuleManager.SkinManager:reqChangeSkin(self.heroEntity:getCfgId(), self.selectSkinId)
end)
self.btnAttr:addClickListener(function()
UIManager:showUI("app/ui/hero/hero_attr_ui", {heroEntity = self.heroEntity})
end)
end
function SkinInfoComp:setUI(ui)
self.uiRoot = ui
end
function SkinInfoComp:setHeroData(heroEntity, onlyLookSkinId)
self.heroEntity = heroEntity
if onlyLookSkinId then
self.onlyLook = true
self.selectSkinId = onlyLookSkinId
else
self.onlyLook = false
self.selectSkinId = self.heroEntity:getSkinId()
end
self:bind(self.heroEntity, "isDirty", function()
self:refresh()
self:onRefresh()
end)
self:addEventListener(EventManager.CUSTOM_EVENT.SKIN_SELECT, function(skinId)
self:refreshSelectSkin(skinId)
end)
end
function SkinInfoComp:refresh()
function HeroSkinUI:onRefresh()
local ids = DataManager.SkinData:getHeroAllSkinIdsSort(self.heroEntity:getCfgId())
self.scrollrectComp:addInitCallback(function()
return "app/ui/hero/cell/skin_cell"
@ -70,7 +86,7 @@ function SkinInfoComp:refresh()
end
-- 刷新选择皮肤相关内容
function SkinInfoComp:refreshSelectSkin(selectId)
function HeroSkinUI:refreshSelectSkin(selectId)
if selectId then
self.selectSkinId = selectId
self.scrollrectComp:updateAllCell()
@ -95,77 +111,65 @@ function SkinInfoComp:refreshSelectSkin(selectId)
local txTitle = map["tx_title"]
local txNum = map["tx_num"]
local showValue
if curAttr[index].type == GConst.MATCH_ATTACK_NAME[self.heroEntity:getMatchType()] then
-- 攻击
table.insert(showAttrType, GConst.MATCH_ATTACK_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_5")
txTitle:setText("<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
-- 攻击加成百分比
table.insert(showAttrType, GConst.MATCH_ATTACK_ADD_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_5")
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
-- 生命
table.insert(showAttrType, GConst.MATCH_HP_FIX_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_4")
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
-- 生命加成百分比
table.insert(showAttrType, GConst.MATCH_HP_ADD_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_4")
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
-- 普攻增伤
table.insert(showAttrType, GConst.MATCH_NORMAL_HURT_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_20")
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
-- 技能增伤
table.insert(showAttrType, GConst.MATCH_SKILL_HURT_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_21")
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
-- 普攻增伤百分比
table.insert(showAttrType, GConst.MATCH_NORMAL_HURTP_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_20")
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
-- 技能增伤百分比
table.insert(showAttrType, GConst.MATCH_SKILL_HURTP_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_21")
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
-- 暴击率百分比
table.insert(showAttrType, GConst.MATCH_CRIT_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_22")
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
-- 暴击伤害百分比
table.insert(showAttrType, GConst.MATCH_CRIT_TIME_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_23")
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
-- 治疗提升百分比
table.insert(showAttrType, GConst.MATCH_CURED_NAME[self.heroEntity:getMatchType()])
imgIcon:setSprite(GConst.ATLAS_PATH.COMMON, "common_dec_24")
txTitle:setText("<color=#85FF82>"..I18N:getGlobalText(I18N.GlobalConst.ATTR_CURED).."</color>")
showValue = curAttr[index].num // PERCENT_FACTOR .. "%"
else
obj:setVisible(false)
end
txNum:setText(showValue)
txNum:setText(GFunc.getAttrShowValue(curAttr[index].type, curAttr[index].num))
else
obj:setVisible(false)
end
@ -221,12 +225,14 @@ function SkinInfoComp:refreshSelectSkin(selectId)
if self.onlyLook then -- 仅查看
self.txDesc2:setVisible(false)
self.scrollrectComp.baseObject:setVisible(false)
self.baseObject:setSizeDeltaY(SIZE_DELTA_Y_LOOK)
self.bg:setSizeDeltaY(SIZE_DELTA_Y_LOOK)
self.content:setSizeDeltaY(SIZE_DELTA_Y_LOOK)
else
self.txDesc2:setVisible(true)
self.scrollrectComp.baseObject:setVisible(true)
self.baseObject:setSizeDeltaY(SIZE_DELTA_Y_SKIN)
self.bg:setSizeDeltaY(SIZE_DELTA_Y_SKIN)
self.content:setSizeDeltaY(SIZE_DELTA_Y_SKIN)
end
end
return SkinInfoComp
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.equipAttr = {}
self.skinAttr = {}
self.runesAttr = {}
self.allAttr = {}
end
@ -54,6 +55,12 @@ function HeroEntity:onSkinAttrChange()
self:setDirty()
end
function HeroEntity:onRunesAttrChange()
self:updateRunesAttr()
self:updateTotalAttr()
self:setDirty()
end
function HeroEntity:setDirty()
self.data.isDirty = not self.data.isDirty
end
@ -67,6 +74,7 @@ function HeroEntity:updateAllAttr()
self:updateBaseAttr()
self:updateEquipAttr()
self:updateSkinAttr()
self:updateRunesAttr()
self:updateTotalAttr()
end
@ -193,6 +201,46 @@ function HeroEntity:updateSkinAttr()
end
end
-- 更新符文属性
function HeroEntity:updateRunesAttr()
self.runesAttr = {}
local hp = self:getRunes():getAttrValue(GConst.MATCH_HP_FIX_NAME[self:getMatchType()])
local atk = self:getRunes():getAttrValue(GConst.MATCH_ATTACK_NAME[self:getMatchType()])
local normalHurt = self:getRunes():getAttrValue(GConst.MATCH_NORMAL_HURT_NAME[self:getMatchType()])
local skillHurt = self:getRunes():getAttrValue(GConst.MATCH_SKILL_HURT_NAME[self:getMatchType()])
local critPer = self:getRunes():getAttrValue(GConst.MATCH_CRIT_NAME[self:getMatchType()])
local critHurtPer = self:getRunes():getAttrValue(GConst.MATCH_CRIT_TIME_NAME[self:getMatchType()])
local normalHurtPer = self:getRunes():getAttrValue(GConst.MATCH_NORMAL_HURTP_NAME[self:getMatchType()])
local skillHurtPer = self:getRunes():getAttrValue(GConst.MATCH_SKILL_HURTP_NAME[self:getMatchType()])
local healPer = self:getRunes():getAttrValue(GConst.MATCH_CURED_NAME[self:getMatchType()])
self.runesAttr[GConst.MATCH_HP_NAME[self:getMatchType()]] = hp
self.runesAttr[GConst.MATCH_ATTACK_NAME[self:getMatchType()]] = atk
self.runesAttr[GConst.MATCH_NORMAL_HURT_NAME[self:getMatchType()]] = normalHurt
self.runesAttr[GConst.MATCH_SKILL_HURT_NAME[self:getMatchType()]] = skillHurt
self.runesAttr[GConst.MATCH_CRIT_NAME[self:getMatchType()]] = critPer
self.runesAttr[GConst.MATCH_CRIT_TIME_NAME[self:getMatchType()]] = critHurtPer
self.runesAttr[GConst.MATCH_NORMAL_HURTP_NAME[self:getMatchType()]] = normalHurtPer
self.runesAttr[GConst.MATCH_SKILL_HURTP_NAME[self:getMatchType()]] = skillHurtPer
self.runesAttr[GConst.MATCH_CURED_NAME[self:getMatchType()]] = healPer
if EDITOR_MODE then
local printStr = ""
printStr = printStr .. "更新符文数值:"..self:getCfgId() .. "\n"
printStr = printStr .. "生命:".. hp .. "\n"
printStr = printStr .. "攻击力:".. atk .. "\n"
printStr = printStr .. "普攻增伤:".. normalHurt .. "\n"
printStr = printStr .. "技能增伤:".. skillHurt .. "\n"
printStr = printStr .. "暴击率:".. critPer .. "\n"
printStr = printStr .. "暴击伤害百分比:".. critHurtPer .. "\n"
printStr = printStr .. "普攻增伤百分比:".. normalHurtPer .. "\n"
printStr = printStr .. "技能增伤百分比:".. skillHurtPer .. "\n"
printStr = printStr .. "治疗加成百分比:".. healPer .. "\n"
Logger.logHighlight(printStr)
end
end
-- 更新总属性
function HeroEntity:updateTotalAttr()
self.allAttr = {}
@ -205,6 +253,9 @@ function HeroEntity:updateTotalAttr()
for k, v in pairs(self.skinAttr) do
self:addTotalAttrValue(k, v)
end
for k, v in pairs(self.runesAttr) do
self:addTotalAttrValue(k, v)
end
end
function HeroEntity:setTotalAttrValue(name, value)
@ -500,6 +551,7 @@ function HeroEntity:getTotalBaseHp()
end
end
result = result + DataManager.SkinData:getBaseHp(self)
result = result + self:getRunes():getAttrValue(GConst.MATCH_HP_FIX_NAME, true)
return result
end
@ -517,6 +569,7 @@ function HeroEntity:getTotalBaseAtk()
end
-- Logger.logHighlight(logStr)
result = result + DataManager.SkinData:getBaseAttack(self)
result = result + self:getRunes():getAttrValue(GConst.MATCH_ATTACK_NAME, true)
return result
end
@ -545,4 +598,18 @@ function HeroEntity:getSkins()
return self.unlockSkins
end
function HeroEntity:setRunes(runesEntity)
self.runesEntity = runesEntity
self:getTotalAttrValue() -- 防止报错
self:onRunesAttrChange()
end
function HeroEntity:getRunes()
if self.runesEntity then
return self.runesEntity
end
return DataManager.RunesData:getRunes(self:getCfgId())
end
return HeroEntity

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()
DataManager:registerCrossDayFunc("ShopData", function()
self:resetRunesGift()
self:resetMallDaily()
self:resetCommonDailyGemAdCount()
self:resetCommonDailyCoinAdCount()
@ -95,6 +96,14 @@ function ShopData:getGiftBoughtNum(actType, actId)
return 0
end
-- 重置一个礼包购买次数
function ShopData:resetGiftBoughtNum(actType, actId)
local data = self:getActGiftDetailData(actType, actId)
if data then
data.buy_count = 0
end
end
-- 获取通用礼包剩余可购买次数
function ShopData:getGiftRemainBuyNum(actId)
local bought = self:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, actId)
@ -1030,4 +1039,11 @@ function ShopData:markPopLastChapterActGift()
end
end
-- 重置符文每日礼包次数
function ShopData:resetRunesGift()
for index, id in ipairs(GConst.RunesConst.GIFT_IDS) do
self:resetGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, id)
end
end
return ShopData