From fbf3fe5655d97c67db3bf07706ab5af232dcc9a5 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 18 九月 2025 19:17:48 +0800 Subject: [PATCH] 129 【战斗】战斗系统-服务端(甘夫人技能;增加连击、追击增伤减伤属性;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py | 392 ++++++++++++++----------------------------------------- 1 files changed, 102 insertions(+), 290 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py index d4639ce..f1d7758 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py @@ -31,7 +31,6 @@ import PlayerControl import NPCCommon import SkillCommon -import EffGetSet import FBLogic import ReadChConfig import PetControl @@ -46,15 +45,10 @@ import GameObj import BuffSkill import PlayerState -import MirrorAttack import ChPyNetSendPack -import NPCHurtManager import NetPackCommon -import FamilyRobBoss import FBCommon import ChNPC -import BossHurtMng -import NPCHurtMgr import ChNetSendPack import TurnAttack @@ -374,15 +368,6 @@ AddHurtValue(defender, attacker.GetPlayerID(), ChConfig.Def_NPCHurtTypePlayer, 1) return -## 被攻击者被动buff触发 -# @param curTagPlayer 被攻击者 -# @param tick 当前时间 -# @param isSuperHit 暴击 -# @return None -# @remarks 函数详细说明. -def DefenderSpringBuff(curTagPlayer, tick, isSuperHit=False): - return - #--------------------------------------------------------------------- def GetBattleRelationType(attacker, defender): @@ -448,66 +433,6 @@ #NPC读表取 return attack.GetHurtType() -def GetAtkDistType(curObj): - ## 获取是近战还是远程,默认近战 - if curObj.GetGameObjType() != IPY_GameWorld.gotNPC: - return ChConfig.AtkDistType_Short - - playerID = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_LineupPlayerID) - if not playerID: - return ChConfig.AtkDistType_Short - - heroID = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_HeroID) - if heroID: - heroIpyData = IpyGameDataPY.GetIpyGameData("Hero", heroID) - if heroIpyData: - return heroIpyData.GetAtkDistType() - - npcID = curObj.GetNPCID() - npcDataEx = NPCCommon.GetNPCDataEx(npcID) - if npcDataEx: - return npcDataEx.GetAtkDistType() - - return ChConfig.AtkDistType_Short - -## 输入基础数值,返回增强后的值 - 技能加强 -# @param value 基础值 -# @param skill 技能 -# @return 增强后的值 -# @remarks 函数详细说明. -def GetEnhanceValue(value, skill): - per = skill.GetEffect(0).GetEffectValue(0) - eff = skill.GetEffect(0).GetEffectValue(1) - #GameWorld.Log("被动 -> 自身属性,技能ID = %s,技能增强 = %s,附加 = %s , 基础值 = %s"%(skill.GetSkillName(),per,eff,value)) - return max(value * per / ChConfig.Def_MaxRateValue + eff , 1) - -## 输入基础数值,返回增强后的值 (LV)- 效果加强 -# @param value 基础值 -# @param eff 效果 -# @return 增强后的值 -# @remarks 函数详细说明. -def GetEnhanceValue_Eff(value, eff): - per = eff.GetEffectValue(0) - eff = eff.GetEffectValue(1) - #GameWorld.Log("value = %s,per = %s,erf = %s"%(value,per,eff)) - return max(value * per / ChConfig.Def_MaxRateValue + eff , 1) - -## 输入基础效果值,(玩家索引) -> 技能增强 -# @param curPlayer 当前玩家 -# @param curEffect 当前效果 -# @return 增强后的值 -# @remarks 函数详细说明. -def GetEnhanceIndexValue_Eff(curPlayer, curEffect): - index = curEffect.GetEffectValue(0) - skillPer = curEffect.GetEffectValue(1) - effect = curEffect.GetEffectValue(2) - maxValue = EffGetSet.GetValueByEffIndex(curPlayer, index) - #GameWorld.Log("-----%s,%s,%s,%s"%(index,skillPer,effect,maxValue)) - - if maxValue == None: - return 0 - - return max(maxValue * skillPer / ChConfig.Def_MaxRateValue + effect , 1) #-------------------------------------------------------------------------- ## 设置玩家进入战斗状态 # @param defender 当前玩家(被攻击了) @@ -686,19 +611,11 @@ curObjType = curObj.GetGameObjType() if curObjType == IPY_GameWorld.gotPlayer: - #BossHurtMng.BossAddPlayerInHurtList(curObj, curTagObj, hurtHP) - FamilyRobBoss.OnPlayerHurtFamilyOwnerBoss(curObj, curTagObj, hurtHP) if curTagObj.GetGameObjType() == IPY_GameWorld.gotNPC: FBLogic.DoFB_Player_HurtNPC(curObj, curTagObj, hurtHP) if GameObj.GetHP(curTagObj) == 0: curTagObj.SetDict(ChConfig.Def_PlayerKey_LastHurt, curObj.GetPlayerID()) - if NPCHurtManager.AddHurtValue(curObj, curTagObj, hurtHP, isBounce): - return - - if NPCHurtMgr.AddHurtValue(curObj, curTagObj, hurtHP, isBounce): - return - curTeam = curObj.GetTeam() if curTeam == None: #无队伍,添加个人伤害 @@ -764,10 +681,6 @@ #if not CheckAttackNPCByCnt(attacker, defender): # return False - #击杀次数判断 - if not NPCHurtManager.IsAssistPlayer(attacker.GetPlayerID(), defender) and not CheckKillNPCByCnt(attacker, defender): - return False - #仙盟归属NPC判断 if not CheckCanAttackFamilyOwnerNPC(attacker, defender): return False @@ -778,10 +691,6 @@ #if not CheckAttackNPCByCnt(defender, attacker, False): # return False - #击杀次数判断 - if not CheckKillNPCByCnt(defender, attacker, False) and not NPCHurtManager.IsAssistPlayer(defender.GetPlayerID(), attacker): - return False - #仙盟归属NPC判断 if not CheckCanAttackFamilyOwnerNPC(defender, attacker, False): return False @@ -789,11 +698,11 @@ # NPC打NPC elif atkObjType == IPY_GameWorld.gotNPC and defObjType == IPY_GameWorld.gotNPC: if PetControl.IsPet(attacker) or attacker.GetGameNPCObjType()== IPY_GameWorld.gnotSummon: - #击杀次数判断 - if not CheckKillNPCByCnt(attacker, defender, False): - ownerPlayer = GetAttackPlayer(attacker)[0] - if ownerPlayer and not NPCHurtManager.IsAssistPlayer(ownerPlayer.GetPlayerID(), defender): - return False + ##击杀次数判断 + #if not CheckKillNPCByCnt(attacker, defender, False): + # ownerPlayer = GetAttackPlayer(attacker)[0] + # if ownerPlayer and not NPCHurtManager.IsAssistPlayer(ownerPlayer.GetPlayerID(), defender): + # return False #仙盟归属NPC判断 if not CheckCanAttackFamilyOwnerNPC(attacker, defender, False): @@ -906,28 +815,15 @@ if not GameFuncComm.GetFuncCanUse(atkPlayer, funcID): PlayerControl.NotifyCode(atkPlayer, funcSysMark) return - canKillCnt = BossHurtMng.GetCanKillBossCnt(atkPlayer, index)[0] - - if canKillCnt <= 0: - #if BossHurtMng.GetPlayerBossHurt(atkPlayer, defender): - # GameWorld.DebugLog("攻击过该boss可继续攻击") - # return True - #次数不足 - # 实际攻击者类型None则需要提示玩家 - if npcObjType is None: - if isNotify: - sysMark = IpyGameDataPY.GetFuncEvalCfg('KillBossCntLimit', 3, {}).get(index, '') - PlayerControl.NotifyCode(atkPlayer, sysMark) - return False - - npcDataEx = NPCCommon.GetNPCDataEx(npcID) - if npcDataEx and npcDataEx.GetFightPowerLackAtkLimit(): - if npcDataEx.GetSuppressFightPower() > PlayerControl.GetFightPower(atkPlayer): - if isNotify: - PlayerControl.NotifyCode(atkPlayer, "BossFightPowerHint") - #GameWorld.DebugLog("战力不足,无法攻击boss! npcID=%s,SuppressFightPower=%s > playerFightPower=%s" - # % (npcID, npcDataEx.GetSuppressFightPower(), PlayerControl.GetFightPower(atkPlayer))) - return False + + #npcDataEx = NPCCommon.GetNPCDataPy(npcID) + #if npcDataEx and npcDataEx.GetFightPowerLackAtkLimit(): + # if npcDataEx.GetSuppressFightPower() > PlayerControl.GetFightPower(atkPlayer): + # if isNotify: + # PlayerControl.NotifyCode(atkPlayer, "BossFightPowerHint") + # #GameWorld.DebugLog("战力不足,无法攻击boss! npcID=%s,SuppressFightPower=%s > playerFightPower=%s" + # # % (npcID, npcDataEx.GetSuppressFightPower(), PlayerControl.GetFightPower(atkPlayer))) + # return False return True @@ -954,9 +850,6 @@ hasAttackCnt = atkPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WorldBoss_HurtCnt, 0) if hasAttackCnt >= limitCnt: - #if BossHurtMng.GetPlayerBossHurt(atkPlayer, defender): - # GameWorld.DebugLog("攻击过该boss可继续攻击") - # return True #次数不足 # 实际攻击者类型None则需要提示玩家 if npcObjType is None: @@ -1379,25 +1272,6 @@ return hurtType, hurtTypeResultDict - -def __HurtTypeHappen_LuckyHit(atkObj, defObj, happenState, curSkill): - ''' 判断伤害类型是否发生 - 会心一击 - @return: 是否触发, 触发时伤害计算固定值, 触发时防守方的伤害减免固定值 - ''' - if IsHappenStateByType(happenState, ChConfig.Def_Skill_HappenState_LuckyHit): - return True, atkObj.GetLuckyHitVal(), PlayerControl.GetLuckyHitReduce(defObj) - - aLuckyHitRate = atkObj.GetLuckyHitRate() - dLuckyHitRateReduce = PlayerControl.GetLuckyHitRateReduce(defObj) - - - atkLuckyHitRate = eval(ReadChConfig.GetChConfig("CalcLuckyHitRate")) - if atkLuckyHitRate <= 0: - return - if GameWorld.CanHappen(atkLuckyHitRate): - return True, atkObj.GetLuckyHitVal(), PlayerControl.GetLuckyHitReduce(defObj) - return - def __HurtTypeHappen_SuperHit(atkObj, defObj, happenState, curSkill): ''' 判断伤害类型是否发生 - 暴击 @return: 是否触发, 触发时伤害计算固定值, 触发时防守方的伤害减免固定值 @@ -1423,22 +1297,12 @@ ''' 判断伤害类型是否发生 - 防守方抵御 @return: 是否触发, 触发时伤害计算值, 触发时防守方的伤害减免值 ''' - chanceDefPer = PlayerControl.GetDamChanceDef(defObj) - if not chanceDefPer: - return - if GameWorld.CanHappen(ChConfig.Def_ChanceDefRate): - return True, 0, chanceDefPer - return - -#def __HurtTypeHappen_Zhuxian(atkObj, defObj, happenState, curSkill): -# """诛仙一击""" -# rate = PlayerControl.GetZhuXianRate(atkObj) -# if not rate: +# chanceDefPer = PlayerControl.GetDamChanceDef(defObj) +# if not chanceDefPer: # return -# -# if GameWorld.CanHappen(rate): -# return True, PlayerControl.GetZhuXianHurtPer(atkObj), 0 -# return +# if GameWorld.CanHappen(ChConfig.Def_ChanceDefRate): +# return True, 0, chanceDefPer + return # 致命一击 def __HurtTypeHappen_Deadly(atkObj, defObj, happenState, curSkill): @@ -1483,21 +1347,21 @@ if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer: reducePer = SkillCommon.GetSkillReducePerByID(defObj, skillTypeID) - #根据防守方职业 计算攻击方伤害加成 - if defObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]: - addPer += PlayerControl.GetJobAHurtAddPer(atkObj) - elif defObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]: - addPer += PlayerControl.GetJobBHurtAddPer(atkObj) - elif defObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]: - addPer += PlayerControl.GetJobCHurtAddPer(atkObj) - - #根据攻击方职业 计算防守方伤害减免 - if atkObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]: - reducePer += PlayerControl.GetJobAAtkReducePer(defObj) - elif atkObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]: - reducePer += PlayerControl.GetJobBAtkReducePer(defObj) - elif atkObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]: - reducePer += PlayerControl.GetJobCAtkReducePer(defObj) +# #根据防守方职业 计算攻击方伤害加成 +# if defObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]: +# addPer += PlayerControl.GetJobAHurtAddPer(atkObj) +# elif defObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]: +# addPer += PlayerControl.GetJobBHurtAddPer(atkObj) +# elif defObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]: +# addPer += PlayerControl.GetJobCHurtAddPer(atkObj) +# +# #根据攻击方职业 计算防守方伤害减免 +# if atkObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]: +# reducePer += PlayerControl.GetJobAAtkReducePer(defObj) +# elif atkObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]: +# reducePer += PlayerControl.GetJobBAtkReducePer(defObj) +# elif atkObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]: +# reducePer += PlayerControl.GetJobCAtkReducePer(defObj) if addPer or reducePer: addSkillPer = addPer - reducePer @@ -1620,24 +1484,25 @@ # 攻击时防守方神兵护盾的处理 def CalcAtkProDef(atkObj, defObj, hurtValue, curSkill, tick): - if defObj.GetGameObjType() != IPY_GameWorld.gotPlayer: - return hurtValue - - if not CheckIsPlayerOnwer(atkObj): - return hurtValue - - curProDef = PlayerControl.GetProDef(defObj) - if not curProDef: - return hurtValue - - absortValue = min(PlayerControl.GetProDefAbsorb(defObj)*hurtValue/ChConfig.Def_MaxRateValue, curProDef) - - PlayerControl.SetProDef(defObj, curProDef - absortValue) - - # 被动技能触发 - defObj.SetDict(ChConfig.Def_PlayerKey_GodWeaponBeforeProDef, curProDef) - PassiveBuffEffMng.OnPassiveSkillTrigger(defObj, atkObj, None, ChConfig.TriggerType_ProDefValue, tick) - return hurtValue - absortValue + return hurtValue +# if defObj.GetGameObjType() != IPY_GameWorld.gotPlayer: +# return hurtValue +# +# if not CheckIsPlayerOnwer(atkObj): +# return hurtValue +# +# curProDef = PlayerControl.GetProDef(defObj) +# if not curProDef: +# return hurtValue +# +# absortValue = min(PlayerControl.GetProDefAbsorb(defObj)*hurtValue/ChConfig.Def_MaxRateValue, curProDef) +# +# PlayerControl.SetProDef(defObj, curProDef - absortValue) +# +# # 被动技能触发 +# defObj.SetDict(ChConfig.Def_PlayerKey_GodWeaponBeforeProDef, curProDef) +# PassiveBuffEffMng.OnPassiveSkillTrigger(defObj, atkObj, None, ChConfig.TriggerType_ProDefValue, tick) +# return hurtValue - absortValue # 设置玩家一次主动型攻击中的第一个防御者 @@ -1646,7 +1511,7 @@ return if curSkill and curSkill.GetFuncType() not in [ChConfig.Def_SkillFuncType_FbSkill, - ChConfig.Def_SkillFuncType_TurnNormaAttack]: + ChConfig.Def_SkillFuncType_TurnNormaSkill]: return if attacker.GetDictByKey(ChConfig.Def_PlayerKey_FirstDefender): @@ -1817,20 +1682,20 @@ fightPowerMax = ipyData.GetFightPowerMax() everyFightPower = ipyData.GetEveryFightPower() everyFightPowerLostHPEx = ipyData.GetEveryFightPowerLostHPEx() - if fightPowerMinByLV and fightPowerMin: - npcLV = NPCCommon.GetNPCLV(curNPC) - playerCurLVIpyData = PlayerControl.GetPlayerLVIpyData(npcLV) - if not playerCurLVIpyData: - return - ReFightPower = playerCurLVIpyData.GetReFightPower() # 战斗力 - reRate = ReFightPower / float(fightPowerMin) - #GameWorld.DebugLog("标准战力需要取等级表: fightPowerMin=%s,fightPowerMax=%s,everyFightPower=%s,npcLV=%s,ReFightPower=%s,reRate=%s" - # % (fightPowerMin, fightPowerMax, everyFightPower, npcLV, ReFightPower, reRate)) - fightPowerMin = ReFightPower - fightPowerMax = int(fightPowerMax * reRate) - everyFightPower = int(everyFightPower * reRate) - #GameWorld.DebugLog("按比例更新战力值信息: fightPowerMin=%s,fightPowerMax=%s,everyFightPower=%s" - # % (fightPowerMin, fightPowerMax, everyFightPower)) + #if fightPowerMinByLV and fightPowerMin: + # npcLV = NPCCommon.GetNPCLV(curNPC) + # playerCurLVIpyData = PlayerControl.GetPlayerLVIpyData(npcLV) + # if not playerCurLVIpyData: + # return + # ReFightPower = playerCurLVIpyData.GetReFightPower() # 战斗力 + # reRate = ReFightPower / float(fightPowerMin) + # #GameWorld.DebugLog("标准战力需要取等级表: fightPowerMin=%s,fightPowerMax=%s,everyFightPower=%s,npcLV=%s,ReFightPower=%s,reRate=%s" + # # % (fightPowerMin, fightPowerMax, everyFightPower, npcLV, ReFightPower, reRate)) + # fightPowerMin = ReFightPower + # fightPowerMax = int(fightPowerMax * reRate) + # everyFightPower = int(everyFightPower * reRate) + # #GameWorld.DebugLog("按比例更新战力值信息: fightPowerMin=%s,fightPowerMax=%s,everyFightPower=%s" + # # % (fightPowerMin, fightPowerMax, everyFightPower)) effFightPower = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_TimeLostHPFightPower) \ + curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_TimeLostHPFightPowerEx) * ChConfig.Def_PerPointValue @@ -2035,7 +1900,7 @@ turnFightPosInfo = atkObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightPosInfo) mustHit = False - if SkillCommon.isXPSkill(curSkill): + if SkillCommon.isAngerSkill(curSkill): mustHit = True GameWorld.DebugLog(" XP必命中") angerOverflow = max(GameObj.GetXP(atkObj) - IpyGameDataPY.GetFuncCfg("AngerXP", 2), 0) @@ -2096,13 +1961,13 @@ atkSkillPer = ChangeSkillHurtPer(atkObj, defObj, curSkill, atkSkillPer) # --- 新增普通攻击的数值和技能攻击的数值,根据类型各自计算 - if atkObjType == IPY_GameWorld.gotPlayer: - if not curSkill or curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_TurnNormaAttack: - atkSkillPer += PlayerControl.GetNormalHurtPer(atkObj) - atkSkillValue += PlayerControl.GetNormalHurt(atkObj) - elif curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbSkill, ChConfig.Def_SkillFuncType_FbPassiveSkill]: - atkSkillPer += PlayerControl.GetFabaoHurtPer(atkObj) - atkSkillValue += PlayerControl.GetFabaoHurt(atkObj) + #if atkObjType == IPY_GameWorld.gotPlayer: + # if not curSkill or curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_TurnNormaSkill: + # atkSkillPer += PlayerControl.GetNormalHurtPer(atkObj) + # atkSkillValue += PlayerControl.GetNormalHurt(atkObj) + # elif curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbSkill, ChConfig.Def_SkillFuncType_FbPassiveSkill]: + # atkSkillPer += PlayerControl.GetFabaoHurtPer(atkObj) + # atkSkillValue += PlayerControl.GetFabaoHurt(atkObj) atkSkillValue += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SkillValue) atkSkillValue += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SkillValue) @@ -2149,19 +2014,19 @@ if atkObjType == IPY_GameWorld.gotPlayer: aIgnoreDefRate = atkObj.GetIgnoreDefRate() # 无视防御比率 aSkillAtkRate = atkObj.GetSkillAtkRate() # 技能攻击力加成 - aDamagePVP = PlayerControl.GetDamagePVP(atkObj) # PVP固定伤害 - aDamagePVE = PlayerControl.GetDamagePVE(atkObj) # PVE固定伤害 + aDamagePVP = 0 #PlayerControl.GetDamagePVP(atkObj) # PVP固定伤害 + aDamagePVE = 0 #PlayerControl.GetDamagePVE(atkObj) # PVE固定伤害 - aNPCHurtAddPer = PlayerControl.GetNPCHurtAddPer(atkObj) # PVE伤害加成 - aDamagePerPVP = PlayerControl.GetDamagePerPVP(atkObj) # 外层PVP伤害加成 + aNPCHurtAddPer = 0 #PlayerControl.GetNPCHurtAddPer(atkObj) # PVE伤害加成 + aDamagePerPVP = 0 #PlayerControl.GetDamagePerPVP(atkObj) # 外层PVP伤害加成 aDamagePerPVP += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddPVPDamagePer) - aFinalHurt = PlayerControl.GetFinalHurt(atkObj) # 最终固定伤害 + aFinalHurt = 0#PlayerControl.GetFinalHurt(atkObj) # 最终固定伤害 # 被动增加最终伤害 aFinalHurt += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddFinalValue) aFinalHurt += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddFinalValue) - aOnlyFinalHurt = PlayerControl.GetOnlyFinalHurt(atkObj) # 额外固定伤害 + aOnlyFinalHurt = 0 #PlayerControl.GetOnlyFinalHurt(atkObj) # 额外固定伤害 aFightPower = PlayerControl.GetFightPower(atkObj) else: aIgnoreDefRate = 0 # 无视防御比率 @@ -2182,14 +2047,14 @@ dFinalHurtReducePer = GameObj.GetFinalHurtReducePer(defObj) dFinalHurtReducePer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, curSkill, ChConfig.TriggerType_dFinalHurtReducePer) if defObjType == IPY_GameWorld.gotPlayer: - dIgnoreDefRateReduce = PlayerControl.GetIgnoreDefRateReduce(defObj) # 无视防御比率抗性 - dSkillAtkRateReduce = PlayerControl.GetSkillAtkRateReduce(defObj) # 技能攻击力减少 - dDamagePVPReduce = PlayerControl.GetDamagePVPReduce(defObj) # PVP固定减伤 + dIgnoreDefRateReduce = 0 #PlayerControl.GetIgnoreDefRateReduce(defObj) # 无视防御比率抗性 + dSkillAtkRateReduce = 0 #PlayerControl.GetSkillAtkRateReduce(defObj) # 技能攻击力减少 + dDamagePVPReduce = 0 #PlayerControl.GetDamagePVPReduce(defObj) # PVP固定减伤 #dDamReduce += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_DamageReduce) - dDamagePerPVPReduce = PlayerControl.GetDamagePerPVPReduce(defObj) # 外层PVP减伤 + dDamagePerPVPReduce = 0 #PlayerControl.GetDamagePerPVPReduce(defObj) # 外层PVP减伤 dDamagePerPVPReduce += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_DamageReducePVP) - dFinalHurtReduce = PlayerControl.GetFinalHurtReduce(defObj) # 最终固定伤害减少 - dBeHurtPer = PlayerControl.GetBeHurtPer(defObj) # 加深受到伤害百分比 + dFinalHurtReduce = 0 #PlayerControl.GetFinalHurtReduce(defObj) # 最终固定伤害减少 + dBeHurtPer = 0#PlayerControl.GetBeHurtPer(defObj) # 加深受到伤害百分比 dFightPower = PlayerControl.GetFightPower(defObj) else: @@ -2226,17 +2091,14 @@ aBurnValue = atkwargs.get('burnValue', 0) aBurnPer = atkwargs.get('burnPer', 0) hurtFormulaKey = atkwargs.get('hurtFormulaKey', None) - #if hurtFormulaKey == "Burn": - # pass - #else: hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("DOTFormula", 1)) elif not curSkill: hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("HurtFormula", 3)) GameWorld.DebugLog(" 普攻伤害=%s" % (hurtValue)) - elif SkillCommon.isTurnNormalAtkSkill(curSkill): + elif SkillCommon.isTurnNormalSkill(curSkill): hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("HurtFormula", 1)) GameWorld.DebugLog(" 普攻技能伤害=%s" % (hurtValue)) - elif SkillCommon.isXPSkill(curSkill): + elif SkillCommon.isAngerSkill(curSkill): hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("HurtFormula", 2)) GameWorld.DebugLog(" 怒气技能伤害=%s" % (hurtValue)) else: @@ -2315,8 +2177,6 @@ atkObj.SetDict(ChConfig.Def_PlayerKey_LastHurtNPCObjID, defObj.GetID()) else: defObj.SetDict(ChConfig.Def_PlayerKey_LastAttackerObjID, atkObj.GetID()) - - TurnAttack.AddTurnObjHurtValue(atkObj, defObj, resultHurtType.HurtType, resultHurtType.RealHurtHP, resultHurtType.LostHP, curSkill) #if resultHurtType.RealHurtHP: # PassiveBuffEffMng.OnPassiveSkillTrigger(defObj, atkObj, None, ChConfig.TriggerType_BeHurt, tick) @@ -2411,9 +2271,9 @@ # GameWorld.DebugLog("不能攻击,不反弹") # return #杀怪次数判断 - if not CheckKillNPCByCnt(defObj, atkObj, False) and not NPCHurtManager.IsAssistPlayer(defObj.GetPlayerID(), atkObj): - #GameWorld.DebugLog("不能攻击,不反弹") - return + #if not CheckKillNPCByCnt(defObj, atkObj, False) and not NPCHurtManager.IsAssistPlayer(defObj.GetPlayerID(), atkObj): + # #GameWorld.DebugLog("不能攻击,不反弹") + # return #没有反弹退出 defObj_DamageBackRate = defObj.GetDamageBackRate() @@ -2482,10 +2342,10 @@ suckHP += atkObj.GetKillBackHP() # 攻击吸血 - atkBackHP = PlayerControl.GetAtkBackHPPer(atkObj) - if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer: - #PVP 攻击回血 - atkBackHP += PlayerControl.GetPVPAtkBackHP(atkObj) + atkBackHP = 0 #PlayerControl.GetAtkBackHPPer(atkObj) + #if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer: + # #PVP 攻击回血 + # atkBackHP += PlayerControl.GetPVPAtkBackHP(atkObj) # 百分比吸血 atkBackHPPer = PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer) atkBackHPPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer) @@ -2506,39 +2366,6 @@ GameObj.SetHP(atkObj, min(GameObj.GetMaxHP(atkObj), GameObj.GetHP(atkObj) + suckHP), False) ChangeHPView(atkObj, None, 0, suckHP, ChConfig.Def_HurtTYpe_Recovery) - return - -## 攻击者回蓝逻辑 -# @param atkObj 攻击者 -# @param defObj 防守者 -# @return None -def CalcSuckMagic(atkObj, defObj, hurtValue): - - if atkObj.GetGameObjType() != IPY_GameWorld.gotPlayer: - return - - tick = GameWorld.GetGameWorld().GetTick() - if tick - atkObj.GetTickByType(ChConfig.TYPE_Player_Tick_SuckMagic) \ - < ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_SuckMagic]: - return - - atkObj.SetTickByType(ChConfig.TYPE_Player_Tick_SuckMagic, tick) - - suckMP = 0 - - # 杀怪回蓝 - if defObj.GetGameObjType() == IPY_GameWorld.gotNPC and GameObj.GetHP(defObj) <= 0: - suckMP += atkObj.GetKillBackMP() - - # 攻击吸蓝 - atkBackMPPer = PlayerControl.GetAtkBackMPPer(atkObj) - if atkBackMPPer > 0: - suckMP += int(hurtValue * atkBackMPPer / float(ChConfig.Def_MaxRateValue)) - - if suckMP <= 0: - return - - atkObj.SetMP(min(atkObj.GetMaxMP(), atkObj.GetMP() + suckMP)) return #--------------------------------------------------------------------- @@ -2658,17 +2485,6 @@ ''' #关系有3层,无-友好-敌人 - #镜像PK下,无视PK区域、PK模式等,仅验证双方是否同一阵营 - curBattleID = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MirrorBattleID) - tagBattleID = tagPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MirrorBattleID) - if curBattleID and curBattleID == tagBattleID: - battle = MirrorAttack.GetMirrorBattleByID(curBattleID) - if battle.batState != ChConfig.Def_MirrorBatState_Fight: - return ChConfig.Type_Relation_None, ChConfig.Def_PASysMessage_None - if curPlayer.GetFaction() != tagPlayer.GetFaction(): - return ChConfig.Type_Relation_Enemy , ChConfig.Def_PASysMessage_None - return ChConfig.Type_Relation_Friend, ChConfig.Def_PASysMessage_None - #判断是否可释放(增/减)技能或普攻 if CheckPlayersRelationInFB_IsNone(curPlayer, tagPlayer): return ChConfig.Type_Relation_None, ChConfig.Def_PASysMessage_None @@ -2736,10 +2552,6 @@ elif curPlayerAttackMode == IPY_GameWorld.amAll: pass - # 协助关系不可攻击 - if NPCHurtManager.IsAssistRelation(curPlayer, tagPlayer): - return ChConfig.Type_Relation_Friend, ChConfig.Def_PASysMessage_NotAttackTeam - # 以下为所属区域的一些特殊处理 #普通区 if curPlayerAreaType == IPY_GameWorld.gatNormal: @@ -2817,8 +2629,8 @@ if GameObj.GetHP(curObjDetel) > 0: return - if TurnAttack.SetTurnObjKilled(curObjDetel, atkObj): - return + #if TurnAttack.SetTurnObjKilled(curObjDetel, atkObj): + # return #---玩家处理--- if curObjDetel.GetGameObjType() == IPY_GameWorld.gotPlayer: @@ -2852,13 +2664,13 @@ return attackLV = curPlayer.GetLV() # 攻击者等级 - attackPrestige = PlayerControl.GetPrestige(curPlayer) # 攻击者威望 + attackPrestige = 0 #PlayerControl.GetPrestige(curPlayer) # 攻击者威望 attackNotoriety = curPlayer.GetInfamyValue() # 攻击者恶名值 attackPkValue = curPlayer.GetPKValue() # 攻击者pk值 attackFightPower = PlayerControl.GetFightPower(curPlayer) # 攻击者战斗力 defendLV = defender.GetLV() # 防守者等级 - defendPrestige = PlayerControl.GetPrestige(defender) # 防守者威望 + defendPrestige = 0 #PlayerControl.GetPrestige(defender) # 防守者威望 defendNotoriety = defender.GetInfamyValue() # 防守者恶名值 defendPkValue = defender.GetPKValue() # 防守者pk值 defendFightPower = PlayerControl.GetFightPower(defender) # 防守者战斗力 @@ -2896,7 +2708,7 @@ srcID, srcType = 0, 0 if srcObj: srcID, srcType = srcObj.GetID(), srcObj.GetGameObjType() - turnFight = TurnAttack.GetTurnFightMgr().getNPCTurnFight(curObj.GetID()) + turnFight = TurnAttack.GetTurnFightMgr().getTurnFight(curObj.GetTFGUID()) if turnFight: clientPack = ChNetSendPack.tagObjPropertyRefreshView() clientPack.ObjID = curObj.GetID() -- Gitblit v1.8.0