--金将试炼关 目前给周瑜活动用(2022年7月22日) local Base = require("Battle/Logic/Level/LevelFunction/LevelFunction") local GoldHeroTrialLevelFunction = class("GoldHeroTrialLevelFunction",Base) function GoldHeroTrialLevelFunction:GetExpClass() return require "Battle/Expression/ExpLevel/ExpLevelFunction/ExpGoldHeroTrialLevelFunction" end function GoldHeroTrialLevelFunction:InitLevel() Base.InitLevel(self) self.dmgToBoss = FP.newV1(0) end function GoldHeroTrialLevelFunction:OnHpChange(entity, caster, delta, op, realDelta) if realDelta < FP.Const.Zero and caster then local originEntity = caster:GetOriginEntity() if entity:IsBoss() and originEntity:IsHero() then self.dmgToBoss:Add(-realDelta) end end end function GoldHeroTrialLevelFunction:GetBossHpLeftPercent() return self.bossHpLeft or 1 end function GoldHeroTrialLevelFunction:GetSubjugateDataPVEID() local id = 0 local gsGroupId = LevelManager.GetGsGroupId() local bossLevel = LevelManager.GetBossLevel() if gsGroupId and bossLevel then local data = DataSheetManager.SuperGoldBossGS:GetDataByGSGroupID_BossLevel(gsGroupId, bossLevel) if data then id = data.SubjugateGSID else logging.error(LTAG.ERROR, "HYW : data nil Error @GoldHeroTrialLevelFunction:GetSubjugateDataPVEID gsGroupId, bossLevel : ", gsGroupId, bossLevel) end else if gsGroupId == nil then logging.error(LTAG.ERROR, "HYW : gsGroupId nil Error!!! LevelID : ", LevelManager.GetCurLevelID()) end if bossLevel == nil then logging.error(LTAG.ERROR, "HYW : bossLevel nil Error!!! LevelID : ", LevelManager.GetCurLevelID()) end end return id end function GoldHeroTrialLevelFunction:OnUpdate() Base.OnUpdate(self) if LogicUpdateManager._clientHandleFrame == self.callBaseSucceedFrame then Base.OnLevelSucceed(self, self.callBaseSucceedWithShow) end end function GoldHeroTrialLevelFunction:BeforeEndLevel() Base.BeforeEndLevel(self) --在关卡结束之前,记录boss血量,因为关卡结束后(OnLevelSucceed、OnLevelFail),怪物会被全部清空,boss剩余血量就再也取不到了 if #self.bossList > 0 then self.bossHpLeft = FP.tonumberV1(self.bossList[1].components.attr:HitPointPercents()) else self.bossHpLeft = 0 end end function GoldHeroTrialLevelFunction:OnLevelSucceed(withShow) self.callBaseSucceedFrame = LogicUpdateManager._clientHandleFrame + 20 --这里不延迟,处理不了一个动画的问题,因为现在配了是全部英雄死亡就胜利,此时会播一个受击动画 self.callBaseSucceedWithShow = withShow end return GoldHeroTrialLevelFunction