3 /* TUR_##id */ FUSIONREACTOR,
4 /* function */ t_fusionreactor,
5 /* spawnflags */ TUR_FLAG_SUPPORT | TUR_FLAG_AMMOSOURCE,
6 /* mins,maxs */ '-34 -34 0', '34 34 90',
7 /* model */ "base.md3",
8 /* head_model */ "reactor.md3",
9 /* netname */ "fusionreactor",
10 /* fullname */ _("Fusion Reactor")
13 #define FUSIONREACTOR_SETTINGS(turret)
17 FUSIONREACTOR_SETTINGS(fusionreactor)
22 float turret_fusionreactor_firecheck()
24 if (self.attack_finished_single > time)
27 if (self.enemy.deadflag != DEAD_NO)
30 if (self.enemy == world)
33 if (self.ammo < self.shot_dmg)
36 if (self.enemy.ammo >= self.enemy.ammo_max)
39 if (vlen(self.enemy.origin - self.origin) > self.target_range)
42 if(self.team != self.enemy.team)
45 if not (self.enemy.ammo_flags & TFL_AMMO_ENERGY)
51 void spawnfunc_turret_fusionreactor() { if not(turret_initialize(TUR_FUSIONREACTOR)) remove(self); }
53 float t_fusionreactor(float req)
61 self.enemy.ammo = min(self.enemy.ammo + self.shot_dmg,self.enemy.ammo_max);
62 fl_org = 0.5 * (self.enemy.absmin + self.enemy.absmax);
63 te_smallflash(fl_org);
69 self.tur_head.avelocity = '0 250 0' * (self.ammo / self.ammo_max);
79 self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE;
80 self.target_select_flags = TFL_TARGETSELECT_TEAMCHECK | TFL_TARGETSELECT_OWNTEAM | TFL_TARGETSELECT_RANGELIMITS;
81 self.firecheck_flags = TFL_FIRECHECK_AMMO_OWN | TFL_FIRECHECK_AMMO_OTHER | TFL_FIRECHECK_DISTANCES | TFL_FIRECHECK_DEAD;
82 self.shoot_flags = TFL_SHOOT_HITALLVALID;
83 self.aim_flags = TFL_AIM_NO;
84 self.track_flags = TFL_TRACK_NO;
86 self.tur_head.scale = 0.75;
87 self.tur_head.avelocity = '0 50 0';
89 self.turret_firecheckfunc = turret_fusionreactor_firecheck;
95 precache_model ("models/turrets/base.md3");
96 precache_model ("models/turrets/reactor.md3");
101 TUR_CONFIG_SETTINGS(FUSIONREACTOR_SETTINGS(fusionreactor))
111 float t_fusionreactor(float req)
121 precache_model ("models/turrets/base.md3");
122 precache_model ("models/turrets/reactor.md3");
131 #endif // REGISTER_TURRET