ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
@@ -18,6 +18,76 @@
import IpyGameDataPY
import SkillCommon
import PlayerControl
import ChNetSendPack
import TurnAttack
# 通用属性值字典key
Def_AttrValue = "AttrValue_%s"
#战斗单位属性通用接口, 仅配置需要指定函数的属性ID即可,没有的话通过通用接口可直接 GetAttrValue, SetAttrValue
#同个属性Get, Set 写在一起,方便维护 [Get, Set]
ObjProperty_AttrIDDict = {
    ChConfig.AttrID_Atk:[lambda curObj:curObj.GetMaxAtk(), lambda curObj, value:curObj.SetMaxAtk(value)],
    ChConfig.AttrID_Def:[lambda curObj:curObj.GetDef(), lambda curObj, value:curObj.SetDef(value)],
    ChConfig.AttrID_MaxHP:[lambda curObj:GetMaxHP(curObj), lambda curObj, value:SetMaxHP(curObj, value)],
    ChConfig.AttrID_HP:[lambda curObj:GetHP(curObj), lambda curObj, value:SetHP(curObj, value)],
    ChConfig.AttrID_AtkSpeed:[lambda curObj:GetAtkSpeed(curObj), lambda curObj, value:SetAtkSpeed(curObj, value)],
    ChConfig.AttrID_XP:[lambda curObj:GetXP(curObj), lambda curObj, value:SetXP(curObj, value)],
    ChConfig.AttrID_StunRate:[lambda curObj:GetFaintRate(curObj), lambda curObj, value:SetFaintRate(curObj, value)],
    ChConfig.AttrID_StunRateDef:[lambda curObj:GetFaintDefRate(curObj), lambda curObj, value:SetFaintDefRate(curObj, value)],
    ChConfig.AttrID_SuperHitRate:[lambda curObj:GetSuperHitRate(curObj), lambda curObj, value:SetSuperHitRate(curObj, value)],
    ChConfig.AttrID_SuperHitRateDef:[lambda curObj:GetSuperHitRateReduce(curObj), lambda curObj, value:SetSuperHitRateReduce(curObj, value)],
    ChConfig.AttrID_ComboRate:[lambda curObj:GetComboRate(curObj), lambda curObj, value:SetComboRate(curObj, value)],
    ChConfig.AttrID_ComboRateDef:[lambda curObj:GetComboDefRate(curObj), lambda curObj, value:SetComboDefRate(curObj, value)],
    ChConfig.AttrID_MissRate:[lambda curObj:GetMissRate(curObj), lambda curObj, value:SetMissRate(curObj, value)],
    ChConfig.AttrID_MissRateDef:[lambda curObj:GetMissDefRate(curObj), lambda curObj, value:SetMissDefRate(curObj, value)],
    ChConfig.AttrID_ParryRate:[lambda curObj:GetParryRate(curObj), lambda curObj, value:SetParryRate(curObj, value)],
    ChConfig.AttrID_ParryRateDef:[lambda curObj:GetParryRateDef(curObj), lambda curObj, value:SetParryRateDef(curObj, value)],
    ChConfig.AttrID_SuckHPPer:[lambda curObj:GetSuckHPPer(curObj), lambda curObj, value:SetSuckHPPer(curObj, value)],
    ChConfig.AttrID_SuckHPPerDef:[lambda curObj:GetSuckHPDefPer(curObj), lambda curObj, value:SetSuckHPDefPer(curObj, value)],
    ChConfig.AttrID_FinalDamPer:[lambda curObj:GetFinalHurtPer(curObj), lambda curObj, value:SetFinalHurtPer(curObj, value)],
    ChConfig.AttrID_FinalDamPerDef:[lambda curObj:GetFinalHurtReducePer(curObj), lambda curObj, value:SetFinalHurtReducePer(curObj, value)],
    ChConfig.AttrID_PhyDamPer:[lambda curObj:GetPhyDamPer(curObj), lambda curObj, value:SetPhyDamPer(curObj, value)],
    ChConfig.AttrID_PhyDamPerDef:[lambda curObj:GetPhyDamPerDef(curObj), lambda curObj, value:SetPhyDamPerDef(curObj, value)],
    ChConfig.AttrID_MagDamPer:[lambda curObj:GetMagDamPer(curObj), lambda curObj, value:SetMagDamPer(curObj, value)],
    ChConfig.AttrID_MagDamPerDef:[lambda curObj:GetMagDamPerDef(curObj), lambda curObj, value:SetMagDamPerDef(curObj, value)],
    ChConfig.AttrID_NormalSkillPer:[lambda curObj:GetNormalSkillPer(curObj), lambda curObj, value:SetNormalSkillPer(curObj, value)],
    ChConfig.AttrID_NormalSkillPerDef:[lambda curObj:GetNormalSkillPerDef(curObj), lambda curObj, value:SetNormalSkillPerDef(curObj, value)],
    ChConfig.AttrID_AngerSkillPer:[lambda curObj:GetAngerSkillPer(curObj), lambda curObj, value:SetAngerSkillPer(curObj, value)],
    ChConfig.AttrID_AngerSkillPerDef:[lambda curObj:GetAngerSkillPerDef(curObj), lambda curObj, value:SetAngerSkillPerDef(curObj, value)],
    ChConfig.AttrID_SuperDamPer:[lambda curObj:GetSuperHitHurtPer(curObj), lambda curObj, value:SetSuperHitHurtPer(curObj, value)],
    ChConfig.AttrID_SuperDamPerDef:[lambda curObj:GetSuperHitHurtDefPer(curObj), lambda curObj, value:SetSuperHitHurtDefPer(curObj, value)],
    ChConfig.AttrID_CurePer:[lambda curObj:GetCurePer(curObj), lambda curObj, value:SetCurePer(curObj, value)],
    ChConfig.AttrID_CurePerDef:[lambda curObj:GetCureDefPer(curObj), lambda curObj, value:SetCureDefPer(curObj, value)],
    ChConfig.AttrID_ShieldPer:[lambda curObj:GetShieldPer(curObj), lambda curObj, value:SetShieldPer(curObj, value)],
    ChConfig.AttrID_ShieldPerDef:[lambda curObj:GetShieldPerDef(curObj), lambda curObj, value:SetShieldPerDef(curObj, value)],
    ChConfig.AttrID_DOTPer:[lambda curObj:GetDOTPer(curObj), lambda curObj, value:SetDOTPer(curObj, value)],
    ChConfig.AttrID_DOTPerDef:[lambda curObj:GetDOTPerDef(curObj), lambda curObj, value:SetDOTPerDef(curObj, value)],
}
def GetAttrValue(gameObj, attrID):
    ## 通用的获取属性
    if attrID in ObjProperty_AttrIDDict:
        return ObjProperty_AttrIDDict[attrID][0](gameObj)
    return gameObj.GetDictByKey(Def_AttrValue % attrID)
