| | |
| | | import IpyGameDataPY
|
| | | import SkillCommon
|
| | | import PlayerControl
|
| | | import ChNetSendPack
|
| | | import TurnAttack
|
| | |
|
| | | # 关于血量的函数这里只包装最简单的超DWORD处理
|
| | |
|
| | |
| | | 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
|
| | |
| | | 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(ChConfig.Def_PlayerKey_AttrXP)
|
| | | def SetXP(gameObj, value, isNotify=True):
|
| | | ## XP值,用作怒气值
|
| | | gameObj.SetDict(ChConfig.Def_PlayerKey_AttrXP, 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):
|
| | |
| | | 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)
|
| | |
| | | def SetLastHurtValue(gameObj, value):
|
| | | gameObj.SetDict(ChConfig.Def_PlayerKey_LastHurtValue, value % ShareDefine.Def_PerPointValue)
|
| | | gameObj.SetDict(ChConfig.Def_PlayerKey_LastHurtValueEx, value / ShareDefine.Def_PerPointValue)
|
| | | return
|
| | |
|
| | | 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 GetBloodShiledHurt(gameObj):
|
| | |
| | | gameObj.SetDict(ChConfig.Def_PlayerKey_BloodShiledHurtEx, 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 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 GetComboDefRate(gameObj): return 0
|
| | | def SetComboDefRate(gameObj, value): 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 GetAtkBackRate(gameObj): return 0
|
| | | def SetAtkBackRate(gameObj, value): return
|
| | | def GetAtkBackDefRate(gameObj): return 0
|
| | | def SetAtkBackDefRate(gameObj, value): return
|
| | | def GetFinalHurtPer(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurtPer)
|
| | | def SetFinalHurtPer(gameObj, value):
|
| | | ## 最终伤害百分比
|
| | | gameObj.SetDict(ChConfig.Def_PlayerKey_FinalHurtPer, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_FinalHurtPer, value)
|
| | | return
|
| | |
|
| | | def GetSuckHPPer(gameObj): return 0
|
| | | def SetSuckHPPer(gameObj, value): return
|
| | | def GetSuckHPDefPer(gameObj): return 0
|
| | | def SetSuckHPDefPer(gameObj, value): return
|
| | | def GetFinalHurtReducePer(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurtReducePer)
|
| | | def SetFinalHurtReducePer(gameObj, value):
|
| | | ## 最终伤害减免百分比
|
| | | gameObj.SetDict(ChConfig.Def_PlayerKey_FinalHurtReducePer, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_FinalHurtReducePer, value)
|
| | | return
|
| | |
|
| | | def GetCureDefPer(gameObj): return 0
|
| | | def SetCureDefPer(gameObj, 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 GetPetStrengthenPer(gameObj): return 0
|
| | | def SetPetStrengthenPer(gameObj, value): return
|
| | | def GetPetWeakenPer(gameObj): return 0
|
| | | def SetPetWeakenPer(gameObj, value): return
|
| | | def GetAtkSpeed(gameObj):
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | return gameObj.GetBattleValEx1()
|
| | | return gameObj.GetDictByKey(ChConfig.AttrName_AtkSpeed)
|
| | | def SetAtkSpeed(gameObj, value):
|
| | | ## 攻击速度
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | gameObj.SetBattleValEx1(value, True)
|
| | | else:
|
| | | gameObj.SetDict(ChConfig.AttrName_AtkSpeed, 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(ChConfig.Def_PlayerKey_SuperHitRateReduce)
|
| | | def SetSuperHitRateReduce(gameObj, value): |
| | | ## 抗暴击概率
|
| | | gameObj.SetDict(ChConfig.Def_PlayerKey_SuperHitRateReduce, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_SuperHitRateReduce, value)
|
| | | return
|
| | |
|
| | | def GetSuperHitReduce(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_SuperHitReduce)
|
| | | def SetSuperHitReduce(gameObj, value):
|
| | | ## 暴击固定伤害减免 - 暴击时附加固定伤害减免,与 atkObj.GetSuperHit() 相对
|
| | | gameObj.SetDict(ChConfig.Def_PlayerKey_SuperHitReduce, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_SuperHitReduce, value)
|
| | | return
|
| | |
|
| | | def GetSuperHitHurtPer(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_SuperHitHurtPer)
|
| | | def SetSuperHitHurtPer(gameObj, value):
|
| | | ## 强化暴伤 - 暴击时的总伤害加成,与 SuperHitHurtDefPer 相对,注意与暴击固定伤害区分
|
| | | gameObj.SetDict(ChConfig.AttrName_SuperHitHurtPer, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_SuperHitHurtPer, value)
|
| | | return
|
| | | def GetSuperHitHurtDefPer(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_SuperHitHurtDefPer)
|
| | | def SetSuperHitHurtDefPer(gameObj, value):
|
| | | ## 弱化暴伤 - 暴击时的总伤害减免
|
| | | gameObj.SetDict(ChConfig.AttrName_SuperHitHurtDefPer, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_SuperHitHurtDefPer, value)
|
| | | return
|
| | |
|
| | |
|
| | | def GetFaintRate(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrFaintRate)
|
| | | def SetFaintRate(gameObj, value):
|
| | | ## 击晕概率
|
| | | gameObj.SetDict(ChConfig.Def_PlayerKey_AttrFaintRate, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_FaintRate, value)
|
| | | return
|
| | | def GetFaintDefRate(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrFaintDefRate)
|
| | | def SetFaintDefRate(gameObj, value):
|
| | | ## 抗击晕概率
|
| | | gameObj.SetDict(ChConfig.Def_PlayerKey_AttrFaintDefRate, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_FaintDefRate, value)
|
| | | return
|
| | |
|
| | | def GetComboRate(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrComboRate)
|
| | | def SetComboRate(gameObj, value):
|
| | | ## 连击概率
|
| | | gameObj.SetDict(ChConfig.Def_PlayerKey_AttrComboRate, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_ComboRate, value)
|
| | | return
|
| | | def GetComboDefRate(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_ComboDefRate)
|
| | | def SetComboDefRate(gameObj, value):
|
| | | ## 抗连击概率
|
| | | gameObj.SetDict(ChConfig.AttrName_ComboDefRate, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_ComboDefRate, value)
|
| | | return
|
| | | def GetComboDamPer(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrComboDamPer)
|
| | | def SetComboDamPer(gameObj, value):
|
| | | ## 连击伤害
|
| | | gameObj.SetDict(ChConfig.Def_PlayerKey_AttrComboDamPer, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_ComboDamPer, value)
|
| | | return
|
| | |
|
| | | def GetAtkBackRate(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_AtkBackRate)
|
| | | def SetAtkBackRate(gameObj, value):
|
| | | ## 反击概率
|
| | | gameObj.SetDict(ChConfig.AttrName_AtkBackRate, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_AtkBackRate, value)
|
| | | return
|
| | | def GetAtkBackDefRate(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_AtkBackDefRate)
|
| | | def SetAtkBackDefRate(gameObj, value):
|
| | | ## 抗反击概率
|
| | | gameObj.SetDict(ChConfig.AttrName_AtkBackDefRate, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_AtkBackDefRate, value)
|
| | | return
|
| | |
|
| | | def GetSuckHPPer(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_SuckHPPer)
|
| | | def SetSuckHPPer(gameObj, value):
|
| | | ## 吸血比率
|
| | | gameObj.SetDict(ChConfig.AttrName_SuckHPPer, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_SuckHPPer, value)
|
| | | return
|
| | | def GetSuckHPDefPer(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_SuckHPDefPer)
|
| | | def SetSuckHPDefPer(gameObj, value):
|
| | | ## 抗吸血比率
|
| | | gameObj.SetDict(ChConfig.AttrName_SuckHPDefPer, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_SuckHPDefPer, value)
|
| | | return
|
| | | def GetAtkBackHP(gameObj):
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | return gameObj.GetBattleValEx2()
|
| | | return gameObj.GetDictByKey(ChConfig.AttrName_AtkBackHP)
|
| | | def SetAtkBackHP(gameObj, value):
|
| | | ## 吸血固定值
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | gameObj.SetBattleValEx2(value)
|
| | | else:
|
| | | gameObj.SetDict(ChConfig.AttrName_AtkBackHP, value)
|
| | | return
|
| | |
|
| | | def GetCurePer(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_CurePer)
|
| | | def SetCurePer(gameObj, value):
|
| | | ## 强化治疗
|
| | | gameObj.SetDict(ChConfig.AttrName_CurePer, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_CurePer, value)
|
| | | return
|
| | | def GetCureDefPer(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_CureDefPer)
|
| | | def SetCureDefPer(gameObj, value):
|
| | | ## 弱化治疗
|
| | | gameObj.SetDict(ChConfig.AttrName_CureDefPer, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_CureDefPer, value)
|
| | | return
|
| | |
|
| | | def GetPetStrengthenPer(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_PetStrengthenPer)
|
| | | def SetPetStrengthenPer(gameObj, value):
|
| | | ## 强化灵兽
|
| | | gameObj.SetDict(ChConfig.AttrName_PetStrengthenPer, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_PetStrengthenPer, value)
|
| | | return
|
| | | def GetPetWeakenPer(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_PetWeakenPer)
|
| | | def SetPetWeakenPer(gameObj, value):
|
| | | ## 弱化灵兽
|
| | | gameObj.SetDict(ChConfig.AttrName_PetWeakenPer, value)
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_PetWeakenPer, value)
|
| | | return
|
| | |
|
| | | def GetDamageBackRate(gameObj):
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | return gameObj.GetDamageBackRate()
|
| | | return gameObj.GetDictByKey(ChConfig.AttrName_DamBackPer)
|
| | | def SetDamageBackRate(gameObj, value):
|
| | | ## 反弹伤害
|
| | | if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | gameObj.SetDamageBackRate(value)
|
| | | else:
|
| | | gameObj.SetDict(ChConfig.AttrName_DamBackPer, value)
|
| | | return
|
| | |
|
| | | def NotifyObjInfoRefresh(gameObj, refreshType, value):
|
| | | ##0418通知对象属性刷新
|
| | | sendPack = ChNetSendPack.tagObjInfoRefresh()
|
| | | sendPack.Clear()
|
| | | sendPack.ObjID = gameObj.GetID()
|
| | | sendPack.ObjType = gameObj.GetGameObjType()
|
| | | sendPack.RefreshType = refreshType
|
| | | sendPack.Value = value % ShareDefine.Def_PerPointValue
|
| | | sendPack.ValueEx = value / ShareDefine.Def_PerPointValue
|
| | | turnFight = TurnAttack.GetTurnFightMgr().getNPCTurnFight(gameObj.GetID())
|
| | | if turnFight:
|
| | | turnFight.addBatPack(sendPack)
|
| | | return
|
| | | gameObj.NotifyAll(sendPack.GetBuffer(), sendPack.GetLength())
|
| | | return
|