]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/server/tturrets/units/unit_fusionreactor.qc
Scaled the weapon models down about 30% to match 2.5.2 sizes. Except the tuba, I...
[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     if not (self.enemy.ammo_flags & TFL_AMMO_RECIVE) return 0;
9     if not (self.enemy.ammo_flags & TFL_AMMO_ENERGY) return 0;
10     if (self.ammo < self.shot_dmg) return 0;
11     if (self.enemy.ammo >= self.enemy.ammo_max) return 0;
12     if (self.tur_dist_aimpos > self.target_range) return 0;
13     if (self.tur_dist_aimpos < self.target_range_min) return 0;
14
15     return 1;
16 }
17
18 void turret_fusionreactor_fire()
19 {
20     vector fl_org;
21
22     self.enemy.ammo = min(self.enemy.ammo + self.shot_dmg,self.enemy.ammo_max);
23     fl_org = 0.5 * (self.enemy.absmin + self.enemy.absmax);
24     te_smallflash(fl_org);
25     //te_lightning1(world,self.origin,self.enemy.origin);
26 }
27
28 void turret_fusionreactor_postthink()
29 {
30     float f;
31     f = self.ammo / self.ammo_max;
32     self.tur_head.avelocity = '0 250 0' * f;
33 }
34
35 void turret_fusionreactor_respawnhook()
36 {
37     self.tur_head.avelocity = '0 50 0';
38 }
39
40 void turret_fusionreactor_dinit()
41 {
42     if (self.netname == "")      self.netname     = "Fusionreactor";
43
44     self.turrcaps_flags      = TFL_TURRCAPS_SUPPORT | TFL_TURRCAPS_AMMOSOURCE;
45     self.ammo_flags          = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE;
46     self.target_select_flags = TFL_TARGETSELECT_TEAMCHECK | TFL_TARGETSELECT_OWNTEAM | TFL_TARGETSELECT_RANGELIMTS;
47     self.firecheck_flags     = TFL_FIRECHECK_OWM_AMMO | TFL_FIRECHECK_OTHER_AMMO | TFL_FIRECHECK_DISTANCES | TFL_FIRECHECK_DEAD | TFL_FIRECHECK_WORLD;
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
53     if (turret_stdproc_init("fusreac_std",0,"models/turrets/base.md3","models/turrets/reactor.md3") == 0)
54     {
55         remove(self);
56         return;
57     }
58     self.tur_head.scale = 0.75;
59     self.tur_head.avelocity = '0 50 0';
60     setsize(self,'-34 -34 0','34 34 90');
61
62     self.turret_firecheckfunc   = turret_fusionreactor_firecheck;
63     self.turret_firefunc        = turret_fusionreactor_fire;
64     self.turret_postthink       = turret_fusionreactor_postthink;
65 }
66
67 /*QUAKED turret_fusionreactor (0 .5 .8) ?
68 */
69 void spawnfunc_turret_fusionreactor()
70 {
71     precache_model ("models/turrets/reactor.md3");
72     precache_model ("models/turrets/base.md3");
73
74     self.think = turret_fusionreactor_dinit;
75     self.nextthink = time + 0.5;
76 }