| | |
| | | elif defObj.GetType() == ChConfig.ntHelpBattleRobot:
|
| | | remainHP = min(dHP, max(GameObj.GetMaxHP(defObj)/2, remainHP)) # 助战机器人剩余血量不能少于一半
|
| | | GameObj.SetHP(defObj, remainHP)
|
| | | |
| | | elif defObj.GetType() == ChConfig.ntMonsterTime:
|
| | | UpdateTimeMonsterHP(defObj, tick)
|
| | |
|
| | | else:
|
| | | #防守方是怪物NPC,只扣其血
|
| | | GameObj.SetHP(defObj, remainHP)
|
| | | npcID = defObj.GetNPCID()
|
| | | timeLostHPIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCTimeLostHP", npcID)
|
| | | if timeLostHPIpyData:
|
| | | UpdateTimeMonsterHP(defObj, timeLostHPIpyData, tick)
|
| | | else:
|
| | | GameObj.SetHP(defObj, remainHP)
|
| | | else:
|
| | | GameWorld.ErrLog('计算伤血值时,防守方类型错误:defObjType = %s' % (defObjType))
|
| | | return resultHurtType
|
| | |
| | |
|
| | | return resultHurtType
|
| | |
|
| | | def UpdateTimeMonsterHP(curNPC, tick):
|
| | | def UpdateTimeMonsterHP(curNPC, ipyData, tick):
|
| | | '''
|
| | | NPC总血量 = 单人每秒掉血量*理论击杀所需时间
|
| | | 掉血值 = 单人每秒掉血量+min(当前人数, 最大人数)*附加掉血量
|
| | | '''
|
| | | |
| | | npcID = curNPC.GetNPCID()
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("NPCTimeLostHP", npcID)
|
| | | if not ipyData:
|
| | | return
|
| | |
|
| | | lastLostHPTick = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_TimeLostHPTick)
|
| | | curNPC.SetDict(ChConfig.Def_NPC_Dict_TimeLostHPTick, tick)
|
| | |
| | | return "Robot"
|
| | | if obj.GetType() == ChConfig.ntHelpBattleRobot:
|
| | | return "HelpRobot"
|
| | | if obj.GetType() == ChConfig.ntPriWoodPilePVP:
|
| | | return "P"
|
| | |
|
| | | objType = obj.GetGameNPCObjType()
|
| | | if objType == IPY_GameWorld.gnotPet:
|