]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/turrets/turret/machinegun.qc
48a200cd7ead77d5c166f62836cd58e2886974e7
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / turrets / turret / machinegun.qc
1 #ifndef TUR_MACHINEGUN_H
2 #define TUR_MACHINEGUN_H
3 REGISTER_TURRET(
4 /* TUR_##id   */ MACHINEGUN,
5 /* function   */ t_machinegun,
6 /* spawnflags */ TUR_FLAG_PLAYER,
7 /* mins,maxs  */ '-32 -32 0', '32 32 64',
8 /* model          */ "base.md3",
9 /* head_model */ "machinegun.md3",
10 /* netname        */ "machinegun",
11 /* fullname   */ _("Machinegun Turret")
12 );
13 #endif
14
15 #ifdef IMPLEMENTATION
16 #ifdef SVQC
17 void spawnfunc_turret_machinegun() { SELFPARAM(); if(!turret_initialize(TUR_MACHINEGUN.m_id)) remove(self); }
18
19 void W_MachineGun_MuzzleFlash(void);
20
21 float t_machinegun(float req)
22 {SELFPARAM();
23     switch(req)
24     {
25         case TR_ATTACK:
26         {
27             fireBullet (self.tur_shotorg, self.tur_shotdir_updated, self.shot_spread, 0, self.shot_dmg, self.shot_force, DEATH_TURRET_MACHINEGUN, 0);
28
29             W_MachineGun_MuzzleFlash();
30             setattachment(self.muzzle_flash, self.tur_head, "tag_fire");
31
32             return true;
33         }
34         case TR_THINK:
35         {
36             return true;
37         }
38         case TR_DEATH:
39         {
40             return true;
41         }
42         case TR_SETUP:
43         {
44             self.damage_flags |= TFL_DMG_HEADSHAKE;
45             self.target_select_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_RANGELIMITS | TFL_TARGETSELECT_TEAMCHECK;
46             self.ammo_flags = TFL_AMMO_BULLETS | TFL_AMMO_RECHARGE | TFL_AMMO_RECIEVE;
47             self.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE;
48             self.turret_flags |= TUR_FLAG_HITSCAN;
49
50             return true;
51         }
52         case TR_PRECACHE:
53         {
54             return true;
55         }
56     }
57
58     return true;
59 }
60
61 #endif // SVQC
62 #ifdef CSQC
63 float t_machinegun(float req)
64 {
65     switch(req)
66     {
67         case TR_SETUP:
68         {
69             return true;
70         }
71         case TR_PRECACHE:
72         {
73             return true;
74         }
75     }
76
77     return true;
78 }
79
80 #endif // CSQC
81 #endif // REGISTER_TURRET