def SetAttrValue(gameObj, attrID, value, isNotify=True):
    ## 通用的设置属性
    if attrID in ObjProperty_AttrIDDict:
        ObjProperty_AttrIDDict[attrID][1](gameObj, value)
    else:
        gameObj.SetDict(Def_AttrValue % attrID, value)
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        # 卡牌项目,暂不需要通知玩家相关的属性,因为最终都体现在卡牌上,全部由前端自己计算
        return
    if isNotify:
        if attrID in ChConfig.CDBRefresh_AttrIDDict:
            refreshType, isBig = ChConfig.CDBRefresh_AttrIDDict[attrID]
            NotifyObjInfoRefresh(gameObj, refreshType, isBig)
    return
# 关于血量的函数这里只包装最简单的超DWORD处理
@@ -35,7 +105,6 @@
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        if isNotify == None:
            isNotify = True
        gameObj.SetHP(value % ShareDefine.Def_PerPointValue, value / ShareDefine.Def_PerPointValue, isNotify)
    else:
        if isNotify == None:
            isNotify = False
@@ -44,17 +113,28 @@
            if IpyGameDataPY.GetIpyGameDataNotLog("NPCTimeLostHP", npcID) and not isByTime and value not in [GetMaxHP(gameObj), 0]:
                #GameWorld.DebugLog("不能设置按时间掉血的怪物血量! id=%s,npciD=%s,value=%s,isByTime=%s" % (gameObj.GetID(), gameObj.GetNPCID(), value, isByTime))
                return
        gameObj.SetHP(value % ShareDefine.Def_PerPointValue, value / ShareDefine.Def_PerPointValue, isNotify)
    gameObj.SetHP(value % ShareDefine.Def_PerPointValue, value / ShareDefine.Def_PerPointValue, False)
    if isNotify:
        NotifyObjInfoRefresh(gameObj, IPY_GameWorld.CDBPlayerRefresh_HP, value)
    return
def SetHPFull(gameObj):
    SetHP(gameObj, GetMaxHP(gameObj))
