From 70cbc5b6eb5744691be6d36a843d89166add9d7c Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 26 三月 2024 19:08:37 +0800 Subject: [PATCH] 10019 【砍树】回合战斗(增加神通部分技能支持;增加部分属性;优化伤血公式;) 1. 增加强化灵兽(属性ID 217)、弱化灵兽属性(属性ID 218); 2. 去除反击必命中设定;优化反击灵兽协同释放方式46支持配置是否重新进入技能CD; 3. 细化回合战斗伤血公式分类;技能表HurtType字段增加十位数表示原攻击类型(1-物理攻击;2-魔法攻击;新增3-额外攻击),个位数保留目前设定; 4. 增加xp道法攻击被动增伤,道法技能释放被动触发; 5. NPC支持反弹伤害; 6. 灵宠释放技能、灵宠攻击触发被动支持区分(每次、每只独立首次,所有灵宠共享首次) 7. 治疗支持强化治疗、弱化治疗属性;区分主角主动治疗、灵宠治疗;强化灵兽及弱化灵兽属性对灵宠治疗有效; 8. 技能释放方式增加 恢复妖气-47;扣除妖气-48; --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 46 insertions(+), 14 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py index 1a436c0..c42569e 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py @@ -1253,11 +1253,7 @@ # 禁止治疗 return - # 治疗加成 - curePer = GameObj.GetCurePer(curObj) + ChConfig.Def_MaxRateValue - curePerReduce = TurnAttack.GetEnemyCureDefPer(curObj) # 弱化治疗,取对方的 - curePerFinal = max(0, curePer - curePerReduce) - addValueFianl = int(addValue*curePerFinal*1.0/ChConfig.Def_MaxRateValue) + addValueFianl = addValue maxHP = GameObj.GetMaxHP(curObj) @@ -1292,8 +1288,8 @@ if isNotify: AttackCommon.ChangeHPView(curObj, curObj, skillTypeID, addValueFianl, ChConfig.Def_HurtTYpe_Recovery) - GameWorld.DebugLog(" 治疗: curID=%s,skillTypeID=%s,curePerFinal=%s(%s-%s),addValue=%s,addValueFianl=%s,HP=%s" - % (curObj.GetID(), skillTypeID, curePerFinal, curePer, curePerReduce, addValue, addValueFianl, remainHP)) + GameWorld.DebugLog(" 治疗: curID=%s,skillTypeID=%s,addValue=%s,addValueFianl=%s,HP=%s" + % (curObj.GetID(), skillTypeID, addValue, addValueFianl, remainHP)) return addValueFianl ## 直接扣血不走公式 @@ -1974,11 +1970,21 @@ return +def GetBattleType(curSkill): + ## 攻击类型 + if not curSkill: + return ChConfig.ghtPhy + battleType = curSkill.GetHurtType() / 10 + if not battleType: + # 没有配置,默认物理攻击 + return ChConfig.ghtPhy + return battleType + def GetSkillBattleType(curSkill): if not curSkill: return ChConfig.Def_BattleRelationType_Comm #0通哟 1 PVP类型 2PVE类型 - return curSkill.GetHurtType() + return curSkill.GetHurtType() % 10 ## 检查技能是否为被动技能, 用于控制不可释放技能 def isPassiveSkill(curSkill): @@ -2245,21 +2251,47 @@ #获得技能的计算参数值 if cureType == ChConfig.Def_Cure_PHY: # 根据敏捷,力量差值及效果系数计算恢复比例 - skillPer = max(0, userObj.GetPHY() - userObj.GetSTR()) / float(curSkill.GetEffect(0).GetEffectValue(0)) + skillPer = max(0, userObj.GetPHY() - userObj.GetSTR()) / float(curSkill.GetEffect(0).GetEffectValue(0)) * ChConfig.Def_MaxRateValue GameWorld.DebugLog("英勇复苏: 敏=%s,力=%s,skillPer=%s" % (userObj.GetPHY(), userObj.GetSTR(), skillPer)) else: - skillPer = curSkill.GetEffect(0).GetEffectValue(0) / float(ChConfig.Def_MaxRateValue) + skillPer = curSkill.GetEffect(0).GetEffectValue(0) #技能附加 skillValue = curSkill.GetEffect(0).GetEffectValue(1) - skillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(userObj, None, curSkill, ChConfig.TriggerType_AddHP)/float(ChConfig.Def_MaxRateValue) + skillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(userObj, None, curSkill, ChConfig.TriggerType_AddHP) + + # 回合制 + curePer = 0 # 治疗加成、强化灵兽 + cureDefPer = 0 # 敌方的弱化治疗、弱化灵兽 + if userObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightTimeline): + isPetNPC = PetControl.IsPetNPC(userObj) + enemyObj = None + + if isPetNPC: + petOwner = PetControl.GetPetNPCOwner(userObj) + enemyObj = TurnAttack.GetEnemyObj(petOwner) + + curePer += GameObj.GetCurePer(petOwner) + curePer += GameObj.GetPetStrengthenPer(petOwner) # 强化灵兽 + else: + enemyObj = TurnAttack.GetEnemyObj(userObj) + + curePer += GameObj.GetCurePer(userObj) + + if enemyObj: + cureDefPer += GameObj.GetCureDefPer(enemyObj) + if isPetNPC: + cureDefPer += GameObj.GetPetWeakenPer(enemyObj) # 弱化灵兽 + + skillPer += (curePer - cureDefPer) # 可能负值 #公式计算治疗值 - cureHP = int((cureBaseValue * skillPer + skillValue + addExValue) * curePercent) + cureHP = int((cureBaseValue * skillPer / float(ChConfig.Def_MaxRateValue) + skillValue + addExValue) * curePercent) if not largeNum: cureHP = min(cureHP, ChConfig.Def_UpperLimit_DWord) + cureHP = max(1, cureHP) # 保底1点 - #GameWorld.DebugLog("获取治疗值(%s):cureType=%s,cureBaseValue=%s,skillPer=%s,skillValue=%s" - # % (cureHP, cureType, cureBaseValue, skillPer, skillValue)) + #GameWorld.DebugLog("获取治疗值(%s):skillID=%s,cureType=%s,cureBaseValue=%s,skillPer=%s,skillValue=%s,curePer=%s,cureDefPer=%s" + # % (cureHP, curSkill.GetSkillID(), cureType, cureBaseValue, skillPer, skillValue, curePer, cureDefPer)) return cureHP -- Gitblit v1.8.0