1 #include "fusionreactor.qh"
5 bool turret_fusionreactor_firecheck(entity this)
7 if (this.attack_finished_single[0] > time)
10 if (IS_DEAD(this.enemy))
13 if (this.enemy == NULL)
16 if (this.ammo < this.shot_dmg)
19 if (this.enemy.ammo >= this.enemy.ammo_max)
22 if(vdist(this.enemy.origin - this.origin, >, this.target_range))
25 if(this.team != this.enemy.team)
28 if(!(this.enemy.ammo_flags & TFL_AMMO_ENERGY))
34 spawnfunc(turret_fusionreactor) { if (!turret_initialize(this, TUR_FUSIONREACTOR)) delete(this); }
36 METHOD(FusionReactor, tr_attack, void(FusionReactor this, entity it))
38 it.enemy.ammo = min(it.enemy.ammo + it.shot_dmg,it.enemy.ammo_max);
39 vector fl_org = 0.5 * (it.enemy.absmin + it.enemy.absmax);
40 te_smallflash(fl_org);
42 METHOD(FusionReactor, tr_think, void(FusionReactor thistur, entity it))
44 it.tur_head.avelocity = '0 250 0' * (it.ammo / it.ammo_max);
46 METHOD(FusionReactor, tr_setup, void(FusionReactor this, entity it))
48 it.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE;
49 it.target_select_flags = TFL_TARGETSELECT_TEAMCHECK | TFL_TARGETSELECT_OWNTEAM | TFL_TARGETSELECT_RANGELIMITS;
50 it.firecheck_flags = TFL_FIRECHECK_AMMO_OWN | TFL_FIRECHECK_AMMO_OTHER | TFL_FIRECHECK_DISTANCES | TFL_FIRECHECK_DEAD;
51 it.shoot_flags = TFL_SHOOT_HITALLVALID;
52 it.aim_flags = TFL_AIM_NO;
53 it.track_flags = TFL_TRACK_NO;
55 it.tur_head.scale = 0.75;
56 it.tur_head.avelocity = '0 50 0';
58 it.turret_firecheckfunc = turret_fusionreactor_firecheck;