def SetHPFull(gameObj, isNotify=True):
    SetHP(gameObj, GetMaxHP(gameObj), isNotify)
    return
def SetBaseMaxHP(gameObj, value):
    gameObj.SetBaseMaxHP(value % ShareDefine.Def_PerPointValue, value / ShareDefine.Def_PerPointValue)
    return
def GetXP(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_XP)
def SetXP(gameObj, value, isNotify=True):
    ## XP值,用作怒气值
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_XP, value)
    if isNotify:
        NotifyObjInfoRefresh(gameObj, IPY_GameWorld.CDBPlayerRefresh_XP, value)
    return
def GetAngryValue(curAngry):
    return curAngry.GetAngryValue() + curAngry.GetAngryValueEx() * ShareDefine.Def_PerPointValue
def SetAngryValue(curAngry, value):
@@ -152,13 +232,6 @@
    gameObj.SetDict(ChConfig.Def_PlayerKey_CurState, 0)
    return
def GetPetDamPer(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrPetDamPer)
def SetPetDamPer(gameObj, value):
    gameObj.SetDict(ChConfig.Def_PlayerKey_AttrPetDamPer, value)
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_PetDamPer, value)
    return
def GetLastHurtValue(gameObj):
    ## 最后一击伤害值
    hurt = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_LastHurtValue)
@@ -169,38 +242,300 @@
    gameObj.SetDict(ChConfig.Def_PlayerKey_LastHurtValueEx, value / ShareDefine.Def_PerPointValue)
    return
def GetBloodShiledHurt(gameObj):
    ## 伤害值用于血盾抵消
    hurt = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_BloodShiledHurt)
    hurtEx = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_BloodShiledHurtEx)
    return hurtEx * ShareDefine.Def_PerPointValue + hurt
def SetBloodShiledHurt(gameObj, value):
    gameObj.SetDict(ChConfig.Def_PlayerKey_BloodShiledHurt, value % ShareDefine.Def_PerPointValue)
    gameObj.SetDict(ChConfig.Def_PlayerKey_BloodShiledHurtEx, value / ShareDefine.Def_PerPointValue)
def GetLastBeHurtValue(gameObj):
    ## 最后一次受伤值
    return 0
    #hurt = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_LastBeHurtValue)
    #hurtEx = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_LastBeHurtValueEx)
    #return hurtEx * ShareDefine.Def_PerPointValue + hurt
def SetLastBeHurtValue(gameObj, value):
    #gameObj.SetDict(ChConfig.Def_PlayerKey_LastBeHurtValue, value % ShareDefine.Def_PerPointValue)
    #gameObj.SetDict(ChConfig.Def_PlayerKey_LastBeHurtValueEx, value / ShareDefine.Def_PerPointValue)
    return
def GetSuperHitHurtPer(gameObj): return 0
def SetSuperHitHurtPer(gameObj, value): return
def GetSuperHitHurtDefPer(gameObj): return 0
def SetSuperHitHurtDefPer(gameObj, value): return
def GetBloodShiledHurt(gameObj):
    ## 伤害值用于血盾抵消
    return 0
def SetBloodShiledHurt(gameObj, value):
    return
def GetComboDefRate(gameObj): return 0
def SetComboDefRate(gameObj, value): return
## ---------------------------------------------------------
def ClearBattleEffect(gameObj):
    gameObj.ClearBattleEffect()
    # 其他py层自定义战斗属性,由于EffGetSet中不是所有属性接口均通用,固这里先手动调用
    SetPetDamPer(gameObj, 0)
    SetFinalHurtPer(gameObj, 0)
    SetFinalHurtReducePer(gameObj, 0)
    SetAtkSpeed(gameObj, 0)
    SetSuperHitRateReduce(gameObj, 0)
    SetSuperHitReduce(gameObj, 0)
    SetFaintRate(gameObj, 0)
    SetFaintDefRate(gameObj, 0)
    SetComboRate(gameObj, 0)
    SetComboDefRate(gameObj, 0)
    SetComboDamPer(gameObj, 0)
    SetAtkBackRate(gameObj, 0)
    SetAtkBackDefRate(gameObj, 0)
    SetSuckHPPer(gameObj, 0)
    SetSuckHPDefPer(gameObj, 0)
    SetAtkBackHP(gameObj, 0)
    SetCurePer(gameObj, 0)
    SetCureDefPer(gameObj, 0)
    SetPetStrengthenPer(gameObj, 0)
    SetPetWeakenPer(gameObj, 0)
    SetDamageBackRate(gameObj, 0)
    SetSuperHitHurtPer(gameObj, 0)
    SetSuperHitHurtDefPer(gameObj, 0)
    return
