From a9f55b1be431e71c9be021f7484c2e45e34b9586 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 22 十二月 2023 18:12:19 +0800 Subject: [PATCH] 10019 【砍树】回合战斗(NPC战斗属性统一放到NPC扩展表;每回合开始处理减技能CD、buff持续时间、刷新buff,每回合等同于常规时间1秒;NPC支持击晕;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py | 44 +++++++++++++++++++++++--------------------- 1 files changed, 23 insertions(+), 21 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py index 072738d..2472fe5 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py @@ -1697,40 +1697,42 @@ # 属性击晕 def AttackFaintRate(attacker, defender, curSkill, tick): - if attacker.GetGameObjType() != IPY_GameWorld.gotPlayer: - return + #if attacker.GetGameObjType() != IPY_GameWorld.gotPlayer: + # return faintRate = GameObj.GetFaintRate(attacker) if not faintRate: #GameWorld.DebugLog("没有击晕概率!", attacker.GetID()) return - if curSkill: - useSkillData = attacker.GetUseSkill() - # 非主动性技能不触发 - if not useSkillData: - return - if useSkillData.GetSkillID() != curSkill.GetSkillID(): - return - - if not defender: - useSkillTagID = attacker.GetUseSkillTagID() - useSkillTagType = attacker.GetUseSkillTagType() - defender = GameWorld.GetObj(useSkillTagID, useSkillTagType) + if attacker.GetGameObjType() == IPY_GameWorld.gotPlayer: + if curSkill: + useSkillData = attacker.GetUseSkill() + # 非主动性技能不触发 + if not useSkillData: + return + if useSkillData.GetSkillID() != curSkill.GetSkillID(): + return + if not defender: - return + useSkillTagID = attacker.GetUseSkillTagID() + useSkillTagType = attacker.GetUseSkillTagType() + defender = GameWorld.GetObj(useSkillTagID, useSkillTagType) + + if not defender: + return if attacker.GetID() == defender.GetID(): return - + if GameObj.GetHP(defender) <= 0: return - - tagFaintRate = GameObj.GetFaintDefRate(defender) if defender.GetGameObjType() == IPY_GameWorld.gotPlayer else 0 - + + tagFaintDefRate = GameObj.GetFaintDefRate(defender) + # 添加最高60%击晕效果 maxRate = IpyGameDataPY.GetFuncCfg("PassiveSkillFaint", 1) - rate = min(max(faintRate - tagFaintRate, 0), maxRate) + rate = min(max(faintRate - tagFaintDefRate, 0), maxRate) if not GameWorld.CanHappen(rate): return @@ -1742,7 +1744,7 @@ GameWorld.DebugLog("击晕CD中! rate=%s,剩余tick=%s" % (rate, remainTick), attacker.GetID()) return attacker.SetDict(ChConfig.Def_PlayerKey_AttrFaintCD, tick) - GameWorld.DebugLog("触发击晕! rate=%s" % rate, attacker.GetID()) + GameWorld.DebugLog("触发击晕! rate=%s,tagID=%s" % (rate, defender.GetID()), attacker.GetID()) SkillCommon.AddBuffBySkillType(defender, ChConfig.Def_SkillID_AtkerFaint, tick) return -- Gitblit v1.8.0