From: Mario Date: Mon, 3 Oct 2016 12:42:15 +0000 (+1000) Subject: Fix hook alignment X-Git-Tag: xonotic-v0.8.2~326^2~69^2~1 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=ce723f0c61ceb0fbc1288fe472b0df14003d8b17;p=xonotic%2Fxonotic-data.pk3dir.git Fix hook alignment --- diff --git a/qcsrc/common/weapons/weapon/arc.qc b/qcsrc/common/weapons/weapon/arc.qc index 6f8b6691a..889222d4c 100644 --- a/qcsrc/common/weapons/weapon/arc.qc +++ b/qcsrc/common/weapons/weapon/arc.qc @@ -1304,7 +1304,7 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) if(isnew) { - int gunalign = W_GunAlign(viewmodels[slot], STAT(GUNALIGN)); + int gunalign = W_GunAlign(viewmodels[slot], STAT(GUNALIGN)) - 1; this.beam_shotorigin = arc_shotorigin[gunalign]; diff --git a/qcsrc/common/weapons/weapon/hook.qc b/qcsrc/common/weapons/weapon/hook.qc index db2ac45d6..964877425 100644 --- a/qcsrc/common/weapons/weapon/hook.qc +++ b/qcsrc/common/weapons/weapon/hook.qc @@ -379,7 +379,7 @@ void Draw_GrapplingHook(entity this) InterpolateOrigin_Do(this); - int s = viewmodels[this.cnt].m_gunalign; //W_GunAlign(NULL, STAT(GUNALIGN)); + int s = viewmodels[this.cnt].m_gunalign - 1; //W_GunAlign(NULL, STAT(GUNALIGN)); switch(this.HookType) { diff --git a/qcsrc/server/g_hook.qc b/qcsrc/server/g_hook.qc index 636e8c6aa..32cce331a 100644 --- a/qcsrc/server/g_hook.qc +++ b/qcsrc/server/g_hook.qc @@ -172,7 +172,7 @@ void GrapplingHookThink(entity this) this.nextthink = time; - int s = W_GunAlign(this.realowner.(weaponentity), STAT(GUNALIGN, this.realowner)); + int s = W_GunAlign(this.realowner.(weaponentity), STAT(GUNALIGN, this.realowner)) - 1; vs = hook_shotorigin[s]; makevectors(this.realowner.v_angle); @@ -362,28 +362,24 @@ void GrapplingHook_Damage(entity this, entity inflictor, entity attacker, float void FireGrapplingHook(entity actor, .entity weaponentity) { - entity missile; - vector org; - vector vs; - if(forbidWeaponUse(actor)) return; if(actor.vehicle) return; makevectors(actor.v_angle); - int s = W_GunAlign(actor.(weaponentity), STAT(GUNALIGN, actor)); - vs = hook_shotorigin[s]; + int s = W_GunAlign(actor.(weaponentity), STAT(GUNALIGN, actor)) - 1; + vector vs = hook_shotorigin[s]; // UGLY WORKAROUND: play this on CH_WEAPON_B so it can't cut off fire sounds sound (actor, CH_WEAPON_B, SND_HOOK_FIRE, VOL_BASE, ATTEN_NORM); - org = actor.origin + actor.view_ofs + v_forward * vs.x + v_right * -vs.y + v_up * vs.z; + vector org = actor.origin + actor.view_ofs + v_forward * vs.x + v_right * -vs.y + v_up * vs.z; tracebox(actor.origin + actor.view_ofs, '-3 -3 -3', '3 3 3', org, MOVE_NORMAL, actor); org = trace_endpos; Send_Effect(EFFECT_HOOK_MUZZLEFLASH, org, '0 0 0', 1); - missile = WarpZone_RefSys_SpawnSameRefSys(actor); + entity missile = WarpZone_RefSys_SpawnSameRefSys(actor); missile.owner = missile.realowner = actor; actor.(weaponentity).hook = missile; missile.weaponentity_fld = weaponentity;