1 void spawnfunc_turret_fusionreactor();
2 void turret_fusionreactor_dinit();
3 void turret_fusionreactor_fire();
5 void turret_fusionreactor_fire()
9 self.enemy.ammo = min(self.enemy.ammo + self.shot_dmg,self.enemy.ammo_max);
10 if(g_td) // auto repair?
12 self.enemy.health = min(self.enemy.health + self.shot_dmg,self.enemy.max_health);
13 self.enemy.tur_health = min(self.enemy.tur_health + self.shot_dmg,self.enemy.max_health);
14 self.enemy.SendFlags |= TNSF_STATUS;
16 if(g_rts) // monster healing
18 self.enemy.heal_delay = time + 0.5;
19 self.enemy.health = min(self.enemy.health + self.shot_dmg,self.enemy.max_health);
20 WaypointSprite_UpdateHealth(self.enemy.sprite, self.enemy.health);
22 fl_org = 0.5 * (self.enemy.absmin + self.enemy.absmax);
23 te_smallflash(fl_org);
26 void turret_fusionreactor_postthink()
28 self.tur_head.avelocity = '0 250 0' * (self.ammo / self.ammo_max);
32 void turret_fusionreactor_respawnhook()
34 self.tur_head.avelocity = '0 50 0';
39 ** Preforms pre-fire checks for fusionreactor
41 float turret_fusionreactor_firecheck()
43 if (self.attack_finished_single > time)
46 if (self.enemy.deadflag != DEAD_NO)
49 if (self.enemy == world)
52 if (self.ammo < self.shot_dmg)
55 if (vlen(self.enemy.origin - self.origin) > self.target_range)
60 if(self.realowner != self.enemy.realowner)
63 if(self.enemy.turrcaps_flags & TFL_TURRCAPS_AMMOSOURCE)
66 if(self.enemy.health >= self.enemy.max_health)
71 if(IsDifferentTeam(self, self.enemy))
74 if not(self.enemy.flags & FL_MONSTER)
77 if(self.enemy.health >= self.enemy.max_health)
80 if(time < self.enemy.heal_delay)
83 return 1; // this is for monsters, so don't do the other checks
86 if (self.enemy.ammo >= self.enemy.ammo_max)
89 if(teamplay && self.team != self.enemy.team)
92 if not (self.enemy.ammo_flags & TFL_AMMO_ENERGY)
98 void turret_fusionreactor_dinit()
100 if (self.netname == "") self.netname = "Fusionreactor";
102 self.turrcaps_flags = TFL_TURRCAPS_SUPPORT | TFL_TURRCAPS_AMMOSOURCE;
103 self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE;
104 self.target_select_flags = TFL_TARGETSELECT_TEAMCHECK | TFL_TARGETSELECT_OWNTEAM | TFL_TARGETSELECT_RANGELIMTS;
105 self.firecheck_flags = TFL_FIRECHECK_OWM_AMMO | TFL_FIRECHECK_OTHER_AMMO | TFL_FIRECHECK_DISTANCES | TFL_FIRECHECK_DEAD;
106 self.shoot_flags = TFL_SHOOT_HITALLVALID;
107 self.aim_flags = TFL_AIM_NO;
108 self.track_flags = TFL_TRACK_NO;
109 // self.turret_respawnhook = turret_fusionreactor_respawnhook;
111 if (turret_stdproc_init("fusreac_std", "models/turrets/base.md3", "models/turrets/reactor.md3", TID_FUSION) == 0)
116 self.tur_head.scale = 0.75;
117 self.tur_head.avelocity = '0 50 0';
118 setsize(self,'-34 -34 0','34 34 90');
120 self.turret_firecheckfunc = turret_fusionreactor_firecheck;
121 self.turret_firefunc = turret_fusionreactor_fire;
122 self.turret_postthink = turret_fusionreactor_postthink;
125 /*QUAKED turret_fusionreactor (0 .5 .8) ?
127 void spawnfunc_turret_fusionreactor()
129 precache_model ("models/turrets/reactor.md3");
130 precache_model ("models/turrets/base.md3");
132 self.think = turret_fusionreactor_dinit;
133 self.nextthink = time + 0.5;