|  |  |  | 
|---|
|  |  |  | import ChItem | 
|---|
|  |  |  | import PlayerActivity | 
|---|
|  |  |  | import ShareDefine | 
|---|
|  |  |  | import PlayerGodWeapon | 
|---|
|  |  |  | import PlayerSuccess | 
|---|
|  |  |  | import PlayerMagicWeapon | 
|---|
|  |  |  | import PlayerGreatMaster | 
|---|
|  |  |  | import PlayerHorse | 
|---|
|  |  |  | import GameObj | 
|---|
|  |  |  | import random | 
|---|
|  |  |  | 
|---|
|  |  |  | import PassiveBuffEffMng | 
|---|
|  |  |  | import SkillShell | 
|---|
|  |  |  | import FBCommon | 
|---|
|  |  |  | import IpyGameDataPY | 
|---|
|  |  |  | #--------------------------------------------------------------------- | 
|---|
|  |  |  | GameWorld.ImportAll("Script\\Skill\\" , "GameSkills") | 
|---|
|  |  |  | GameWorld.ImportAll("Script\\Skill\\" , "GameBuffs") | 
|---|
|  |  |  | 
|---|
|  |  |  | if attacker.GetGameObjType() != IPY_GameWorld.gotPlayer: | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if not curSkill: | 
|---|
|  |  |  | # 玩家普通也是技能,正常是不会走到这边 | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | useSkillData = attacker.GetUseSkill() | 
|---|
|  |  |  | if useSkillData and curSkill.GetSkillTypeID() != useSkillData.GetSkillTypeID(): | 
|---|
|  |  |  | # 默认群攻附加触发buff的对象与攻击对象一致 | 
|---|
|  |  |  | 
|---|
|  |  |  | #还在冷却时间内无法释放 | 
|---|
|  |  |  | if SkillCommon.RefreshSkillRemainTime(playerSkill, tick) != 0: | 
|---|
|  |  |  | PlayerControl.NotifyCode(curPlayer, "UseSkillCDLimit") | 
|---|
|  |  |  | AttackFailNotify(curPlayer, curSkill, ChConfig.SkillFail_CD) | 
|---|
|  |  |  | #AttackFailNotify(curPlayer, curSkill, ChConfig.SkillFail_CD) | 
|---|
|  |  |  | playerSkill.Sync_Skill() | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #5:检查玩家的魔法值是否够用这个技能 | 
|---|
|  |  |  | 
|---|
|  |  |  | # @return 返回值真, 检查通过 | 
|---|
|  |  |  | # @remarks 自定义函数, NPC使用有对象技能 | 
|---|
|  |  |  | def NPCUseSkillTag(curNPC, curTag, curSkill, tick): | 
|---|
|  |  |  | skillTag = GetSkillAffectTag(curSkill) | 
|---|
|  |  |  | if skillTag == ChConfig.Def_UseSkillTag_AppointNPC: | 
|---|
|  |  |  | # 指定释放的NPCID 和 Def_UseSkillTag_AppointNPC 搭配使用 | 
|---|
|  |  |  | curTag = GetAppointNPCBySkillEffect(curSkill) | 
|---|
|  |  |  | if not curTag: | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if not NPCCanUseSkillTag(curNPC, curTag, curSkill, tick): | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | curNPC.SetDict(ChConfig.Def_NPC_Dict_AtkMovePosY, 0) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return result | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 指定释放的NPCID 和 Def_UseSkillTag_AppointNPC 搭配使用 | 
|---|
|  |  |  | def GetAppointNPCBySkillEffect(curSkill): | 
|---|
|  |  |  | npcID = 0 | 
|---|
|  |  |  | effectID = ChConfig.Def_Skill_Effect_AppointNPC | 
|---|
|  |  |  | for i in xrange(0, curSkill.GetEffectCount()): | 
|---|
|  |  |  | curEffect = curSkill.GetEffect(i) | 
|---|
|  |  |  | curEffectID = curEffect.GetEffectID() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if not curEffectID: | 
|---|
|  |  |  | #策划有可能中途删除,不用return | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #不是需要的效果 | 
|---|
|  |  |  | if curEffectID != effectID: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | npcID = curEffect.GetEffectValue(0) | 
|---|
|  |  |  | break | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if not npcID: | 
|---|
|  |  |  | return None | 
|---|
|  |  |  | return GameWorld.FindNPCByNPCID(npcID) | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 计算NPC技能位移坐标,预警和非预警都可以用 | 
|---|
|  |  |  | 
|---|
|  |  |  | # @return 返回值真, 检查通过 | 
|---|
|  |  |  | def NPCCanUseSkillTag(curNPC, curTag, curSkill, tick): | 
|---|
|  |  |  | skillTag = GetSkillAffectTag(curSkill) | 
|---|
|  |  |  | if skillTag == ChConfig.Def_UseSkillTag_AppointNPC: | 
|---|
|  |  |  | return True | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #---对象判定--- | 
|---|
|  |  |  | if IsToPetOwnerSkill(curNPC, skillTag): | 
|---|
|  |  |  | return True | 
|---|
|  |  |  | 
|---|
|  |  |  | Def_Attack_DelayTick = 5000 | 
|---|
|  |  |  | # tick 误差过大则过滤 | 
|---|
|  |  |  | if abs(clientTick - tick) > Def_Attack_DelayTick: | 
|---|
|  |  |  | curPlayer.Sync_ClientTick() | 
|---|
|  |  |  | GameWorld.DebugLog("tick 误差过大则过滤 > 5000") | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if not CheckClientAttackTick(curPlayer, clientTick, tick): | 
|---|
|  |  |  | AttackFailNotify(curPlayer, curSkill, ChConfig.SkillFail_AtkInterval) | 
|---|
|  |  |  | AttackFailNotify(curPlayer, curSkill, ChConfig.SkillFail_AtkInterval) | 
|---|
|  |  |  | curPlayer.Sync_ClientTick() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #已经在攻击中 | 
|---|
|  |  |  | 
|---|
|  |  |  | def AttackFailNotify(curPlayer, curSkill, reason=0): | 
|---|
|  |  |  | sendPack = ChPyNetSendPack.tagMCAttackFail() | 
|---|
|  |  |  | sendPack.SkillID = curSkill.GetSkillID() | 
|---|
|  |  |  | sendPack.Reason = reason | 
|---|
|  |  |  | NetPackCommon.SendFakePack(curPlayer, sendPack) | 
|---|
|  |  |  | #--------------------------玩家使用技能 | 
|---|
|  |  |  | #=============================================================================== | 
|---|
|  |  |  | 
|---|
|  |  |  | if relation[0] == ChConfig.Type_Relation_Enemy : | 
|---|
|  |  |  | return True | 
|---|
|  |  |  |  | 
|---|
|  |  |  | AttackCommon.PlayerAttackFailSysMessanage(curPlayer, relation[1]) | 
|---|
|  |  |  | if curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_FbSkill: | 
|---|
|  |  |  | AttackCommon.PlayerAttackFailSysMessanage(curPlayer, relation[1]) | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ##玩家释放有目标技能, 检查目标对象是否符合要求, 可攻击怪物 | 
|---|
|  |  |  | 
|---|
|  |  |  | if relation[0] == ChConfig.Type_Relation_Friend : | 
|---|
|  |  |  | return True | 
|---|
|  |  |  |  | 
|---|
|  |  |  | AttackCommon.PlayerAttackFailSysMessanage(curPlayer, relation[1]) | 
|---|
|  |  |  | if curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_FbSkill: | 
|---|
|  |  |  | AttackCommon.PlayerAttackFailSysMessanage(curPlayer, relation[1]) | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #--------------------------------------------------------------------- | 
|---|
|  |  |  | 
|---|
|  |  |  | if curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_HorseSkill and SkillCommon.isPassiveAttr(curSkill): | 
|---|
|  |  |  | PlayerHorse.RefreshHorseAttr(curPlayer) | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer, curSkill.GetSkillID()) | 
|---|
|  |  |  | if SkillCommon.isPassiveAttr(curSkill): | 
|---|
|  |  |  | curControl = PlayerControl.PlayerControl(curPlayer) | 
|---|
|  |  |  | curControl.RefreshPlayerAttrState() | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer, curSkill.GetSkillID()) | 
|---|
|  |  |  | #curControl = PlayerControl.PlayerControl(curPlayer) | 
|---|
|  |  |  | #curControl.CalcPassiveBuffAttr() | 
|---|
|  |  |  | #curControl.RefreshAllState() | 
|---|
|  |  |  | 
|---|
|  |  |  | return True | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #--------------------------------------------------------------------- | 
|---|
|  |  |  | ##技能升级消耗逻辑 | 
|---|
|  |  |  | # @param curPlayer 玩家实例 | 
|---|
|  |  |  | # @param curSkill 技能实例 | 
|---|
|  |  |  | # @param curSkillID 技能ID | 
|---|
|  |  |  | # @return BOOL 是否扣除消耗成功 | 
|---|
|  |  |  | def DoLogic_PlayerSkillLVUpCost(curPlayer, curSkill, curSkillID): | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #GameWorld.Log("尝试升级技能名 = %s, 当前等级 = %s"%(curSkill.GetSkillName(),curSkill.GetSkillLV()) , curPlayer.GetPlayerID()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | curSkillLV = curSkill.GetSkillLV() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if curSkillLV == curSkill.GetSkillMaxLV(): | 
|---|
|  |  |  | #已经是最高等级 | 
|---|
|  |  |  | PlayerControl.NotifyCode(curPlayer, "UseMagicLost16") | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #--获得下一级技能--- | 
|---|
|  |  |  | curSkillTypeID = curSkill.GetSkillTypeID() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return DoLogic_PlayerSkillLvUpCost(curPlayer, curSkillTypeID, curSkillID, curSkillLV + 1, curSkill) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ##学习技能消耗逻辑 | 
|---|
|  |  |  | # @param curPlayer 玩家实例 | 
|---|
|  |  |  | # @param curSkillTypeID 技能类型ID | 
|---|
|  |  |  | 
|---|
|  |  |  | if upSkill.GetFuncType() == ChConfig.Def_SkillFuncType_HorseSkill: | 
|---|
|  |  |  | if not PlayerHorse.CheckLearnHorseSkill(curPlayer, curSkillTypeID): | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #天赋技学习点数判断 | 
|---|
|  |  |  | if upSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill: | 
|---|
|  |  |  | if not PlayerGreatMaster.GetGreatMasterFreeSkillPoint(curPlayer): | 
|---|
|  |  |  | return False | 
|---|
|  |  |  | #经验检测 | 
|---|
|  |  |  | skillLvUpNeedExp = upSkill.GetLVUpCostExp() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | #GeRen_jin_474794  <n color="255,255,0" BKCOLOR="0,0,0">您消耗了经验值:</n><n color="0,190,255" BKCOLOR="0,0,0">{%S1%}</n> | 
|---|
|  |  |  | PlayerControl.NotifyCode(curPlayer, "GeRen_jin_474794", [skillLvUpNeedExp]) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if upSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill: | 
|---|
|  |  |  | PlayerGreatMaster.AddGreatMasterSkillPointByLV(curPlayer, -1) | 
|---|
|  |  |  | return True | 
|---|
|  |  |  | #--------------------------------------------------------------------- | 
|---|
|  |  |  | ##检测学习技能需求条件 | 
|---|
|  |  |  | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | skillManager = curPlayer.GetSkillManager() | 
|---|
|  |  |  | #姿态需求 | 
|---|
|  |  |  | #hasStateSkillReq = False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #前置技能需求 | 
|---|
|  |  |  | hasLearnSkillReq = False | 
|---|
|  |  |  | #分支点总和 | 
|---|
|  |  |  | numLearnSkillPoint = 0 | 
|---|
|  |  |  | #当前技能姿态需求,姿态等级需求 | 
|---|
|  |  |  | #curSkillStateReq = curSkill.GetStateSkillReq() | 
|---|
|  |  |  | #lvCurSkillStateReq = curSkill.GetStateSkillLV() | 
|---|
|  |  |  | #当前技能前置技能需求,前置技能等级需求 | 
|---|
|  |  |  | curSkillLearnReq = curSkill.GetLearnSkillReq() | 
|---|
|  |  |  | lvCurSkillLearnReq = curSkill.GetLearnSkillLV() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #需要对应天赋系别点数 | 
|---|
|  |  |  | learnSkillPointReq = curSkill.GetLearnSkillPointReq() #系别*10000+需要点数 | 
|---|
|  |  |  | needSeries, needSeriesPoint= learnSkillPointReq/10000, learnSkillPointReq%10000 | 
|---|
|  |  |  | curSkillTypeID = curSkill.GetSkillTypeID() | 
|---|
|  |  |  | ipyData = IpyGameDataPY.GetIpyGameDataNotLog('TalentSkill', curSkillTypeID) | 
|---|
|  |  |  | curTalentType = ipyData.GetTalentType() if ipyData else 0 | 
|---|
|  |  |  | #获取玩家目前所有技能 | 
|---|
|  |  |  | for i in range(0, skillManager.GetSkillCount()): | 
|---|
|  |  |  | for i in xrange(skillManager.GetSkillCount()): | 
|---|
|  |  |  | skill = skillManager.GetSkillByIndex(i) | 
|---|
|  |  |  | if skill == None: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | skillTypeID = skill.GetSkillTypeID() | 
|---|
|  |  |  | lvSkill = skill.GetSkillLV() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #满足姿态ID需求 | 
|---|
|  |  |  | #        if skillTypeID == curSkillStateReq and lvSkill >= lvCurSkillStateReq and not hasStateSkillReq: | 
|---|
|  |  |  | #            hasStateSkillReq = True | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #满足前置技能需求 | 
|---|
|  |  |  | if skillTypeID == curSkillLearnReq and lvSkill >= lvCurSkillLearnReq and not hasLearnSkillReq: | 
|---|
|  |  |  | hasLearnSkillReq = True | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #投入分支点总和 | 
|---|
|  |  |  | numLearnSkillPoint += skill.GetSkillLV() | 
|---|
|  |  |  | ipyData = IpyGameDataPY.GetIpyGameDataNotLog('TalentSkill', skillTypeID) | 
|---|
|  |  |  | if ipyData and ipyData.GetTalentType() is curTalentType and ipyData.GetSeries() is needSeries: | 
|---|
|  |  |  | #投入分支点总和 | 
|---|
|  |  |  | numLearnSkillPoint += skill.GetSkillLV() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #有前置技能ID需要 | 
|---|
|  |  |  | if curSkillLearnReq != 0 and not hasLearnSkillReq: | 
|---|
|  |  |  | PlayerControl.NotifyCode(curPlayer, "GeRen_wjr_717982", [curSkillLearnReq, lvCurSkillLearnReq]) | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #    #有姿态ID需求 | 
|---|
|  |  |  | #    if curSkillStateReq != 0 and not hasStateSkillReq: | 
|---|
|  |  |  | #        PlayerControl.NotifyCode(curPlayer, "UseMagicLost15", [ curSkillStateReq, lvCurSkillStateReq ]) | 
|---|
|  |  |  | #        return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #    #有分支点总和要求 | 
|---|
|  |  |  | #    if curSkill.GetLearnSkillPointReq() != 0 and numLearnSkillPoint < curSkill.GetLearnSkillPointReq(): | 
|---|
|  |  |  | #        PlayerControl.NotifyCode( curPlayer, "UseMagicLost13",[ curSkill.GetLearnSkillPointReq() ] ) | 
|---|
|  |  |  | #        return False | 
|---|
|  |  |  | #有分支点总和要求 | 
|---|
|  |  |  | if learnSkillPointReq != 0 and numLearnSkillPoint < needSeriesPoint: | 
|---|
|  |  |  | PlayerControl.NotifyCode( curPlayer, "UseMagicLost13",[ needSeriesPoint ] ) | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #玩家属性点要求 | 
|---|
|  |  |  | stateSkillLV = curSkill.GetStateSkillLV() #需要基础属性ID*10000+需要属性点 | 
|---|
|  |  |  | needBaseAttrID, needBaseAttrValue = stateSkillLV /10000, stateSkillLV%10000 | 
|---|
|  |  |  | if needBaseAttrID and needBaseAttrValue: | 
|---|
|  |  |  | baseAttrDict = { | 
|---|
|  |  |  | ShareDefine.Def_Effect_STR:curPlayer.GetSTR(), | 
|---|
|  |  |  | ShareDefine.Def_Effect_PHY:curPlayer.GetPHY(), | 
|---|
|  |  |  | ShareDefine.Def_Effect_CON:curPlayer.GetCON(), | 
|---|
|  |  |  | ShareDefine.Def_Effect_PNE:curPlayer.GetPNE(), | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if needBaseAttrID not in baseAttrDict: | 
|---|
|  |  |  | GameWorld.ErrLog('    天赋技能升级属性点条件配置错误,curSkillTypeID=%s,needBaseAttrID=%s'%(curSkillTypeID, needBaseAttrID)) | 
|---|
|  |  |  | return False | 
|---|
|  |  |  | curBaseAttrValue = baseAttrDict.get(needBaseAttrID, 0) | 
|---|
|  |  |  | if curBaseAttrValue < needBaseAttrValue: | 
|---|
|  |  |  | GameWorld.DebugLog('升级技能%s需要属性点 %s达到%s, 当前点数=%s!'%(curSkillTypeID, needBaseAttrID, needBaseAttrValue, curBaseAttrValue)) | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return True | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | buffState.DeleteEffectByIndex(i) | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 通过技能ID列表删除buff对应的效果ID | 
|---|
|  |  |  | # 通过技能ID列表删除buff对应的效果ID, 死亡调用 | 
|---|
|  |  |  | def ClearBuffEffectBySkillIDList(curObj, buffState, skillIDList): | 
|---|
|  |  |  |  | 
|---|
|  |  |  | effectIndexList = [] | 
|---|
|  |  |  | 
|---|
|  |  |  | if curEffectID == 0: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # [技能ID, 来源对象ID,对象类型] | 
|---|
|  |  |  | if [buffState.GetEffectFromSkillID(i), | 
|---|
|  |  |  | buffState.GetEffectOwnerID(i), | 
|---|
|  |  |  | buffState.GetEffectOwnerType(i)] not in skillIDList: | 
|---|
|  |  |  | #======================================================================= | 
|---|
|  |  |  | # # [技能ID, 来源对象ID,对象类型] | 
|---|
|  |  |  | # if [buffState.GetEffectFromSkillID(i), | 
|---|
|  |  |  | #    buffState.GetEffectOwnerID(i), | 
|---|
|  |  |  | #    buffState.GetEffectOwnerType(i)] not in skillIDList: | 
|---|
|  |  |  | #    continue | 
|---|
|  |  |  | #======================================================================= | 
|---|
|  |  |  | # 改成只判断技能ID | 
|---|
|  |  |  | if buffState.GetEffectFromSkillID(i) not in skillIDList: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | effectIndexList.append(i) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 倒序删除 | 
|---|
|  |  |  | 
|---|
|  |  |  | OperControlManager.SetObjActState(curObj, buffSkill) | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 非属性技能算属性 特殊处理 | 
|---|
|  |  |  | # 法宝SP技能 如1-4级为增加属性,第5级为伤害效果,第6-10级就要包含属性和伤害效果 | 
|---|
|  |  |  | def CalcFabaoSPSkillAttr(curPlayer, curPlayerSkill, allAttrList): | 
|---|
|  |  |  | if curPlayerSkill.GetFuncType() != ChConfig.Def_SkillFuncType_FbSPSkill: | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | value = GetMaxHPAttrValue(curPlayerSkill) | 
|---|
|  |  |  | if value == 0: | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | PlayerControl.CalcAttrDict_Type(ShareDefine.Def_Effect_MaxHP, value, allAttrList) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 计算属性类技能的属性,同buff层不算战力 | 
|---|
|  |  |  | def CalcPassiveAttr_Effect(curPlayer, allAttrList): | 
|---|
|  |  |  | skillManager = curPlayer.GetSkillManager() | 
|---|
|  |  |  | 
|---|
|  |  |  | if curPlayerSkill == None: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | CalcFabaoSPSkillAttr(curPlayer, curPlayerSkill, allAttrList) | 
|---|
|  |  |  | if not SkillCommon.isPassiveAttr(curPlayerSkill): | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | def GetUpLVCostItemNum(curSkill): | 
|---|
|  |  |  | return curSkill.GetExAttr5() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 技能特殊增加属性配置,目前只支持生命,潜力技能专用 | 
|---|
|  |  |  | def GetMaxHPAttrValue(curSkill): | 
|---|
|  |  |  | return curSkill.GetMP() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ##获得当前技能升级消耗的真气值 | 
|---|
|  |  |  | # @param curSkill 当前技能技能 | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if skillAim == ChConfig.Def_UseSkillAim_None: | 
|---|
|  |  |  | if curSkill.GetSkillType() in ChConfig.Def_CanAttackSkill_List: | 
|---|
|  |  |  | if target and target.GetGameObjType() == IPY_GameWorld.gotNPC and target.GetGameNPCObjType() == IPY_GameWorld.gnotSummon: | 
|---|
|  |  |  | owner = NPCCommon.GetNpcObjOwnerDetail(target) | 
|---|
|  |  |  | if owner and owner.GetID() == attacker.GetID(): | 
|---|
|  |  |  | # 有害技能特殊处理,不能对自己的召唤物释放 | 
|---|
|  |  |  | target = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | result = DoLogic_UseSkill(attacker, target, curSkill, tick, attacker.GetPosX(), attacker.GetPosY(), isEnhanceSkill=isEnhanceSkill) | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | result = DoLogic_UseSkill(attacker, attacker, curSkill, tick, isEnhanceSkill=isEnhanceSkill) | 
|---|