PGRData/Script/matrix/xentity/xguildwar/battle/XGWEliteMonster.lua

130 lines
No EOL
3.6 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 精英怪
local XGWEliteMonster = XClass(nil, "XGWEliteMonster")
function XGWEliteMonster:Ctor(id)
self.Config = XGuildWarConfig.GetEliteMonsterConfig(id)
self.MonsterPatrolConfig = XGuildWarConfig.GetCfgByIdKey(XGuildWarConfig.TableKey.MonsterPatrol, id)
self.UID = 0
self.CurrentHP = self.Config.HpMax
self.MaxHP = self.Config.HpMax
-- 当前路径索引
self.CurrentRouteIndex = 0
self.FightCount = 0
self.DeadTime = 0
-- 下一路径索引
self.NextRouteIndex = 0
end
-- data : XGuildWarMonsterData
function XGWEliteMonster:UpdateWithServerData(data)
self.UID = data.Uid
self.CurrentHP = data.CurHp
self.MaxHP = data.HpMax
self.CurrentRouteIndex = data.CurNodeIdx
self.FightCount = data.FightCount
self.DeadTime = data.DeadTime
end
function XGWEliteMonster:UpdateCurrentRouteIndex(value)
self.CurrentRouteIndex = value
end
function XGWEliteMonster:UpdateNextRouteIndex(value)
self.NextRouteIndex = value
end
function XGWEliteMonster:GetIsDead()
return self.CurrentHP <= 0
end
function XGWEliteMonster:UpdateDead(IsDead)--如果为true视为死的复活活的保持
self.CurrentHP = IsDead and 0 or (self.CurrentHP > 0 and self.CurrentHP or 1)
end
function XGWEliteMonster:GetUID()
return self.UID
end
function XGWEliteMonster:GetCurrentNodeId()
return self.MonsterPatrolConfig.Routes[self.CurrentRouteIndex + 1]
end
function XGWEliteMonster:GetNextNodeId()
return self.MonsterPatrolConfig.Routes[self.NextRouteIndex + 1]
end
-- 获取前进时间
function XGWEliteMonster:GetForwardTimeStr()
local refreshTime = XDataCenter.GuildWarManager.GetNextMapRefreshTime()
local nowTime = XTime.GetServerNowTimestamp()
return XUiHelper.GetTime(math.max(0, refreshTime - nowTime), XUiHelper.TimeFormatType.GUILDCD)
end
-- 已废弃
-- function XGWEliteMonster:GetBornTimeStr(day)
-- if day == nil then day = 1 end
-- local oclock = XGuildWarConfig.GetClientConfigValues("DayRefreshTime", "Float")[1]
-- local refreshTime = XTime.GetServerNextTargetTime(oclock + ((day - 1) * 24) )
-- local nowTime = XTime.GetServerNowTimestamp()
-- return XUiHelper.GetTime(math.max(0, refreshTime - nowTime), XUiHelper.TimeFormatType.HOUR_MINUTE_SECOND)
-- end
function XGWEliteMonster:GetIcon()
return self.Config.Icon
end
function XGWEliteMonster:GetName()
return self.Config.Name
end
-- 获取当前节点当场最高伤害
function XGWEliteMonster:GetMaxDamage()
return XDataCenter.GuildWarManager.GetBattleManager()
:GetMaxDamageByUID(self.UID)
end
function XGWEliteMonster:GetDamagePercent()
return self.Config.DamagePercent
end
-- 获取百分比血量
function XGWEliteMonster:GetPercentageHP()
return getRoundingValue((self:GetHP() / self:GetMaxHP()) * 100, 2)
end
function XGWEliteMonster:GetHP()
return self.CurrentHP
end
function XGWEliteMonster:GetMaxHP()
return self.MaxHP
end
function XGWEliteMonster:GetFightCostEnergy()
return self.Config.FightCostEnergy
end
function XGWEliteMonster:GetSweepCostEnergy()
return self.Config.SweepCostEnergy
end
function XGWEliteMonster:GetStageId()
return XGuildWarConfig.GetCfgByIdKey(XGuildWarConfig.TableKey.Stage
, self.Config.GuildWarStageId).StageId
end
-- 检查是否能够扫荡
function XGWEliteMonster:CheckCanSweep(checkCostEnergy)
if self:GetIsDead() then
return false
end
if self:GetMaxDamage() <= 0 then
return false
end
if checkCostEnergy then
return XDataCenter.GuildWarManager.GetCurrentActionPoint() >= self.Config.SweepCostEnergy
end
return true
end
return XGWEliteMonster