def GetPetDamPer(gameObj): return 0
def SetPetDamPer(gameObj, value):
    return
def GetFinalHurtPer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_FinalDamPer)
def SetFinalHurtPer(gameObj, value):
    ## 最终伤害百分比
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_FinalDamPer, value)
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_FinalDamPer, value)
    return
def GetFinalHurtReducePer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_FinalDamPerDef)
def SetFinalHurtReducePer(gameObj, value):
    ## 最终伤害减免百分比
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_FinalDamPerDef, value)
    return
def GetPhyDamPer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_PhyDamPer)
def SetPhyDamPer(gameObj, value):
    ## 物理增伤
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_PhyDamPer, value)
    return
def GetPhyDamPerDef(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_PhyDamPerDef)
def SetPhyDamPerDef(gameObj, value):
    ## 物理减伤
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_PhyDamPerDef, value)
    return
def GetMagDamPer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_MagDamPer)
def SetMagDamPer(gameObj, value):
    ## 法术增伤
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_MagDamPer, value)
    return
def GetMagDamPerDef(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_MagDamPerDef)
def SetMagDamPerDef(gameObj, value):
    ## 法术减伤
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_MagDamPerDef, value)
    return
def GetNormalSkillPer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_NormalSkillPer)
def SetNormalSkillPer(gameObj, value):
    ## 普技增伤
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_NormalSkillPer, value)
    return
def GetNormalSkillPerDef(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_NormalSkillPerDef)
def SetNormalSkillPerDef(gameObj, value):
    ## 普技减伤
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_NormalSkillPerDef, value)
    return
def GetAngerSkillPer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_AngerSkillPer)
def SetAngerSkillPer(gameObj, value):
    ## 怒技增伤
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_AngerSkillPer, value)
    return
def GetAngerSkillPerDef(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_AngerSkillPerDef)
def SetAngerSkillPerDef(gameObj, value):
    ## 怒技减伤
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_AngerSkillPerDef, value)
    return
def GetDOTPer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_DOTPer)
def SetDOTPer(gameObj, value):
    ## 持续增伤
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_DOTPer, value)
    return
def GetDOTPerDef(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_DOTPerDef)
def SetDOTPerDef(gameObj, value):
    ## 持续减伤
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_DOTPerDef, value)
    return
def GetShieldPer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_ShieldPer)
def SetShieldPer(gameObj, value):
    ## 强化护盾
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_ShieldPer, value)
    return
def GetShieldPerDef(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_ShieldPerDef)
def SetShieldPerDef(gameObj, value):
    ## 弱化护盾
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_ShieldPerDef, value)
    return
def GetFaction(gameObj):
    faction = gameObj.GetDictByKey(ChConfig.Def_Obj_Dict_Faction)
    if faction:
        return faction
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        return gameObj.GetFaction()
    return gameObj.GetCountry()
def SetFaction(gameObj, value):
    gameObj.SetDict(ChConfig.Def_Obj_Dict_Faction, value)
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        gameObj.SetFaction(value)
    return
def GetAtkSpeed(gameObj): return 0
def SetAtkSpeed(gameObj, value):
    ## 攻击速度
    return
def GetMissRate(gameObj): return gameObj.GetMiss()
def SetMissRate(gameObj, value):
    ## 闪避概率
    gameObj.SetMiss(value)
    return
def GetMissDefRate(gameObj): return gameObj.GetHit()
def SetMissDefRate(gameObj, value):
    ## 抗闪避率 = 命中
    gameObj.SetHit(value)
    return
def GetSuperHitRate(gameObj): return gameObj.GetSuperHitRate()
def SetSuperHitRate(gameObj, value):
    ## 暴击概率
    gameObj.SetSuperHitRate(value)
    return
def GetSuperHitRateReduce(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_SuperHitRateDef)
def SetSuperHitRateReduce(gameObj, value):
    ## 抗暴击概率
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_SuperHitRateDef, value)
    return
def GetSuperHitReduce(gameObj): return 0
def SetSuperHitReduce(gameObj, value):
    ## 暴击固定伤害减免 - 暴击时附加固定伤害减免,与 atkObj.GetSuperHit() 相对
    return
def GetSuperHitHurtPer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_SuperDamPer)
def SetSuperHitHurtPer(gameObj, value):
    ## 强化暴伤 - 暴击时的总伤害加成,与 SuperHitHurtDefPer 相对,注意与暴击固定伤害区分
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_SuperDamPer, value)
    return
