| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #  | 
| ##@package E:/GameSVN/U3DGame/ProjectSServer/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py  | 
| # @todo:   | 
| #  | 
| # @author: Alee  | 
| # @date 2017-10-24 ÏÂÎç07:49:45  | 
| # @version 1.0  | 
| #  | 
| # @note:   | 
| #  | 
| #---------------------------------------------------------------------  | 
|   | 
| import ShareDefine  | 
| import ChConfig  | 
| import IPY_GameWorld  | 
|   | 
| # ¹ØÓÚѪÁ¿µÄº¯ÊýÕâÀïÖ»°ü×°×î¼òµ¥µÄ³¬DWORD´¦Àí  | 
|   | 
| def GetMaxHP(gameObj):  | 
|     if not hasattr(gameObj, "GetMaxHPEx"):  | 
|         return gameObj.GetMaxHP()  | 
|       | 
|     else:  | 
|         return gameObj.GetMaxHPEx()*ShareDefine.Def_PerPointValue + gameObj.GetMaxHP()  | 
|   | 
|   | 
| def SetMaxHP(gameObj, value):  | 
|     if not hasattr(gameObj, "SetMaxHPEx"):  | 
|         gameObj.SetMaxHP(value)  | 
|       | 
|     else:  | 
|         gameObj.SetMaxHPEx(value/ShareDefine.Def_PerPointValue)  | 
|         gameObj.SetMaxHP(value%ShareDefine.Def_PerPointValue)  | 
|   | 
|   | 
| def GetHP(gameObj):  | 
|     if not hasattr(gameObj, "GetHPEx"):  | 
|         return gameObj.GetHP()  | 
|       | 
|     else:  | 
|         return gameObj.GetHPEx()*ShareDefine.Def_PerPointValue + gameObj.GetHP()  | 
|   | 
|   | 
| def SetHP(gameObj, value, isNotify=True, isByTime=False):  | 
|     if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:  | 
|         gameObj.SetHP(value, isNotify)  | 
|     else:  | 
|         if gameObj.GetType() == ChConfig.ntMonsterTime 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)  | 
|           | 
|           | 
| ## ÉèÖÃbuff״̬(½Å±¾×Ô¶¨Òåö¾Ù)  | 
| #  @param pyState ×´Ì¬  | 
| #  @param isTrue ÊÇ·ñÉèÖøÃ״̬  | 
| #  @return None  | 
| def SetPyPlayerState(gameObj, pyState, isAdd):  | 
|     if pyState not in ChConfig.Def_PlayerStateList:  | 
|         return  | 
|       | 
|     curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState)  | 
|     if isAdd:  | 
|         # Ôö¼Ó  | 
|         updState = curState | pow(2, pyState)  | 
|     else:  | 
|         # É¾³ý  | 
|         if curState & pow(2, pyState) == 0:  | 
|             return  | 
|         else:  | 
|             updState = curState ^ pow(2, pyState)  | 
|   | 
|       | 
|     #GameWorld.DebugLog("SetPyPlayerState (%s - %s), curState=%s,updState=%s"   | 
|     #                   % (pyState, isAdd, curState, updState))  | 
|     gameObj.SetDict(ChConfig.Def_PlayerKey_CurState, updState)  | 
|     return  | 
|   | 
| ## »ñÈ¡buff״̬(½Å±¾×Ô¶¨Òåö¾Ù)  | 
| #  @param pyState ×´Ì¬  | 
| #  @return ÊÇ·ñ¸Ã״̬  | 
| #  @remarks ¸Ã״̬Ϊbuff¶ÔÓ¦µÄ×Ô¶¨Òå״̬Ч¹û  | 
| #  Ä¿Ç°µ±Ä¿±êÉíÉ϶à¸öbuff¶¼ÓÐͬһЧ¹ûʱ(È綨Éí)£¬ÔÚÒ»¸öbuffÏûʧʱ»á½â³ý¸Ã״̬  | 
| #  ¹Ê¸Ã״̬±ê¼Ç½öΪһ¸ö·Ç¾«È·µÄ±ê¼Ç£¬Ó¦ÓÃÖÐÇë×¢Ò⣡£¡£¡(µ±ÇÒ½öµ±¶à¸öbuffÓÐͬһ¸öЧ¹ûʱ»áÌáǰ½áÊø¸Ã״̬)  | 
| def GetPyPlayerState(gameObj, pyState):  | 
|     curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState)  | 
|       | 
|     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)  |