| | |
| | | AttackCommon.OnPVPDamage(attackerOwner, lostValue, curObj, "SkillLostHP")
|
| | | elif curObjType == IPY_GameWorld.gotNPC:
|
| | | AttackCommon.NPCAddObjInHurtList(attackerOwner, curObj, curObjHP_BeforeAttack, lostValue)
|
| | | |
| | | TurnAttack.AddTurnObjHurtValue(buffOwner, curObj, hurtType, lostValue, lostHP, curSkill)
|
| | |
|
| | | #统一调用攻击结束动作
|
| | | if isDoAttackResult:
|
| | | BaseAttack.DoLogic_AttackResult(buffOwner, curObj, None, tick)
|
| | |
|
| | | TurnAttack.OnTurnfightAttackResult(buffOwner, curObj, curSkill)
|
| | | #TurnAttack.OnTurnfightAttackResult(buffOwner, curObj, curSkill)
|
| | | return lostHP
|
| | |
|
| | | ## 检查增加淬毒buff
|
| | |
| | | #0通哟 1 PVP类型 2PVE类型
|
| | | return curSkill.GetHurtType() % 10
|
| | |
|
| | | def isDamageShieldSkill(skillData):
|
| | | ## 是否承伤盾技能
|
| | | return skillData.GetAtkType() == ChConfig.BuffAtkType_DamageShield
|
| | |
|
| | | def isAngerSkill(curSkill):
|
| | | ## 是否怒气技能
|
| | | return curSkill and curSkill.GetXP() > 0
|
| | | return curSkill and curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_AngerSkill
|
| | |
|
| | | def isTurnNormalSkill(curSkill):
|
| | | ## 是否回合普攻技能,区别与无技能的普通A一下,该普攻同样可以有各种技能效果,只是他属于普攻
|
| | | return curSkill and curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_TurnNormaSkill
|
| | |
|
| | | def isAtkbackSkill(curSkill):
|
| | | ## 是否反击技能
|
| | | return curSkill and curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_AtkbackSkill
|
| | |
|
| | | ## 检查技能是否为被动技能, 用于控制不可释放技能
|
| | | def isPassiveSkill(curSkill):
|
| | |
| | | cureBaseValue = GetCureBaseValue(userObj, curSkill)
|
| | | elif cureType == ChConfig.Def_Cure_MaxHP:
|
| | | cureBaseValue = GameObj.GetMaxHP(userObj)
|
| | | elif cureType == ChConfig.Def_Cure_PNE:
|
| | | cureBaseValue = userObj.GetPNE()
|
| | | addPer = curSkill.GetEffect(0).GetEffectValue(2)/float(ChConfig.Def_MaxRateValue)
|
| | | addExValue = GetCureBaseValue(userObj, curSkill)*addPer
|
| | | elif cureType == ChConfig.Def_Cure_PHY:
|
| | | cureBaseValue = GameObj.GetMaxHP(userObj)
|
| | | #elif cureType == ChConfig.Def_Cure_PNE:
|
| | | # cureBaseValue = userObj.GetPNE()
|
| | | # addPer = curSkill.GetEffect(0).GetEffectValue(2)/float(ChConfig.Def_MaxRateValue)
|
| | | # addExValue = GetCureBaseValue(userObj, curSkill)*addPer
|
| | | #elif cureType == ChConfig.Def_Cure_PHY:
|
| | | # cureBaseValue = GameObj.GetMaxHP(userObj)
|
| | | elif cureType == ChConfig.Def_Cure_HurtValue:
|
| | | cureBaseValue = GameObj.GetLastHurtValue(userObj)
|
| | | elif cureType == ChConfig.Def_Cure_TagMaxHP:
|
| | |
| | | def GetSkillAddPerByID(curPlayer, skillTypeID):
|
| | | ## 获取技能伤害百分比提升值
|
| | | # @param skillTypeID: 技能TypeID
|
| | | SkillAddPerAttrIDDict = IpyGameDataPY.GetConfigEx("SkillAddPerAttrIDDict")
|
| | | if not SkillAddPerAttrIDDict:
|
| | | SkillAddPerAttrIDDict = {}
|
| | | skillPlusAttrIDDict = IpyGameDataPY.GetFuncEvalCfg("SkillPlusAttrID", 2, {})
|
| | | for attrIDStr, skillTypeIDList in skillPlusAttrIDDict.items():
|
| | | attrID = int(attrIDStr)
|
| | | if attrID not in ShareDefine.SkillAddPerAttrIDList:
|
| | | continue
|
| | | for cfgSkillTypeID in skillTypeIDList:
|
| | | SkillAddPerAttrIDDict[cfgSkillTypeID] = attrID
|
| | | IpyGameDataPY.SetConfigEx("SkillAddPerAttrIDDict", SkillAddPerAttrIDDict)
|
| | | |
| | | if skillTypeID not in SkillAddPerAttrIDDict:
|
| | | return 0
|
| | | curAttrID = SkillAddPerAttrIDDict[skillTypeID]
|
| | | attrInfo = ChConfig.ItemEffect_AttrDict.get(curAttrID, [])
|
| | | if attrInfo == []:
|
| | | return 0
|
| | | effIndex = attrInfo[0][0]
|
| | | return EffGetSet.GetValueByEffIndex(curPlayer, effIndex)
|
| | | return 0
|
| | | # SkillAddPerAttrIDDict = IpyGameDataPY.GetConfigEx("SkillAddPerAttrIDDict")
|
| | | # if not SkillAddPerAttrIDDict:
|
| | | # SkillAddPerAttrIDDict = {}
|
| | | # skillPlusAttrIDDict = IpyGameDataPY.GetFuncEvalCfg("SkillPlusAttrID", 2, {})
|
| | | # for attrIDStr, skillTypeIDList in skillPlusAttrIDDict.items():
|
| | | # attrID = int(attrIDStr)
|
| | | # if attrID not in ShareDefine.SkillAddPerAttrIDList:
|
| | | # continue
|
| | | # for cfgSkillTypeID in skillTypeIDList:
|
| | | # SkillAddPerAttrIDDict[cfgSkillTypeID] = attrID
|
| | | # IpyGameDataPY.SetConfigEx("SkillAddPerAttrIDDict", SkillAddPerAttrIDDict)
|
| | | # |
| | | # if skillTypeID not in SkillAddPerAttrIDDict:
|
| | | # return 0
|
| | | # curAttrID = SkillAddPerAttrIDDict[skillTypeID]
|
| | | # attrInfo = ChConfig.ItemEffect_AttrDict.get(curAttrID, [])
|
| | | # if attrInfo == []:
|
| | | # return 0
|
| | | # effIndex = attrInfo[0][0]
|
| | | # return EffGetSet.GetValueByEffIndex(curPlayer, effIndex)
|
| | |
|
| | | def GetSkillReducePerByID(curPlayer, skillTypeID):
|
| | | ## 获取技能伤害百分比减伤值
|
| | | # @param skillTypeID: 技能TypeID
|
| | | SkillReducePerAttrIDDict = IpyGameDataPY.GetConfigEx("SkillReducePerAttrIDDict")
|
| | | if not SkillReducePerAttrIDDict:
|
| | | SkillReducePerAttrIDDict = {}
|
| | | skillPlusAttrIDDict = IpyGameDataPY.GetFuncEvalCfg("SkillPlusAttrID", 2, {})
|
| | | for attrIDStr, skillTypeIDList in skillPlusAttrIDDict.items():
|
| | | attrID = int(attrIDStr)
|
| | | if attrID not in ShareDefine.SkillReducePerAttrIDList:
|
| | | continue
|
| | | for cfgSkillTypeID in skillTypeIDList:
|
| | | SkillReducePerAttrIDDict[cfgSkillTypeID] = attrID
|
| | | IpyGameDataPY.SetConfigEx("SkillReducePerAttrIDDict", SkillReducePerAttrIDDict)
|
| | | |
| | | if skillTypeID not in SkillReducePerAttrIDDict:
|
| | | return 0
|
| | | curAttrID = SkillReducePerAttrIDDict[skillTypeID]
|
| | | attrInfo = ChConfig.ItemEffect_AttrDict.get(curAttrID, [])
|
| | | if attrInfo == []:
|
| | | return 0
|
| | | effIndex = attrInfo[0][0]
|
| | | return EffGetSet.GetValueByEffIndex(curPlayer, effIndex)
|
| | | return 0
|
| | | # SkillReducePerAttrIDDict = IpyGameDataPY.GetConfigEx("SkillReducePerAttrIDDict")
|
| | | # if not SkillReducePerAttrIDDict:
|
| | | # SkillReducePerAttrIDDict = {}
|
| | | # skillPlusAttrIDDict = IpyGameDataPY.GetFuncEvalCfg("SkillPlusAttrID", 2, {})
|
| | | # for attrIDStr, skillTypeIDList in skillPlusAttrIDDict.items():
|
| | | # attrID = int(attrIDStr)
|
| | | # if attrID not in ShareDefine.SkillReducePerAttrIDList:
|
| | | # continue
|
| | | # for cfgSkillTypeID in skillTypeIDList:
|
| | | # SkillReducePerAttrIDDict[cfgSkillTypeID] = attrID
|
| | | # IpyGameDataPY.SetConfigEx("SkillReducePerAttrIDDict", SkillReducePerAttrIDDict)
|
| | | # |
| | | # if skillTypeID not in SkillReducePerAttrIDDict:
|
| | | # return 0
|
| | | # curAttrID = SkillReducePerAttrIDDict[skillTypeID]
|
| | | # attrInfo = ChConfig.ItemEffect_AttrDict.get(curAttrID, [])
|
| | | # if attrInfo == []:
|
| | | # return 0
|
| | | # effIndex = attrInfo[0][0]
|
| | | # return EffGetSet.GetValueByEffIndex(curPlayer, effIndex)
|
| | |
|