1 void spawnfunc_turret_plasma();
2 void spawnfunc_turret_plasma_dual();
4 void turret_plasma_std_init();
5 void turret_plasma_dual_init();
7 void turret_plasma_attack();
10 void turret_plasma_postthink()
12 if (self.tur_head.frame != 0)
13 self.tur_head.frame = self.tur_head.frame + 1;
15 if (self.tur_head.frame > 5)
16 self.tur_head.frame = 0;
19 void turret_plasma_dual_postthink()
21 if ((self.tur_head.frame != 0) && (self.tur_head.frame != 3))
22 self.tur_head.frame = self.tur_head.frame + 1;
24 if (self.tur_head.frame > 6)
25 self.tur_head.frame = 0;
28 void turret_plasma_minsta_attack (void)
31 flying = IsFlying(self); // do this BEFORE to make the trace values from FireRailgunBullet last
33 FireRailgunBullet (self.tur_shotorg, self.tur_shotorg + self.tur_shotdir_updated * MAX_SHOT_DISTANCE, 10000000000,
34 800, 0, 0, 0, 0, DEATH_TURRET_PLASMA);
37 pointparticles(particleeffectnum("nex_muzzleflash"), self.tur_shotorg, self.tur_shotdir_updated * 1000, 1);
39 // teamcolor / hit beam effect
41 v = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos);
46 case NUM_TEAM_1: // Red
47 WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3RED"), self.tur_shotorg, v);
49 case NUM_TEAM_2: // Blue
50 WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3BLUE"), self.tur_shotorg, v);
52 case NUM_TEAM_3: // Yellow
53 WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3YELLOW"), self.tur_shotorg, v);
55 case NUM_TEAM_4: // Pink
56 WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3PINK"), self.tur_shotorg, v);
61 WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3"), self.tur_shotorg, v);
62 if (self.tur_head.frame == 0)
63 self.tur_head.frame = 1;
66 void turret_plasma_attack()
68 entity missile = turret_projectile("weapons/hagar_fire.wav", 1, 0, DEATH_TURRET_PLASMA, PROJECTILE_ELECTRO_BEAM, TRUE, TRUE);
69 missile.missile_flags = MIF_SPLASH;
71 pointparticles(particleeffectnum("laser_muzzleflash"), self.tur_shotorg, self.tur_shotdir_updated * 1000, 1);
72 if (self.tur_head.frame == 0)
73 self.tur_head.frame = 1;
76 void turret_plasma_dual_attack()
78 entity missile = turret_projectile("weapons/hagar_fire.wav", 1, 0, DEATH_TURRET_PLASMA, PROJECTILE_ELECTRO_BEAM, TRUE, TRUE);
79 missile.missile_flags = MIF_SPLASH;
80 pointparticles(particleeffectnum("laser_muzzleflash"), self.tur_shotorg, self.tur_shotdir_updated * 1000, 1);
81 self.tur_head.frame += 1;
84 void turret_plasma_std_init()
86 if (self.netname == "") self.netname = "Plasma Cannon";
89 self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
92 self.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE | TFL_AIM_GROUNDGROUND;
93 self.turrcaps_flags = TFL_TURRCAPS_RADIUSDMG | TFL_TURRCAPS_MEDPROJ | TFL_TURRCAPS_PLAYERKILL;
95 if (turret_stdproc_init("plasma_std", "models/turrets/base.md3", "models/turrets/plasma.md3", TID_PLASMA) == 0)
101 self.damage_flags |= TFL_DMG_HEADSHAKE;
102 self.firecheck_flags |= TFL_FIRECHECK_AFF;
104 // Our fireing routine
106 self.turret_firefunc = turret_plasma_minsta_attack;
108 self.turret_firefunc = turret_plasma_attack;
110 // Custom per turret frame stuff. usualy animation.
111 self.turret_postthink = turret_plasma_postthink;
112 turret_do_updates(self);
116 void turret_plasma_dual_init()
118 if (self.netname == "") self.netname = "Dual Plasma Cannon";
121 self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
123 // How to aim at targets
124 self.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE | TFL_AIM_GROUNDGROUND ;
125 self.turrcaps_flags = TFL_TURRCAPS_RADIUSDMG | TFL_TURRCAPS_MEDPROJ | TFL_TURRCAPS_PLAYERKILL;
127 if (turret_stdproc_init("plasma_dual", "models/turrets/base.md3", "models/turrets/plasmad.md3", TID_PLASMA_DUAL) == 0)
133 self.damage_flags |= TFL_DMG_HEADSHAKE;
134 self.firecheck_flags |= TFL_FIRECHECK_AFF;
136 // Our fireing routine
137 self.turret_firefunc = turret_plasma_dual_attack;
139 // Custom per turret frame stuff. usualy animation.
140 self.turret_postthink = turret_plasma_dual_postthink;
145 * Basic moderate (std) or fast (dual) fireing, short-mid range energy cannon.
146 * Not too mutch of a therat on its own, but can be rather dangerous in groups.
147 * Regenerates ammo slowly, support with a fusionreactor(s) to do some real damage.
150 /*QUAKED turret_plasma (0 .5 .8) ?
152 void spawnfunc_turret_plasma()
154 g_turrets_common_precash();
155 precache_model ("models/turrets/plasma.md3");
156 precache_model ("models/turrets/base.md3");
158 self.think = turret_plasma_std_init;
159 self.nextthink = time + 0.5;
162 /*QUAKED turret_plasma_dual (0 .5 .8) ?
164 void spawnfunc_turret_plasma_dual()
167 precache_model ("models/turrets/plasmad.md3");
168 precache_model ("models/turrets/base.md3");
170 self.think = turret_plasma_dual_init;
171 self.nextthink = time + 0.5;