1 #ifndef TUR_FUSIONREACTOR_H
2 #define TUR_FUSIONREACTOR_H
4 CLASS(FusionReactor, Turret)
5 /* spawnflags */ ATTRIB(FusionReactor, spawnflags, int, TUR_FLAG_SUPPORT | TUR_FLAG_AMMOSOURCE);
6 /* mins */ ATTRIB(FusionReactor, mins, vector, '-34 -34 0');
7 /* maxs */ ATTRIB(FusionReactor, maxs, vector, '34 34 90');
8 /* modelname */ ATTRIB(FusionReactor, mdl, string, "base.md3");
9 /* model */ ATTRIB(FusionReactor, model, string, strzone(strcat("models/turrets/", this.mdl)));
10 /* head_model */ ATTRIB(FusionReactor, head_model, string, strzone(strcat("models/turrets/", "reactor.md3")));
11 /* netname */ ATTRIB(FusionReactor, netname, string, "fusionreactor");
12 /* fullname */ ATTRIB(FusionReactor, turret_name, string, _("Fusion Reactor"));
13 ENDCLASS(FusionReactor)
15 REGISTER_TURRET(FUSIONREACTOR, NEW(FusionReactor));
21 bool turret_fusionreactor_firecheck()
23 if (self.attack_finished_single > time)
26 if (self.enemy.deadflag != DEAD_NO)
29 if (self.enemy == world)
32 if (self.ammo < self.shot_dmg)
35 if (self.enemy.ammo >= self.enemy.ammo_max)
38 if (vlen(self.enemy.origin - self.origin) > self.target_range)
41 if(self.team != self.enemy.team)
44 if(!(self.enemy.ammo_flags & TFL_AMMO_ENERGY))
50 void spawnfunc_turret_fusionreactor() { SELFPARAM(); if(!turret_initialize(TUR_FUSIONREACTOR.m_id)) remove(self); }
52 METHOD(FusionReactor, tr_attack, void(FusionReactor thistur))
56 self.enemy.ammo = min(self.enemy.ammo + self.shot_dmg,self.enemy.ammo_max);
57 fl_org = 0.5 * (self.enemy.absmin + self.enemy.absmax);
58 te_smallflash(fl_org);
60 METHOD(FusionReactor, tr_think, bool(FusionReactor thistur))
62 self.tur_head.avelocity = '0 250 0' * (self.ammo / self.ammo_max);
66 METHOD(FusionReactor, tr_death, bool(FusionReactor thistur))
70 METHOD(FusionReactor, tr_setup, bool(FusionReactor thistur))
72 self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE;
73 self.target_select_flags = TFL_TARGETSELECT_TEAMCHECK | TFL_TARGETSELECT_OWNTEAM | TFL_TARGETSELECT_RANGELIMITS;
74 self.firecheck_flags = TFL_FIRECHECK_AMMO_OWN | TFL_FIRECHECK_AMMO_OTHER | TFL_FIRECHECK_DISTANCES | TFL_FIRECHECK_DEAD;
75 self.shoot_flags = TFL_SHOOT_HITALLVALID;
76 self.aim_flags = TFL_AIM_NO;
77 self.track_flags = TFL_TRACK_NO;
79 self.tur_head.scale = 0.75;
80 self.tur_head.avelocity = '0 50 0';
82 self.turret_firecheckfunc = turret_fusionreactor_firecheck;
86 METHOD(FusionReactor, tr_precache, bool(FusionReactor thistur))
93 METHOD(FusionReactor, tr_setup, bool(FusionReactor thistur))
97 METHOD(FusionReactor, tr_precache, bool(FusionReactor thistur))
103 #endif // REGISTER_TURRET