hxp
2019-04-12 254193aa2af834a522c6847b6b85250427563961
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/usr/bin/python
# -*- coding: GBK -*-
 
##@package KillScreenNPC
# µ±Ç°ÆÁÄ»NPCÈ«²¿ËÀÍö
#
# @author ifo
# @date 2010-4-23
# @version 1.2
#
# ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ
# @change: "2014-01-27 15:00" hxp Ôö¼ÓnpcËÀÍöÖ´ÐÐDoLogic_AttackResult
#
# VER = "2014-01-27 15:00" zhengyang Ìí¼Ó×¢ÊÍ
# VER = "2016-08-22 14:00" hxp Ö»»÷ɱ¹ÖÎï
#
# Ä£¿éÏêϸ˵Ã÷
 
import LogUI
import IPY_GameWorld
import GameWorld
import ChConfig
import BaseAttack
import AttackCommon
import GameObj
import NPCCommon
import GameLogic_SealDemon
import GameLogic_ZhuXianBoss
import GameLogic_ZhuXianTower
import GameLogic_AllFamilyBoss
import GameLogic_HorsePetBoss
 
## GMÃüÁîÖ´ÐÐÈë¿Ú
#  @param curPlayer µ±Ç°Íæ¼Ò
#  @param playerList ²ÎÊýÁбí []
#  @return None
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def OnExec(curPlayer, playerList):
    if curPlayer.GetMapID() == ChConfig.Def_FBMapID_SealDemon:
        #·âħ̳»÷ɱ¹Ö
        gameWorld = GameWorld.GetGameWorld()
        lineID = gameWorld.GetPropertyID() - 1
        gameWorld.SetGameWorldDict(GameLogic_SealDemon.FBDict_RemainHP % lineID, 1)
        return
    if curPlayer.GetMapID() == ChConfig.Def_FBMapID_ZhuXianBoss:
        #ÖïÏÉBOSS»÷ɱ¹Ö
        gameWorld = GameWorld.GetGameWorld()
        lineID = gameWorld.GetPropertyID() - 1
        gameWorld.SetGameWorldDict(GameLogic_ZhuXianBoss.FBDict_RemainHP % lineID, 1)
        return
    if curPlayer.GetMapID() == ChConfig.Def_FBMapID_ZhuXianTower:
        #ÖïÏÉËþ»÷ɱ¹Ö
        GameWorld.GetGameFB().SetGameFBDict(GameLogic_ZhuXianTower.FBDict_RemainHP, 1)
        return
    if curPlayer.GetMapID() == ChConfig.Def_FBMapID_AllFamilyBoss:
        #ÏÉÃËBOSS»÷ɱ¹Ö
        GameWorld.GetGameWorld().SetGameWorldDict(GameLogic_AllFamilyBoss.FBDict_RemainHP, 1)
        return
    if curPlayer.GetMapID() == ChConfig.Def_FBMapID_HorsePetBoss:
        #Æï³èBOSS»÷ɱ¹Ö
        gameWorld = GameWorld.GetGameWorld()
        lineID = gameWorld.GetPropertyID() - 1
        gameWorld.SetGameWorldDict(GameLogic_HorsePetBoss.FBDict_RemainHP % lineID, 1)
        return
    isMapAllNPC = 0
    if len(playerList) > 0:
        isMapAllNPC = playerList[0]
        
    if isMapAllNPC:
        __KillMapAllNPC(curPlayer)
    else:
        __KillScreenNPC(curPlayer)
    return
 
def __KillScreenNPC(curPlayer):
    gameMap = GameWorld.GetMap()   
    tick = GameWorld.GetGameWorld().GetTick()
    for i in range(curPlayer.GetPosX()-ChConfig.Def_Screen_Area,curPlayer.GetPosX()+ChConfig.Def_Screen_Area):
        for j in range(curPlayer.GetPosY()-ChConfig.Def_Screen_Area,curPlayer.GetPosY()+ChConfig.Def_Screen_Area):
            tempObj = gameMap.GetPosObj(i,j)
            if not tempObj:
                continue
            for k in range(0,tempObj.GetObjCount()):
                curObj = tempObj.GetObjByIndex(k)
                if curObj == None:
                    continue
                if curObj.GetGameObjType() != IPY_GameWorld.gotNPC:
                    continue
                #curNPC = GameWorld.GetNPCManager().GetNPCByIndex(curObj.GetIndex())
                curNPC = GameWorld.GetObj(curObj.GetID(), IPY_GameWorld.gotNPC)
                __DoKillNPC(curPlayer, curNPC, tick)
    return
 
 
def __KillMapAllNPC(curPlayer):
    tick = GameWorld.GetGameWorld().GetTick()
    gameNPCManager = GameWorld.GetNPCManager()
    for index in range(gameNPCManager.GetNPCCount()):
        curNPC = gameNPCManager.GetNPCByIndex(index)
        __DoKillNPC(curPlayer, curNPC, tick)
    return
 
def __DoKillNPC(curPlayer, curNPC, tick):
    if not curNPC or curNPC.GetID() == 0 or GameObj.GetHP(curNPC) <= 0:
        return
    if NPCCommon.GetFaction(curNPC) == ChConfig.CampType_Justice:
        return
    if curNPC.GetCurAction() == IPY_GameWorld.laNPCDie:
        return
    if curNPC.GetType() not in [IPY_GameWorld.ntMonster, ChConfig.ntMonsterTime]:
        return
    if not curNPC.GetVisible():
        return
    curHP = GameObj.GetHP(curNPC)
    AttackCommon.NPCAddObjInHurtList(curPlayer, curNPC, curHP, curHP)
    
    #if curPlayer.GetTeamID() > 0:
    #    AttackCommon.AddHurtValue(curNPC, curPlayer.GetTeamID(), ChConfig.Def_NPCHurtTypeTeam, curHP)
    #    AttackCommon.AddTeamPlayerHurtValue(curNPC, curPlayer.GetTeamID(), curPlayer.GetPlayerID(), curHP)
    #else:
    #    AttackCommon.AddHurtValue(curNPC, curPlayer.GetPlayerID(), ChConfig.Def_NPCHurtTypePlayer, curHP)
    
    #ͳһµ÷Óù¥»÷½áÊø¶¯×÷
    GameObj.SetHP(curNPC, 0)
    curNPC.SetDict(ChConfig.Def_PlayerKey_LastHurt, curPlayer.GetPlayerID())
    BaseAttack.DoLogic_AttackResult(curPlayer, curNPC, None, tick)
#                    curNPCControl = NPCCommon.NPCControl(curNPC)
#                    curNPCControl.SetKilled()
    return