.int fireflag;
-METHOD(PhaserTurretAttack, wr_think, void(entity thiswep, bool fire1, bool fire2))
+METHOD(PhaserTurretAttack, wr_think, void(entity thiswep, entity actor, bool fire1, bool fire2))
{
- SELFPARAM();
- bool isPlayer = IS_PLAYER(self);
+ bool isPlayer = IS_PLAYER(actor);
if (fire1)
- if (!isPlayer || weapon_prepareattack(false, WEP_CVAR_PRI(electro, refire))) {
+ if (!isPlayer || weapon_prepareattack(actor, false, WEP_CVAR_PRI(electro, refire))) {
if (isPlayer) {
- turret_initparams(self);
- W_SetupShot_Dir(self, v_forward, false, 0, W_Sound("electro_fire"), CH_WEAPON_B, 0);
- self.tur_shotdir_updated = w_shotdir;
- self.tur_shotorg = w_shotorg;
- self.tur_head = self;
- self.shot_speed = 1;
- weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_PRI(electro, animtime), w_ready);
+ turret_initparams(actor);
+ W_SetupShot_Dir(actor, v_forward, false, 0, W_Sound("electro_fire"), CH_WEAPON_B, 0);
+ actor.tur_shotdir_updated = w_shotdir;
+ actor.tur_shotorg = w_shotorg;
+ actor.tur_head = actor;
+ actor.shot_speed = 1;
+ weapon_thinkf(actor, WFRAME_FIRE1, WEP_CVAR_PRI(electro, animtime), w_ready);
}
entity beam = spawn();
beam.ticrate = 0.1; //autocvar_sys_ticrate;
beam.effects = EF_LOWPRECISION;
beam.solid = SOLID_NOT;
beam.think = beam_think;
- beam.cnt = time + self.shot_speed;
+ beam.cnt = time + actor.shot_speed;
beam.shot_spread = time + 2;
beam.nextthink = time;
- beam.owner = self;
- beam.shot_dmg = self.shot_dmg / (self.shot_speed / beam.ticrate);
- beam.scale = self.target_range / 256;
+ beam.owner = actor;
+ beam.shot_dmg = actor.shot_dmg / (actor.shot_speed / beam.ticrate);
+ beam.scale = actor.target_range / 256;
beam.movetype = MOVETYPE_NONE;
- beam.enemy = self.enemy;
+ beam.enemy = actor.enemy;
beam.bot_dodge = true;
beam.bot_dodgerating = beam.shot_dmg;
sound (beam, CH_SHOTS_SINGLE, SND_TUR_PHASER, VOL_BASE, ATTEN_NORM);
- self.fireflag = 1;
+ actor.fireflag = 1;
- beam.attack_finished_single = self.attack_finished_single;
- self.attack_finished_single = time; // + autocvar_sys_ticrate;
+ beam.attack_finished_single = actor.attack_finished_single;
+ actor.attack_finished_single = time; // + autocvar_sys_ticrate;
- setattachment(beam,self.tur_head, "tag_fire");
+ setattachment(beam,actor.tur_head, "tag_fire");
- soundat (self, trace_endpos, CH_SHOTS, SND(NEXIMPACT), VOL_BASE, ATTEN_NORM);
+ soundat (actor, trace_endpos, CH_SHOTS, SND(NEXIMPACT), VOL_BASE, ATTEN_NORM);
if (!isPlayer)
- if (self.tur_head.frame == 0)
- self.tur_head.frame = 1;
+ if (actor.tur_head.frame == 0)
+ actor.tur_head.frame = 1;
}
}