hxp
2018-11-24 df7b5d2bb012129b7cf50ffc687a333c8401733c
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -347,6 +347,13 @@
# @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
    
@@ -363,6 +370,29 @@
        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技能位移坐标,预警和非预警都可以用
@@ -511,6 +541,9 @@
# @return 返回值真, 检查通过
def NPCCanUseSkillTag(curNPC, curTag, curSkill, tick):
    skillTag = GetSkillAffectTag(curSkill)
    if skillTag == ChConfig.Def_UseSkillTag_AppointNPC:
        return True
    #---对象判定---
    if IsToPetOwnerSkill(curNPC, skillTag):
        return True
@@ -2654,6 +2687,20 @@
        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()
@@ -2662,6 +2709,7 @@
        if curPlayerSkill == None:
            continue
        
        CalcFabaoSPSkillAttr(curPlayer, curPlayerSkill, allAttrList)
        if not SkillCommon.isPassiveAttr(curPlayerSkill):
            continue
        
@@ -3394,6 +3442,9 @@
def GetUpLVCostItemNum(curSkill):
    return curSkill.GetExAttr5()
# 技能特殊增加属性配置,目前只支持生命,潜力技能专用
def GetMaxHPAttrValue(curSkill):
    return curSkill.GetMP()
##获得当前技能升级消耗的真气值
# @param curSkill 当前技能技能