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
#!/usr/bin/python
# -*- coding: GBK -*-
#---------------------------------------------------------------------
#
#---------------------------------------------------------------------
##@package NormalNPC_Attack_Truck
# ÆÕͨNPC¹¥»÷ïÚ³µ
#
# @author eggxp
# @date 2010-4-20
# @version 1.5
#
# @change: "2010-09-06 17:30" panwei GetBattleTypeº¯ÊýÐÞ¸Ä, ÐÂÔö²ÎÊý:¹¥»÷·½
# @change: "2010-11-17 19:00" adaws ¼ÓÈëNPCÕóÈÝÅж¨
# @change: "2012-02-10 20:20" Alee Ìí¼Ó¼¼Äܱط¢Éú״̬
# @change: "2012-05-31 18:00" jiang Ð޸Ĺ¥»÷ïÚ³µÂß¼­
# @change: "2013-01-03 17:00" wdb È¥³ýnpc¹¥»÷Ôì³ÉµÄÉËѪ¼Ç¼
#------------------------------------------------------------------------------ 
"""Version = 2013-01-03 17:00"""
#---------------------------------------------------------------------
import NPCCommon
import ChConfig
import AttackCommon
import IPY_GameWorld
import SkillShell
import PlayerTruck
import GameObj
#---------------------------------------------------------------------
 
#---------------------------------------------------------------------
 
## ÊÇ·ñ¿ÉÒÔ¹¥»÷ 
#  @param curNormalNPC ¹¥»÷·½:ÆÕͨNPC
#  @param curTagPlayer ·ÀÊØ·½:ïÚ³µ
#  @param skill ¼¼ÄÜ(ÎÞ->None)
#  @param tick µ±Ç°Ê±¼ä
#  @return True or False
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def GetCanAttack(curNormalNPC, curTagTruck, skill, tick):
    
    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTagTruck)
    if curTagPlayer == None :
        return False
    
    if not curTagTruck.GetCanAttack() or PlayerTruck.IsTruckDestroy(curTagTruck):
        #Truck_pan_161795: ïÚ³µ»õÎïÒѱ»½Ù¹â
        return False
    
    if not AttackCommon.CheckNPCCanAttackTag(curNormalNPC, curTagTruck, skill):
        return False 
    
    return True
 
## »ñµÃ¹ØÏµ
#  @param curNormalNPC ¹¥»÷·½:ÆÕͨNPC
#  @param curTagPlayer ·ÀÊØ·½:ïÚ³µ
#  @param skill ¼¼ÄÜ(ÎÞ->None)
#  @param tick µ±Ç°Ê±¼ä
#  @return È磺ChConfig.Type_Relation_Enemy , ChConfig.Def_PASysMessage_None
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def GetTagRelation(curNormalNPC, curTagTruck, skill, tick):
    attackerCampType = NPCCommon.GetFaction(curNormalNPC)
    #Èç¹ûÊÇÊØÎÀ»òÊÇÅ®Éñ²»¹¥»÷Íæ¼ÒïÚ³µ
    if attackerCampType == ChConfig.CampType_Justice:
        return ChConfig.Type_Relation_Friend, ChConfig.Def_PASysMessage_None
    
    return ChConfig.Type_Relation_Enemy , ChConfig.Def_PASysMessage_None
 
## ¹¥»÷
#  @param curNormalNPC ¹¥»÷·½:ÆÕͨNPC
#  @param curTagPlayer ·ÀÊØ·½:ïÚ³µ
#  @param skill ¼¼ÄÜ(ÎÞ->None)
#  @param skillValue ¼¼ÄÜÔöÇ¿
#  @param skillPercent ¼¼ÄÜÔöÇ¿°Ù·Ö±È
#  @param skillHurtList ¼¼ÄÜÉËѪÁбí(C++½Ó¿Ú)
#  @param tick µ±Ç°Ê±¼ä
#  @return hurtType £º HurtType É˺¦½á¹¹ÌåÀà 
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def DoAttack(curNormalNPC, curTagTruck, skill, skillValue, skillPercent, skillHurtList, tick):
    curTagTruckHP = GameObj.GetHP(curTagTruck)
    hurtType = AttackCommon.GetHurtHP(curNormalNPC, curTagTruck, skill, skillValue, skillPercent, tick)
    
    hurtHP = hurtType.HurtHP
    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTagTruck)
    
    if curTagPlayer != None:
        #¸øÕâ¸öÍæ¼ÒµÄÕÙ»½ÊÞÔö¼Ó³ðºÞ
        AttackCommon.SummonAddAngryByOwner(curNormalNPC, curTagPlayer, hurtHP)
    
    #Ìí¼ÓÉËѪ
    # 2013-1-3,È¥³ýnpc¹¥»÷Ôì³ÉµÄÉËѪ¼Ç¼
#    AttackCommon.NPCAddObjInHurtList(curNormalNPC, curTagTruck, curTagTruckHP, hurtHP)
    
    #Ìí¼Ó¼¼ÄÜÉ˺¦Í¨ÖªÁбí,(ÓÃÓÚ¹¥»÷½áÊø,ͳһ֪ͨ¿Í»§¶Ë)
    AttackCommon.AddHurt(curTagTruck, skillHurtList, hurtType.HurtType, hurtHP)
    return hurtType
 
## ´¦Àí¹¥»÷ºóµÄ½á¹û
#  @param curNormalNPC ¹¥»÷·½:ÆÕͨNPC
#  @param curTagPlayer ·ÀÊØ·½:ïÚ³µ
#  @param skill ¼¼ÄÜ(ÎÞ->None)
#  @param tick µ±Ç°Ê±¼ä
#  @return True
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def AttackResult(curNormalNPC, curTagTruck, skill, tick):
    #»ñÈ¡ïÚ³µÖ÷ÈË
    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTagTruck)
    if curTagPlayer != None and GameObj.GetHP(curTagPlayer) > 0 :
        #½øÈëÕ½¶·×´Ì¬
        AttackCommon.SetPlayerBattleState(curTagPlayer, tick)
        
    #ïÚ³µËÀÍö
    if PlayerTruck.IsTruckDestroy(curTagTruck):
        PlayerTruck.DoTruckDestroy(curTagTruck)
        
    return True