From fba7745533989fc514ce7a8e9edc8017abd2d69e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 29 四月 2019 17:09:33 +0800
Subject: [PATCH] 6661 【后端】【2.0】战斗需要木桩

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py |   22 ++++++++++++++++++----
 1 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
index c779b70..fcc507e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
@@ -15,6 +15,7 @@
 import ShareDefine
 import ChConfig
 import IPY_GameWorld
+import IpyGameDataPY
 
 # 关于血量的函数这里只包装最简单的超DWORD处理
 
@@ -43,10 +44,15 @@
         return gameObj.GetHPEx()*ShareDefine.Def_PerPointValue + gameObj.GetHP()
 
 
-def SetHP(gameObj, value, isNotify=True):
+def SetHP(gameObj, value, isNotify=True, isByTime=False):
     if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
         gameObj.SetHP(value, isNotify)
     else:
+        if gameObj.GetGameObjType() == IPY_GameWorld.gotNPC:
+            npcID = gameObj.GetNPCID()
+            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.SetHPEx(value/ShareDefine.Def_PerPointValue)
         gameObj.SetHP(value%ShareDefine.Def_PerPointValue)
         
@@ -55,14 +61,16 @@
 #  @param pyState 状态
 #  @param isTrue 是否设置该状态
 #  @return None
-def SetPyPlayerState(gameObj, pyState, isTrue):
+def SetPyPlayerState(gameObj, pyState, isAdd):
     if pyState not in ChConfig.Def_PlayerStateList:
         return
     
     curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState)
-    if isTrue:
+    if isAdd:
+        # 增加
         updState = curState | pow(2, pyState)
     else:
+        # 删除
         if curState & pow(2, pyState) == 0:
             return
         else:
@@ -70,7 +78,7 @@
 
     
     #GameWorld.DebugLog("SetPyPlayerState (%s - %s), curState=%s,updState=%s" 
-    #                   % (pyState, isTrue, curState, updState))
+    #                   % (pyState, isAdd, curState, updState))
     gameObj.SetDict(ChConfig.Def_PlayerKey_CurState, updState)
     return
 
@@ -86,3 +94,9 @@
     state = curState & pow(2, pyState) 
     return state
 
+
+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:
+        gameObj.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_PetDamPer, value, False)

--
Gitblit v1.8.0