]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/turrets/turret/hk.qc
da107922f19e5c9cc46cf0a6d3d71e93f9b9ef55
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / turrets / turret / hk.qc
1 #ifndef TURRET_HK_H
2 #define TURRET_HK_H
3
4 //#define TURRET_DEBUG_HK
5
6 #include "hk_weapon.qh"
7
8 CLASS(HunterKiller, Turret)
9 /* spawnflags */ ATTRIB(HunterKiller, spawnflags, int, TUR_FLAG_SPLASH | TUR_FLAG_MEDPROJ | TUR_FLAG_PLAYER | TUR_FLAG_RECIEVETARGETS);
10 /* mins       */ ATTRIB(HunterKiller, mins, vector, '-32 -32 0');
11 /* maxs       */ ATTRIB(HunterKiller, maxs, vector, '32 32 64');
12 /* modelname  */ ATTRIB(HunterKiller, mdl, string, "base.md3");
13 /* model      */ ATTRIB_STRZONE(HunterKiller, model, string, strcat("models/turrets/", this.mdl));
14 /* head_model */ ATTRIB_STRZONE(HunterKiller, head_model, string, strcat("models/turrets/", "hk.md3"));
15 /* netname    */ ATTRIB(HunterKiller, netname, string, "hk");
16 /* fullname   */ ATTRIB(HunterKiller, turret_name, string, _("Hunter-Killer Turret"));
17     ATTRIB(HunterKiller, m_weapon, Weapon, WEP_HK);
18 ENDCLASS(HunterKiller)
19 REGISTER_TURRET(HK, NEW(HunterKiller));
20
21 #endif
22
23 #ifdef IMPLEMENTATION
24
25 #ifdef SVQC
26
27 #ifdef TURRET_DEBUG_HK
28 .float atime;
29 #endif
30
31 spawnfunc(turret_hk) { if(!turret_initialize(this, TUR_HK)) remove(this); }
32
33 METHOD(HunterKiller, tr_think, void(HunterKiller thistur, entity it))
34 {
35     if (it.tur_head.frame != 0)
36         it.tur_head.frame = it.tur_head.frame + 1;
37
38     if (it.tur_head.frame > 5)
39         it.tur_head.frame = 0;
40 }
41
42 bool turret_hk_addtarget(entity this, entity e_target,entity e_sender);
43 METHOD(HunterKiller, tr_setup, void(HunterKiller this, entity it))
44 {
45     it.ammo_flags = TFL_AMMO_ROCKETS | TFL_AMMO_RECHARGE;
46     it.aim_flags = TFL_AIM_SIMPLE;
47     it.target_select_flags = TFL_TARGETSELECT_LOS | TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_TRIGGERTARGET | TFL_TARGETSELECT_RANGELIMITS | TFL_TARGETSELECT_TEAMCHECK;
48     it.firecheck_flags = TFL_FIRECHECK_DEAD | TFL_FIRECHECK_TEAMCHECK  | TFL_FIRECHECK_REFIRE | TFL_FIRECHECK_AFF;
49     it.shoot_flags = TFL_SHOOT_CLEARTARGET;
50     it.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_TEAMCHECK;
51
52     it.turret_addtarget = turret_hk_addtarget;
53 }
54
55 bool turret_hk_addtarget(entity this, entity e_target,entity e_sender)
56 {
57     if (e_target)
58     {
59         if (turret_validate_target(this,e_target,this.target_validate_flags) > 0)
60         {
61             this.enemy = e_target;
62             return true;
63         }
64     }
65
66     return false;
67 }
68
69 #endif // SVQC
70 #endif