| | |
| | | def UpdateTimeMonsterHP(curNPC, tick):
|
| | | '''
|
| | | NPC总血量 = 单人每秒掉血量*理论击杀所需时间
|
| | | 掉血值 = 单人每秒掉血量*min(攻击人数, 最大人数)*衰减万分率/10000
|
| | | 掉血值 = 单人每秒掉血量+min(当前人数, 最大人数)*附加掉血量
|
| | | '''
|
| | |
|
| | | npcID = curNPC.GetNPCID()
|
| | |
| | |
|
| | | if passTick <= 0:
|
| | | return
|
| | | |
| | | lostHPPerSecond = ipyData.GetLostHPPerSecond()
|
| | | maxPlayerCount = ipyData.GetMaxPlayerCount()
|
| | | lostHPPerSecondEx = ipyData.GetLostHPPerSecondEx()
|
| | |
|
| | | effPlayerCount = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_TimeLostHPPlayerCount)
|
| | | refreshPlayerCountTick = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_TimeLostHPPlayerCountTick)
|
| | |
| | | seeObjType = seeObj.GetGameObjType()
|
| | | if seeObjType == IPY_GameWorld.gotPlayer:
|
| | | effPlayerCount += 1
|
| | | if maxPlayerCount and effPlayerCount >= maxPlayerCount:
|
| | | effPlayerCount = maxPlayerCount
|
| | | break
|
| | | curNPC.SetDict(ChConfig.Def_NPC_Dict_TimeLostHPPlayerCount, effPlayerCount)
|
| | | #GameWorld.DebugLog("刷新影响人数: effPlayerCount=%s" % effPlayerCount)
|
| | |
|
| | | lostHPPerSecond = ipyData.GetLostHPPerSecond()
|
| | | maxPlayerCount = ipyData.GetMaxPlayerCount()
|
| | | reduceRate = ipyData.GetReduceRate()
|
| | | if effPlayerCount > 1:
|
| | | hurtValuePerSecond = lostHPPerSecond * min(maxPlayerCount, effPlayerCount) * reduceRate / 10000.0
|
| | | hurtValuePerSecond = lostHPPerSecond + (effPlayerCount - 1) * lostHPPerSecondEx
|
| | | else:
|
| | | hurtValuePerSecond = lostHPPerSecond
|
| | | lostHPTotal = int(hurtValuePerSecond * passTick / 1000.0)
|