]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/server/tturrets/units/unit_fusionreactor.qc
Fix accuracy stats (#400)
[divverent/nexuiz.git] / data / qcsrc / server / tturrets / units / unit_fusionreactor.qc
1 void spawnfunc_turret_fusionreactor();
2 void turret_fusionreactor_dinit();
3 void turret_fusionreactor_fire();
4
5 float turret_fusionreactor_firecheck()
6 {
7     if (self.enemy == world) return 0;
8
9     if (!(self.enemy.ammo_flags & TFL_AMMO_RECIVE)) return 0;
10     if (!(self.enemy.ammo_flags & TFL_AMMO_ENERGY)) return 0;
11
12     if (self.ammo < self.shot_dmg) return 0;
13     if (self.enemy.ammo >= self.enemy.ammo_max) return 0;
14     if (self.tur_dist_aimpos > self.target_range) return 0;
15     if (self.tur_dist_aimpos < self.target_range_min) return 0;
16
17     return 1;
18 }
19
20
21 void turret_fusionreactor_fire()
22 {
23     self.enemy.ammo = min(self.enemy.ammo + self.shot_dmg,self.enemy.ammo_max);
24     //te_lightning1(world,self.origin,self.enemy.origin);
25 }
26
27 void turret_fusionreactor_postthink()
28 {
29 }
30
31 void turret_fusionreactor_respawnhook()
32 {
33     self.tur_head.avelocity = '0 50 0';
34 }
35
36 void turret_fusionreactor_dinit()
37 {
38     if (self.netname == "")      self.netname     = "Fusionreactor";
39
40     self.turrcaps_flags = TFL_TURRCAPS_SUPPORT | TFL_TURRCAPS_AMMOSOURCE;
41
42     self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE;
43
44     self.target_select_flags = TFL_TARGETSELECT_TEAMCHECK | TFL_TARGETSELECT_OWNTEAM | TFL_TARGETSELECT_RANGELIMTS;
45
46     self.firecheck_flags = TFL_FIRECHECK_OWM_AMMO | TFL_FIRECHECK_OTHER_AMMO | TFL_FIRECHECK_DISTANCES | TFL_FIRECHECK_DEAD | TFL_FIRECHECK_WORLD;
47
48     self.shoot_flags = TFL_SHOOT_HITALLVALID;
49     self.aim_flags = TFL_AIM_NO;
50     self.track_flags = TFL_TRACK_NO;
51     self.turret_respawnhook = turret_fusionreactor_respawnhook;
52     if (turret_stdproc_init("fusreac_std",0) == 0)
53     {
54         remove(self);
55         return;
56     }
57
58     setmodel(self,"models/turrets/base.md3");
59     setmodel(self.tur_head,"models/turrets/reactor.md3");
60
61     //if(!turret_tag_setup())
62     //    dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
63
64     self.tur_head.scale = 0.75;
65     setorigin(self.tur_head,self.origin + '0 0 25');
66     self.tur_head.avelocity = '0 50 0';
67
68     self.turret_firecheckfunc = turret_fusionreactor_firecheck;
69     self.turret_firefunc = turret_fusionreactor_fire;
70
71     self.turret_postthink = turret_fusionreactor_postthink;
72 }
73
74 /*QUAKED turret_fusionreactor (0 .5 .8) ?
75 */
76 void spawnfunc_turret_fusionreactor()
77 {
78     precache_model ("models/turrets/reactor.md3");
79     precache_model ("models/turrets/base.md3");
80
81     self.think = turret_fusionreactor_dinit;
82     self.nextthink = time + 0.5;
83 }