1 void spawnfunc_turret_fusionreactor();
2 void turret_fusionreactor_dinit();
3 void turret_fusionreactor_fire();
5 float turret_fusionreactor_firecheck()
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;
18 void turret_fusionreactor_fire()
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);
28 void turret_fusionreactor_postthink()
31 f = self.ammo / self.ammo_max;
32 self.tur_head.avelocity = '0 250 0' * f;
35 void turret_fusionreactor_respawnhook()
37 self.tur_head.avelocity = '0 50 0';
40 void turret_fusionreactor_dinit()
42 if (self.netname == "") self.netname = "Fusionreactor";
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;
53 if (turret_stdproc_init("fusreac_std",0,"models/turrets/base.md3","models/turrets/reactor.md3") == 0)
58 self.tur_head.scale = 0.75;
59 self.tur_head.avelocity = '0 50 0';
60 setsize(self,'-34 -34 0','34 34 90');
62 self.turret_firecheckfunc = turret_fusionreactor_firecheck;
63 self.turret_firefunc = turret_fusionreactor_fire;
64 self.turret_postthink = turret_fusionreactor_postthink;
67 /*QUAKED turret_fusionreactor (0 .5 .8) ?
69 void spawnfunc_turret_fusionreactor()
71 precache_model ("models/turrets/reactor.md3");
72 precache_model ("models/turrets/base.md3");
74 self.think = turret_fusionreactor_dinit;
75 self.nextthink = time + 0.5;