5 /* function */ t_phaser,
6 /* spawnflags */ TUR_FLAG_SNIPER | TUR_FLAG_HITSCAN | TUR_FLAG_PLAYER,
7 /* mins,maxs */ '-32 -32 0', '32 32 64',
8 /* model */ "base.md3",
9 /* head_model */ "phaser.md3",
10 /* netname */ "phaser",
11 /* fullname */ _("Phaser Cannon")
19 float turret_phaser_firecheck()
21 if (self.fireflag != 0) return 0;
22 return turret_firecheck();
27 if ((time > self.cnt) || (self.owner.deadflag != DEAD_NO))
29 self.owner.attack_finished_single = time + self.owner.shot_refire;
30 self.owner.fireflag = 2;
31 self.owner.tur_head.frame = 10;
32 sound (self, CH_SHOTS_SINGLE, SND_Null, VOL_BASE, ATTEN_NORM);
37 turret_do_updates(self.owner);
39 if (time - self.shot_spread > 0)
41 self.shot_spread = time + 2;
42 sound (self, CH_SHOTS_SINGLE, SND_TUR_PHASER, VOL_BASE, ATTEN_NORM);
46 self.nextthink = time + self.ticrate;
48 self.owner.attack_finished_single = time + frametime;
50 FireImoBeam ( self.tur_shotorg,
51 self.tur_shotorg + self.tur_shotdir_updated * self.target_range,
52 '-1 -1 -1' * self.shot_radius,
53 '1 1 1' * self.shot_radius,
59 self.scale = vlen(self.owner.tur_shotorg - trace_endpos) / 256;
63 void spawnfunc_turret_phaser() { SELFPARAM(); if(!turret_initialize(TUR_PHASER.m_id)) remove(self); }
65 float t_phaser(float req)
74 beam.ticrate = 0.1; //autocvar_sys_ticrate;
75 setmodel(beam, MDL_TUR_PHASER_BEAM);
76 beam.effects = EF_LOWPRECISION;
77 beam.solid = SOLID_NOT;
78 beam.think = beam_think;
79 beam.cnt = time + self.shot_speed;
80 beam.shot_spread = time + 2;
81 beam.nextthink = time;
83 beam.shot_dmg = self.shot_dmg / (self.shot_speed / beam.ticrate);
84 beam.scale = self.target_range / 256;
85 beam.movetype = MOVETYPE_NONE;
86 beam.enemy = self.enemy;
87 beam.bot_dodge = true;
88 beam.bot_dodgerating = beam.shot_dmg;
89 sound (beam, CH_SHOTS_SINGLE, SND_TUR_PHASER, VOL_BASE, ATTEN_NORM);
92 beam.attack_finished_single = self.attack_finished_single;
93 self.attack_finished_single = time; // + autocvar_sys_ticrate;
95 setattachment(beam,self.tur_head,"tag_fire");
97 soundat (self, trace_endpos, CH_SHOTS, SND(NEXIMPACT), VOL_BASE, ATTEN_NORM);
99 if (self.tur_head.frame == 0)
100 self.tur_head.frame = 1;
106 if (self.tur_head.frame != 0)
108 if (self.fireflag == 1)
110 if (self.tur_head.frame == 10)
111 self.tur_head.frame = 1;
113 self.tur_head.frame = self.tur_head.frame +1;
115 else if (self.fireflag == 2 )
117 self.tur_head.frame = self.tur_head.frame +1;
118 if (self.tur_head.frame == 15)
120 self.tur_head.frame = 0;
134 self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIEVE;
135 self.aim_flags = TFL_AIM_LEAD;
137 self.turret_firecheckfunc = turret_phaser_firecheck;
152 float t_phaser(float req)
170 #endif // REGISTER_TURRET