From cd3951a82de82e86d5bccdf61cfe3dba7fb8289d Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 30 Sep 2016 01:23:30 +1000 Subject: [PATCH] Fix another hardcoded slot 0 --- qcsrc/common/mutators/mutator/nix/sv_nix.qc | 2 +- qcsrc/common/mutators/mutator/overkill/hmg.qc | 2 +- qcsrc/common/t_items.qc | 10 +++++----- qcsrc/common/weapons/weapon/crylink.qc | 2 +- qcsrc/common/weapons/weapon/devastator.qc | 4 ++-- qcsrc/common/weapons/weapon/hagar.qc | 2 +- qcsrc/common/weapons/weapon/hlac.qc | 2 +- qcsrc/common/weapons/weapon/hook.qc | 2 +- qcsrc/common/weapons/weapon/machinegun.qc | 6 +++--- qcsrc/common/weapons/weapon/minelayer.qc | 4 ++-- qcsrc/common/weapons/weapon/shotgun.qc | 4 ++-- qcsrc/server/client.qc | 2 +- qcsrc/server/g_damage.qc | 2 +- qcsrc/server/miscfunctions.qc | 2 +- qcsrc/server/weapons/hitplot.qc | 3 +-- qcsrc/server/weapons/hitplot.qh | 2 +- qcsrc/server/weapons/selection.qc | 4 ++-- qcsrc/server/weapons/selection.qh | 3 +-- qcsrc/server/weapons/throwing.qc | 2 +- qcsrc/server/weapons/tracing.qc | 2 +- qcsrc/server/weapons/weaponsystem.qc | 4 ++-- 21 files changed, 32 insertions(+), 34 deletions(-) diff --git a/qcsrc/common/mutators/mutator/nix/sv_nix.qc b/qcsrc/common/mutators/mutator/nix/sv_nix.qc index 0a2bc8181..7804c0732 100644 --- a/qcsrc/common/mutators/mutator/nix/sv_nix.qc +++ b/qcsrc/common/mutators/mutator/nix/sv_nix.qc @@ -65,7 +65,7 @@ REGISTER_MUTATOR(nix, cvar("g_nix") && !cvar("g_instagib") && !cvar("g_overkill" it.weapons = start_weapons; .entity weaponentity = weaponentities[0]; // TODO: unhardcode if(!client_hasweapon(it, it.(weaponentity).m_weapon, weaponentity, true, false)) - it.(weaponentity).m_switchweapon = w_getbestweapon(it); + it.(weaponentity).m_switchweapon = w_getbestweapon(it, weaponentity); }); } diff --git a/qcsrc/common/mutators/mutator/overkill/hmg.qc b/qcsrc/common/mutators/mutator/overkill/hmg.qc index c04607e99..8a1de98ad 100644 --- a/qcsrc/common/mutators/mutator/overkill/hmg.qc +++ b/qcsrc/common/mutators/mutator/overkill/hmg.qc @@ -22,7 +22,7 @@ void W_HeavyMachineGun_Attack_Auto(Weapon thiswep, entity actor, .entity weapone if((!thiswep.wr_checkammo1(thiswep, actor, weaponentity) && !(actor.items & IT_UNLIMITED_WEAPON_AMMO)) || (!(actor.items & IT_SUPERWEAPON) && !(actor.items & IT_UNLIMITED_SUPERWEAPONS))) { - W_SwitchWeapon_Force(actor, w_getbestweapon(actor), weaponentity); + W_SwitchWeapon_Force(actor, w_getbestweapon(actor, weaponentity), weaponentity); w_ready(thiswep, actor, weaponentity, fire); return; } diff --git a/qcsrc/common/t_items.qc b/qcsrc/common/t_items.qc index 1753f9d1f..3c80ae01b 100644 --- a/qcsrc/common/t_items.qc +++ b/qcsrc/common/t_items.qc @@ -684,7 +684,7 @@ float Item_GiveTo(entity item, entity player) // if the player is using their best weapon before items are given, they // probably want to switch to an even better weapon after items are given if (player.autoswitch) - if (player.(weaponentity).m_switchweapon == w_getbestweapon(player)) + if (player.(weaponentity).m_switchweapon == w_getbestweapon(player, weaponentity)) _switchweapon = true; if (!(player.weapons & WepSet_FromWeapon(player.(weaponentity).m_switchweapon))) @@ -767,8 +767,8 @@ LABEL(skip) } if (_switchweapon) - if (player.(weaponentity).m_switchweapon != w_getbestweapon(player)) - W_SwitchWeapon_Force(player, w_getbestweapon(player), weaponentity); + if (player.(weaponentity).m_switchweapon != w_getbestweapon(player, weaponentity)) + W_SwitchWeapon_Force(player, w_getbestweapon(player, weaponentity), weaponentity); return 1; } @@ -1659,7 +1659,7 @@ float GiveItems(entity e, float beginarg, float endarg) _switchweapon = false; if (e.autoswitch) - if (e.(weaponentity).m_switchweapon == w_getbestweapon(e)) + if (e.(weaponentity).m_switchweapon == w_getbestweapon(e, weaponentity)) _switchweapon = true; e.strength_finished = max(0, e.strength_finished - time); @@ -1828,7 +1828,7 @@ float GiveItems(entity e, float beginarg, float endarg) if (!(e.weapons & WepSet_FromWeapon(e.(weaponentity).m_switchweapon))) _switchweapon = true; if(_switchweapon) - W_SwitchWeapon_Force(e, w_getbestweapon(e), weaponentity); + W_SwitchWeapon_Force(e, w_getbestweapon(e, weaponentity), weaponentity); return got; } diff --git a/qcsrc/common/weapons/weapon/crylink.qc b/qcsrc/common/weapons/weapon/crylink.qc index 570e14fbb..8b09240b6 100644 --- a/qcsrc/common/weapons/weapon/crylink.qc +++ b/qcsrc/common/weapons/weapon/crylink.qc @@ -638,7 +638,7 @@ METHOD(Crylink, wr_think, void(entity thiswep, entity actor, .entity weaponentit { // ran out of ammo! actor.cnt = WEP_CRYLINK.m_id; - actor.(weaponentity).m_switchweapon = w_getbestweapon(actor); + actor.(weaponentity).m_switchweapon = w_getbestweapon(actor, weaponentity); } } } diff --git a/qcsrc/common/weapons/weapon/devastator.qc b/qcsrc/common/weapons/weapon/devastator.qc index 6ca5fa101..13a13927f 100644 --- a/qcsrc/common/weapons/weapon/devastator.qc +++ b/qcsrc/common/weapons/weapon/devastator.qc @@ -124,7 +124,7 @@ void W_Devastator_Explode(entity this, entity directhitentity) this.realowner.cnt = WEP_DEVASTATOR.m_id; int slot = weaponslot(weaponentity); ATTACK_FINISHED(this.realowner, slot) = time; - this.realowner.(weaponentity).m_switchweapon = w_getbestweapon(this.realowner); + this.realowner.(weaponentity).m_switchweapon = w_getbestweapon(this.realowner, weaponentity); } } delete(this); @@ -210,7 +210,7 @@ void W_Devastator_DoRemoteExplode(entity this, .entity weaponentity) this.realowner.cnt = WEP_DEVASTATOR.m_id; int slot = weaponslot(weaponentity); ATTACK_FINISHED(this.realowner, slot) = time; - this.realowner.(weaponentity).m_switchweapon = w_getbestweapon(this.realowner); + this.realowner.(weaponentity).m_switchweapon = w_getbestweapon(this.realowner, weaponentity); } } delete(this); diff --git a/qcsrc/common/weapons/weapon/hagar.qc b/qcsrc/common/weapons/weapon/hagar.qc index f74de39b0..e6c1f8d26 100644 --- a/qcsrc/common/weapons/weapon/hagar.qc +++ b/qcsrc/common/weapons/weapon/hagar.qc @@ -430,7 +430,7 @@ void W_Hagar_Attack_Auto(Weapon thiswep, entity actor, .entity weaponentity, int if(!thiswep.wr_checkammo1(thiswep, actor, weaponentity)) if(!(actor.items & IT_UNLIMITED_WEAPON_AMMO)) { - W_SwitchWeapon_Force(actor, w_getbestweapon(actor), weaponentity); + W_SwitchWeapon_Force(actor, w_getbestweapon(actor, weaponentity), weaponentity); w_ready(thiswep, actor, weaponentity, fire); return; } diff --git a/qcsrc/common/weapons/weapon/hlac.qc b/qcsrc/common/weapons/weapon/hlac.qc index 3fe8e8c04..161f402be 100644 --- a/qcsrc/common/weapons/weapon/hlac.qc +++ b/qcsrc/common/weapons/weapon/hlac.qc @@ -179,7 +179,7 @@ void W_HLAC_Attack_Frame(Weapon thiswep, entity actor, .entity weaponentity, int if(!thiswep.wr_checkammo1(thiswep, actor, weaponentity)) if(!(actor.items & IT_UNLIMITED_WEAPON_AMMO)) { - W_SwitchWeapon_Force(actor, w_getbestweapon(actor), weaponentity); + W_SwitchWeapon_Force(actor, w_getbestweapon(actor, weaponentity), weaponentity); w_ready(thiswep, actor, weaponentity, fire); return; } diff --git a/qcsrc/common/weapons/weapon/hook.qc b/qcsrc/common/weapons/weapon/hook.qc index 2c4edd13d..db2ac45d6 100644 --- a/qcsrc/common/weapons/weapon/hook.qc +++ b/qcsrc/common/weapons/weapon/hook.qc @@ -251,7 +251,7 @@ METHOD(Hook, wr_think, void(entity thiswep, entity actor, .entity weaponentity, { actor.ammo_fuel = 0; actor.(weaponentity).hook_state |= HOOK_REMOVING; - W_SwitchWeapon_Force(actor, w_getbestweapon(actor), weaponentity); + W_SwitchWeapon_Force(actor, w_getbestweapon(actor, weaponentity), weaponentity); } } } diff --git a/qcsrc/common/weapons/weapon/machinegun.qc b/qcsrc/common/weapons/weapon/machinegun.qc index c2b566730..0116e7d39 100644 --- a/qcsrc/common/weapons/weapon/machinegun.qc +++ b/qcsrc/common/weapons/weapon/machinegun.qc @@ -157,7 +157,7 @@ void W_MachineGun_Attack_Frame(Weapon thiswep, entity actor, .entity weaponentit if(!thiswep.wr_checkammo2(thiswep, actor, weaponentity)) if(!(actor.items & IT_UNLIMITED_WEAPON_AMMO)) { - W_SwitchWeapon_Force(actor, w_getbestweapon(actor), weaponentity); + W_SwitchWeapon_Force(actor, w_getbestweapon(actor, weaponentity), weaponentity); w_ready(thiswep, actor, weaponentity, fire); return; } @@ -183,7 +183,7 @@ void W_MachineGun_Attack_Auto(Weapon thiswep, entity actor, .entity weaponentity if(!thiswep.wr_checkammo1(thiswep, actor, weaponentity)) if(!(actor.items & IT_UNLIMITED_WEAPON_AMMO)) { - W_SwitchWeapon_Force(actor, w_getbestweapon(actor), weaponentity); + W_SwitchWeapon_Force(actor, w_getbestweapon(actor, weaponentity), weaponentity); w_ready(thiswep, actor, weaponentity, fire); return; } @@ -281,7 +281,7 @@ METHOD(MachineGun, wr_think, void(entity thiswep, entity actor, .entity weaponen if(!thiswep.wr_checkammo2(thiswep, actor, weaponentity)) if(!(actor.items & IT_UNLIMITED_WEAPON_AMMO)) { - W_SwitchWeapon_Force(actor, w_getbestweapon(actor), weaponentity); + W_SwitchWeapon_Force(actor, w_getbestweapon(actor, weaponentity), weaponentity); w_ready(thiswep, actor, weaponentity, fire); return; } diff --git a/qcsrc/common/weapons/weapon/minelayer.qc b/qcsrc/common/weapons/weapon/minelayer.qc index dd7596366..cff18ef70 100644 --- a/qcsrc/common/weapons/weapon/minelayer.qc +++ b/qcsrc/common/weapons/weapon/minelayer.qc @@ -137,7 +137,7 @@ void W_MineLayer_Explode(entity this, entity directhitentity) own.cnt = WEP_MINE_LAYER.m_id; int slot = weaponslot(weaponentity); ATTACK_FINISHED(own, slot) = time; - own.(weaponentity).m_switchweapon = w_getbestweapon(own); + own.(weaponentity).m_switchweapon = w_getbestweapon(own, weaponentity); } } this.realowner.minelayer_mines -= 1; @@ -169,7 +169,7 @@ void W_MineLayer_DoRemoteExplode(entity this) own.cnt = WEP_MINE_LAYER.m_id; int slot = weaponslot(weaponentity); ATTACK_FINISHED(own, slot) = time; - own.(weaponentity).m_switchweapon = w_getbestweapon(own); + own.(weaponentity).m_switchweapon = w_getbestweapon(own, weaponentity); } } this.realowner.minelayer_mines -= 1; diff --git a/qcsrc/common/weapons/weapon/shotgun.qc b/qcsrc/common/weapons/weapon/shotgun.qc index 80d485e4b..6a30a92f9 100644 --- a/qcsrc/common/weapons/weapon/shotgun.qc +++ b/qcsrc/common/weapons/weapon/shotgun.qc @@ -202,7 +202,7 @@ void W_Shotgun_Attack3_Frame2(Weapon thiswep, entity actor, .entity weaponentity if (!thiswep.wr_checkammo2(thiswep, actor, weaponentity)) if (!(actor.items & IT_UNLIMITED_WEAPON_AMMO)) { - W_SwitchWeapon_Force(actor, w_getbestweapon(actor), weaponentity); + W_SwitchWeapon_Force(actor, w_getbestweapon(actor, weaponentity), weaponentity); w_ready(thiswep, actor, weaponentity, fire); return; } @@ -216,7 +216,7 @@ void W_Shotgun_Attack3_Frame1(Weapon thiswep, entity actor, .entity weaponentity if (!thiswep.wr_checkammo2(thiswep, actor, weaponentity)) if (!(actor.items & IT_UNLIMITED_WEAPON_AMMO)) { - W_SwitchWeapon_Force(actor, w_getbestweapon(actor), weaponentity); + W_SwitchWeapon_Force(actor, w_getbestweapon(actor, weaponentity), weaponentity); w_ready(thiswep, actor, weaponentity, fire); return; } diff --git a/qcsrc/server/client.qc b/qcsrc/server/client.qc index 61b0c779a..205eb0cb3 100644 --- a/qcsrc/server/client.qc +++ b/qcsrc/server/client.qc @@ -696,7 +696,7 @@ void PutClientInServer(entity this) { .entity weaponentity = weaponentities[slot]; if(slot == 0) - this.(weaponentity).m_switchweapon = w_getbestweapon(this); + this.(weaponentity).m_switchweapon = w_getbestweapon(this, weaponentity); else this.(weaponentity).m_switchweapon = WEP_Null; this.(weaponentity).weaponname = ""; diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index fd8e89c9f..531ad6f53 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -100,7 +100,7 @@ void GiveFrags (entity attacker, entity targ, float f, int deathtype) // after a frag, choose another random weapon set if (!(attacker.weapons & WepSet_FromWeapon(attacker.(weaponentity).m_weapon))) - W_SwitchWeapon_Force(attacker, w_getbestweapon(attacker), weaponentity); + W_SwitchWeapon_Force(attacker, w_getbestweapon(attacker, weaponentity), weaponentity); } // FIXME fix the mess this is (we have REAL points now!) diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index 2914ca2de..e8b32c804 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -450,7 +450,7 @@ void GetCvars(entity this, int f) { .entity weaponentity = weaponentities[0]; // TODO: unhardcode if (s == "cl_weaponpriority") - if (this.(weaponentity)) this.(weaponentity).m_switchweapon = w_getbestweapon(this); + if (this.(weaponentity)) this.(weaponentity).m_switchweapon = w_getbestweapon(this, weaponentity); if (s == "cl_allow_uidtracking") PlayerStats_GameReport_AddPlayer(this); } diff --git a/qcsrc/server/weapons/hitplot.qc b/qcsrc/server/weapons/hitplot.qc index 2e1c4058d..0173c6d9d 100644 --- a/qcsrc/server/weapons/hitplot.qc +++ b/qcsrc/server/weapons/hitplot.qc @@ -51,7 +51,7 @@ vector W_HitPlotNormalizedUntransform(vector org, entity targ, vector screenforw return ret; } -void W_HitPlotAnalysis(entity player, vector screenforward, vector screenright, vector screenup) +void W_HitPlotAnalysis(entity player, .entity weaponentity, vector screenforward, vector screenright, vector screenup) { vector hitplot; vector org; @@ -73,7 +73,6 @@ void W_HitPlotAnalysis(entity player, vector screenforward, vector screenright, antilag_takeback(trace_ent, store, time - lag); hitplot = W_HitPlotNormalizedUntransform(org, trace_ent, screenforward, screenright, screenup, trace_endpos); antilag_restore(trace_ent, store); - .entity weaponentity = weaponentities[0]; // TODO: unhardcode fputs(player.hitplotfh, strcat(ftos(hitplot.x), " ", ftos(hitplot.y), " ", ftos(hitplot.z), " ", ftos(player.(weaponentity).m_switchweapon.m_id), "\n")); //print(strcat(ftos(hitplot_x), " ", ftos(hitplot_y), " ", ftos(hitplot_z), "\n")); } diff --git a/qcsrc/server/weapons/hitplot.qh b/qcsrc/server/weapons/hitplot.qh index 8aa15a61b..89f7f5050 100644 --- a/qcsrc/server/weapons/hitplot.qh +++ b/qcsrc/server/weapons/hitplot.qh @@ -2,6 +2,6 @@ .float hitplotfh; -void W_HitPlotAnalysis(entity player, vector screenforward, vector screenright, vector screenup); +void W_HitPlotAnalysis(entity player, .entity weaponentity, vector screenforward, vector screenright, vector screenup); void W_HitPlotOpen(entity player); void W_HitPlotClose(entity player); diff --git a/qcsrc/server/weapons/selection.qc b/qcsrc/server/weapons/selection.qc index f8ce9e750..f7a061aca 100644 --- a/qcsrc/server/weapons/selection.qc +++ b/qcsrc/server/weapons/selection.qc @@ -248,12 +248,12 @@ void W_SwitchToOtherWeapon(entity this, .entity weaponentity) if (this.weapons & set) { this.weapons &= ~set; - ww = w_getbestweapon(this); + ww = w_getbestweapon(this, weaponentity); this.weapons |= set; } else { - ww = w_getbestweapon(this); + ww = w_getbestweapon(this, weaponentity); } if (ww == WEP_Null) return; W_SwitchWeapon_Force(this, ww, weaponentity); diff --git a/qcsrc/server/weapons/selection.qh b/qcsrc/server/weapons/selection.qh index 68c15139e..071a0fea8 100644 --- a/qcsrc/server/weapons/selection.qh +++ b/qcsrc/server/weapons/selection.qh @@ -9,8 +9,7 @@ bool client_hasweapon(entity this, Weapon wpn, .entity weaponentity, float andam .int weaponcomplainindex; float W_GetCycleWeapon(entity this, string weaponorder, float dir, float imp, float complain, float skipmissing, .entity weaponentity); -// TODO: unhardcode -#define w_getbestweapon(ent) Weapons_from(W_GetCycleWeapon(ent, ent.cvar_cl_weaponpriority, 0, -1, false, true, weaponentities[0])) +#define w_getbestweapon(ent,wepent) Weapons_from(W_GetCycleWeapon(ent, ent.cvar_cl_weaponpriority, 0, -1, false, true, wepent)) void W_SwitchWeapon_Force(Player this, Weapon w, .entity weaponentity); diff --git a/qcsrc/server/weapons/throwing.qc b/qcsrc/server/weapons/throwing.qc index f36a0eebf..e0e1e9db6 100644 --- a/qcsrc/server/weapons/throwing.qc +++ b/qcsrc/server/weapons/throwing.qc @@ -183,7 +183,7 @@ void W_ThrowWeapon(entity this, .entity weaponentity, vector velo, vector delta, if(!(this.weapons & set)) return; this.weapons &= ~set; - W_SwitchWeapon_Force(this, w_getbestweapon(this), weaponentity); + W_SwitchWeapon_Force(this, w_getbestweapon(this, weaponentity), weaponentity); string a = W_ThrowNewWeapon(this, w.m_id, doreduce, this.origin + delta, velo, weaponentity); if(!a) return; diff --git a/qcsrc/server/weapons/tracing.qc b/qcsrc/server/weapons/tracing.qc index 1f7f59467..8e6d2eabf 100644 --- a/qcsrc/server/weapons/tracing.qc +++ b/qcsrc/server/weapons/tracing.qc @@ -56,7 +56,7 @@ void W_SetupShot_Dir_ProjectileSize_Range(entity ent, .entity weaponentity, vect accuracy_add(ent, ent.(weaponentity).m_weapon.m_id, maxdamage, 0); if(IS_PLAYER(ent)) - W_HitPlotAnalysis(ent, v_forward, v_right, v_up); + W_HitPlotAnalysis(ent, weaponentity, v_forward, v_right, v_up); vector md = ent.(weaponentity).movedir; if(md.x > 0) diff --git a/qcsrc/server/weapons/weaponsystem.qc b/qcsrc/server/weapons/weaponsystem.qc index a37462eae..c68c452b9 100644 --- a/qcsrc/server/weapons/weaponsystem.qc +++ b/qcsrc/server/weapons/weaponsystem.qc @@ -180,7 +180,7 @@ void CL_SpawnWeaponentity(entity actor, .entity weaponentity) wepent_link(view); - if (weaponentity == weaponentities[0]) + if (weaponentity == weaponentities[0]) // only one exterior model, thank you very much { entity exterior = actor.exteriorweaponentity = new(exteriorweaponentity); exterior.solid = SOLID_NOT; @@ -539,7 +539,7 @@ void W_WeaponFrame(Player actor, .entity weaponentity) { if (w != WEP_Null && !(actor.weapons & WepSet_FromWeapon(w))) { - if (this.m_weapon == this.m_switchweapon) W_SwitchWeapon_Force(actor, w_getbestweapon(actor), weaponentity); + if (this.m_weapon == this.m_switchweapon) W_SwitchWeapon_Force(actor, w_getbestweapon(actor, weaponentity), weaponentity); w = WEP_Null; } -- 2.39.2