def GetSuperHitHurtDefPer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_SuperDamPerDef)
def SetSuperHitHurtDefPer(gameObj, value):
    ## 弱化暴伤 - 暴击时的总伤害减免
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_SuperDamPerDef, value)
    return
def GetParryRate(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_ParryRate)
def SetParryRate(gameObj, value):
    ## 格挡概率
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_ParryRate, value)
    return
def GetParryRateDef(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_ParryRateDef)
def SetParryRateDef(gameObj, value):
    ## 抗格挡概率
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_ParryRateDef, value)
    return
def GetFaintRate(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_StunRate)
def SetFaintRate(gameObj, value):
    ## 击晕概率
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_StunRate, value)
    return
def GetFaintDefRate(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_StunRateDef)
def SetFaintDefRate(gameObj, value):
    ## 抗击晕概率
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_StunRateDef, value)
    return
def GetComboRate(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_ComboRate)
def SetComboRate(gameObj, value):
    ## 连击概率
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_ComboRate, value)
    return
def GetComboDefRate(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_ComboRateDef)
def SetComboDefRate(gameObj, value):
    ## 抗连击概率
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_ComboRateDef, value)
    return
def GetComboDamPer(gameObj): return 0
def SetComboDamPer(gameObj, value):
    ## 连击伤害
    return
def GetAtkBackRate(gameObj): return 0
def SetAtkBackRate(gameObj, value): return
def SetAtkBackRate(gameObj, value):
    ## 反击概率
    return
def GetAtkBackDefRate(gameObj): return 0
def SetAtkBackDefRate(gameObj, value): return
def SetAtkBackDefRate(gameObj, value):
    ## 抗反击概率
    return
def GetSuckHPPer(gameObj): return 0
def SetSuckHPPer(gameObj, value): return
def GetSuckHPDefPer(gameObj): return 0
def SetSuckHPDefPer(gameObj, value): return
def GetSuckHPPer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_SuckHPPer)
def SetSuckHPPer(gameObj, value):
    ## 吸血比率
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_SuckHPPer, value)
    return
def GetSuckHPDefPer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_SuckHPPerDef)
def SetSuckHPDefPer(gameObj, value):
    ## 抗吸血比率
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_SuckHPPerDef, value)
    return
def GetAtkBackHP(gameObj): return 0
def SetAtkBackHP(gameObj, value):
    ## 吸血固定值
    return
def GetCureDefPer(gameObj): return 0
def SetCureDefPer(gameObj, value): return
def GetCurePer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_CurePer)
def SetCurePer(gameObj, value):
    ## 强化治疗
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_CurePer, value)
    return
def GetCureDefPer(gameObj): return gameObj.GetDictByKey(Def_AttrValue % ChConfig.AttrID_CurePerDef)
def SetCureDefPer(gameObj, value):
    ## 弱化治疗
    gameObj.SetDict(Def_AttrValue % ChConfig.AttrID_CurePerDef, value)
    return
def GetPetStrengthenPer(gameObj): return 0
def SetPetStrengthenPer(gameObj, value): return
def SetPetStrengthenPer(gameObj, value):
    ## 强化灵兽
    return
def GetPetWeakenPer(gameObj): return 0
def SetPetWeakenPer(gameObj, value): return
def SetPetWeakenPer(gameObj, value):
    ## 弱化灵兽
    return
def GetDamageBackRate(gameObj): 0
def SetDamageBackRate(gameObj, value):
    ## 反弹伤害
    return
def NotifyObjInfoRefresh(gameObj, refreshType, value, isBig=False):
    ##0418通知对象属性刷新
    sendPack = ChNetSendPack.tagObjInfoRefresh()
    sendPack.Clear()
    sendPack.ObjID = gameObj.GetID()
    sendPack.ObjType = gameObj.GetGameObjType()
    sendPack.RefreshType = refreshType
    if isBig:
        sendPack.Value = value % ShareDefine.Def_PerPointValue
        sendPack.ValueEx = value / ShareDefine.Def_PerPointValue
    else:
        sendPack.Value = value
        sendPack.ValueEx = 0
    turnFight = TurnAttack.GetTurnFightMgr().getNPCTurnFight(gameObj.GetID())
    if turnFight:
        turnFight.addBatPack(sendPack)
        return
    gameObj.NotifyAll(sendPack.GetBuffer(), sendPack.GetLength())
    return