void GrapplingHook_Stop()
{
pointparticles(particleeffectnum("grapple_impact"), self.origin, '0 0 0', 1);
- sound (self, CHAN_PROJECTILE, "weapons/hook_impact.wav", VOL_BASE, ATTN_NORM);
+ sound (self, CH_SHOTS, "weapons/hook_impact.wav", VOL_BASE, ATTN_NORM);
self.state = 1;
self.think = GrapplingHookThink;
{
WriteByte(MSG_ENTITY, ENT_CLIENT_HOOK);
sf = sf & 0x7F;
- if(sound_allowed(MSG_BROADCAST, self.owner))
+ if(sound_allowed(MSG_BROADCAST, self.realowner))
sf |= 0x80;
WriteByte(MSG_ENTITY, sf);
if(sf & 1)
{
- WriteByte(MSG_ENTITY, num_for_edict(self.owner));
+ WriteByte(MSG_ENTITY, num_for_edict(self.realowner));
}
if(sf & 2)
{
{
float spd, dist, minlength, pullspeed, ropestretch, ropeairfriction, rubberforce, newlength, rubberforce_overstretch, s;
vector dir, org, end, v0, dv, v, myorg, vs;
- if(self.owner.health <= 0 || self.owner.hook != self) // how did that happen?
+ if(self.realowner.health <= 0 || self.realowner.hook != self) // how did that happen?
{ // well, better fix it anyway
remove(self);
return;
}
if(LostMovetypeFollow(self))
{
- RemoveGrapplingHook(self.owner);
+ RemoveGrapplingHook(self.realowner);
return;
}
if(self.aiment)
self.nextthink = time;
- s = self.owner.cvar_cl_gunalign;
+ s = self.realowner.cvar_cl_gunalign;
if(s != 1 && s != 2 && s != 4)
s = 3; // default value
--s;
vs = hook_shotorigin[s];
- makevectors(self.owner.v_angle);
- org = self.owner.origin + self.owner.view_ofs + v_forward * vs_x + v_right * -vs_y + v_up * vs_z;
- myorg = WarpZone_RefSys_TransformOrigin(self.owner, self, org);
+ makevectors(self.realowner.v_angle);
+ org = self.realowner.origin + self.realowner.view_ofs + v_forward * vs_x + v_right * -vs_y + v_up * vs_z;
+ myorg = WarpZone_RefSys_TransformOrigin(self.realowner, self, org);
if(self.hook_length < 0)
self.hook_length = vlen(myorg - self.origin);
if(autocvar_g_grappling_hook_tarzan)
{
- v = v0 = WarpZone_RefSys_TransformVelocity(self.owner, self, self.owner.velocity);
+ v = v0 = WarpZone_RefSys_TransformVelocity(self.realowner, self, self.realowner.velocity);
// first pull the rope...
- if(self.owner.hook_state & HOOK_PULLING)
+ if(self.realowner.hook_state & HOOK_PULLING)
{
newlength = self.hook_length;
newlength = max(newlength - pullspeed * frametime, minlength);
self.hook_length = newlength;
}
- if(self.owner.hook_state & HOOK_RELEASING)
+ if(self.realowner.hook_state & HOOK_RELEASING)
{
newlength = dist;
self.hook_length = newlength;
v = v - dv * 0.5;
self.aiment.velocity = self.aiment.velocity - dv * 0.5;
self.aiment.flags &~= FL_ONGROUND;
- self.aiment.pusher = self.owner;
+ self.aiment.pusher = self.realowner;
self.aiment.pushltime = time + autocvar_g_maxpushtime;
}
}
- self.owner.flags &~= FL_ONGROUND;
+ self.realowner.flags &~= FL_ONGROUND;
}
- self.owner.velocity = WarpZone_RefSys_TransformVelocity(self, self.owner, v);
+ self.realowner.velocity = WarpZone_RefSys_TransformVelocity(self, self.realowner, v);
}
else
{
spd = pullspeed;
if(spd < 50)
spd = 0;
- self.owner.velocity = dir*spd;
- self.owner.movetype = MOVETYPE_FLY;
+ self.realowner.velocity = dir*spd;
+ self.realowner.movetype = MOVETYPE_FLY;
- self.owner.flags &~= FL_ONGROUND;
+ self.realowner.flags &~= FL_ONGROUND;
}
}
makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0');
- myorg = WarpZone_RefSys_TransformOrigin(self, self.owner, self.origin); // + v_forward * (-9);
+ myorg = WarpZone_RefSys_TransformOrigin(self, self.realowner, self.origin); // + v_forward * (-9);
if(myorg != self.hook_start)
{
void GrapplingHookTouch (void)
{
- if(SUB_OwnerCheck())
- return;
- if(SUB_NoImpactCheck())
- {
- RemoveGrapplingHook(self.owner);
- return;
- }
PROJECTILE_TOUCH;
GrapplingHook_Stop();
WarpZone_RefSys_BeginAddingIncrementally(self, self.aiment);
}
- //self.owner.disableclientprediction = TRUE;
+ //self.realowner.disableclientprediction = TRUE;
}
void GrapplingHook_Damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
self.health = self.health - damage;
if (self.health <= 0)
{
- if(attacker != self.owner)
+ if(attacker != self.realowner)
{
- self.owner.pusher = attacker;
- self.owner.pushltime = time + autocvar_g_maxpushtime;
+ self.realowner.pusher = attacker;
+ self.realowner.pushltime = time + autocvar_g_maxpushtime;
}
- RemoveGrapplingHook(self.owner);
+ RemoveGrapplingHook(self.realowner);
}
}
}
--s;
vs = hook_shotorigin[s];
- // UGLY WORKAROUND: play this on CHAN_WEAPON2 so it can't cut off fire sounds
- sound (self, CHAN_WEAPON2, "weapons/hook_fire.wav", VOL_BASE, ATTN_NORM);
+ // UGLY WORKAROUND: play this on CH_WEAPON_B so it can't cut off fire sounds
+ sound (self, CH_WEAPON_B, "weapons/hook_fire.wav", VOL_BASE, ATTN_NORM);
org = self.origin + self.view_ofs + v_forward * vs_x + v_right * -vs_y + v_up * vs_z;
tracebox(self.origin + self.view_ofs, '-3 -3 -3', '3 3 3', org, MOVE_NORMAL, self);
pointparticles(particleeffectnum("grapple_muzzleflash"), org, '0 0 0', 1);
missile = WarpZone_RefSys_SpawnSameRefSys(self);
- missile.owner = self;
+ missile.owner = missile.realowner = self;
self.hook = missile;
missile.classname = "grapplinghook";