From 1219bc076f56dc651a53f5d43acc74b329713f98 Mon Sep 17 00:00:00 2001 From: Mario Date: Sat, 7 Sep 2019 18:55:57 +1000 Subject: [PATCH] Add g_balance_devastator_remote_jump as a controller cvar for rocket flying, force it enabled in the rocket flying mutator --- bal-wep-mario.cfg | 1 + bal-wep-nexuiz25.cfg | 1 + bal-wep-samual.cfg | 1 + bal-wep-testing.cfg | 1 + bal-wep-testingxpm.cfg | 1 + bal-wep-xdf.cfg | 1 + bal-wep-xonotic.cfg | 1 + bal-wep-xpm.cfg | 1 + mutators.cfg | 1 + .../mutators/mutator/rocketflying/sv_rocketflying.qc | 8 +++++++- qcsrc/common/weapons/weapon/devastator.qc | 5 ++++- qcsrc/common/weapons/weapon/devastator.qh | 1 + qcsrc/server/mutators/events.qh | 7 +++++++ 13 files changed, 28 insertions(+), 2 deletions(-) diff --git a/bal-wep-mario.cfg b/bal-wep-mario.cfg index d579cb2e87..3b2a3a8809 100644 --- a/bal-wep-mario.cfg +++ b/bal-wep-mario.cfg @@ -401,6 +401,7 @@ set g_balance_devastator_reload_time 2 set g_balance_devastator_remote_damage 70 set g_balance_devastator_remote_edgedamage 35 set g_balance_devastator_remote_force 300 +set g_balance_devastator_remote_jump 0 set g_balance_devastator_remote_jump_damage 70 set g_balance_devastator_remote_jump_force 450 set g_balance_devastator_remote_jump_radius 100 diff --git a/bal-wep-nexuiz25.cfg b/bal-wep-nexuiz25.cfg index eacfe27c74..16544fa76f 100644 --- a/bal-wep-nexuiz25.cfg +++ b/bal-wep-nexuiz25.cfg @@ -401,6 +401,7 @@ set g_balance_devastator_reload_time 2 set g_balance_devastator_remote_damage 105 set g_balance_devastator_remote_edgedamage 40 set g_balance_devastator_remote_force 600 +set g_balance_devastator_remote_jump 0 set g_balance_devastator_remote_jump_damage 70 set g_balance_devastator_remote_jump_force 0 set g_balance_devastator_remote_jump_radius 0 diff --git a/bal-wep-samual.cfg b/bal-wep-samual.cfg index 4591267a8c..e32b54ff4b 100644 --- a/bal-wep-samual.cfg +++ b/bal-wep-samual.cfg @@ -401,6 +401,7 @@ set g_balance_devastator_reload_time 2 set g_balance_devastator_remote_damage 70 set g_balance_devastator_remote_edgedamage 35 set g_balance_devastator_remote_force 400 +set g_balance_devastator_remote_jump 0 set g_balance_devastator_remote_jump_damage 40 set g_balance_devastator_remote_jump_force 0 set g_balance_devastator_remote_jump_radius 200 diff --git a/bal-wep-testing.cfg b/bal-wep-testing.cfg index 983ff06048..e3dd685961 100644 --- a/bal-wep-testing.cfg +++ b/bal-wep-testing.cfg @@ -401,6 +401,7 @@ set g_balance_devastator_reload_time 2 set g_balance_devastator_remote_damage 70 set g_balance_devastator_remote_edgedamage 35 set g_balance_devastator_remote_force 300 +set g_balance_devastator_remote_jump 0 set g_balance_devastator_remote_jump_damage 70 set g_balance_devastator_remote_jump_force 450 set g_balance_devastator_remote_jump_radius 100 diff --git a/bal-wep-testingxpm.cfg b/bal-wep-testingxpm.cfg index d7ffcb5c5a..d56926fa52 100644 --- a/bal-wep-testingxpm.cfg +++ b/bal-wep-testingxpm.cfg @@ -401,6 +401,7 @@ set g_balance_devastator_reload_time 2 set g_balance_devastator_remote_damage 70 set g_balance_devastator_remote_edgedamage 35 set g_balance_devastator_remote_force 300 +set g_balance_devastator_remote_jump 0 set g_balance_devastator_remote_jump_damage 70 set g_balance_devastator_remote_jump_force 450 set g_balance_devastator_remote_jump_radius 100 diff --git a/bal-wep-xdf.cfg b/bal-wep-xdf.cfg index 0043c7e4b0..a3f36a85fb 100644 --- a/bal-wep-xdf.cfg +++ b/bal-wep-xdf.cfg @@ -401,6 +401,7 @@ set g_balance_devastator_reload_time 2 set g_balance_devastator_remote_damage 70 set g_balance_devastator_remote_edgedamage 35 set g_balance_devastator_remote_force 350 +set g_balance_devastator_remote_jump 0 set g_balance_devastator_remote_jump_damage 70 set g_balance_devastator_remote_jump_force 450 set g_balance_devastator_remote_jump_radius 0 diff --git a/bal-wep-xonotic.cfg b/bal-wep-xonotic.cfg index b7de169b30..dcdd07c4ba 100644 --- a/bal-wep-xonotic.cfg +++ b/bal-wep-xonotic.cfg @@ -401,6 +401,7 @@ set g_balance_devastator_reload_time 2 set g_balance_devastator_remote_damage 70 set g_balance_devastator_remote_edgedamage 35 set g_balance_devastator_remote_force 300 +set g_balance_devastator_remote_jump 0 set g_balance_devastator_remote_jump_damage 70 set g_balance_devastator_remote_jump_force 450 set g_balance_devastator_remote_jump_radius 0 diff --git a/bal-wep-xpm.cfg b/bal-wep-xpm.cfg index 5117bc2acc..4a57f2e4c9 100644 --- a/bal-wep-xpm.cfg +++ b/bal-wep-xpm.cfg @@ -401,6 +401,7 @@ set g_balance_devastator_reload_time 2 set g_balance_devastator_remote_damage 70 set g_balance_devastator_remote_edgedamage 35 set g_balance_devastator_remote_force 300 +set g_balance_devastator_remote_jump 0 set g_balance_devastator_remote_jump_damage 70 set g_balance_devastator_remote_jump_force 450 set g_balance_devastator_remote_jump_radius 0 diff --git a/mutators.cfg b/mutators.cfg index f49b8a7c42..b4b6eeb83f 100644 --- a/mutators.cfg +++ b/mutators.cfg @@ -111,6 +111,7 @@ set g_invincible_projectiles 0 "set to 1 to disable any damage to projectiles in // rocket flying // =============== set g_rocket_flying 0 "set to 1 to enable rocket flying in all balance configs" +set g_rocket_flying_disabledelays 1 "disable detonation delays on rockets and mines" // ===================== diff --git a/qcsrc/common/mutators/mutator/rocketflying/sv_rocketflying.qc b/qcsrc/common/mutators/mutator/rocketflying/sv_rocketflying.qc index d3c1922b99..58e20568ed 100644 --- a/qcsrc/common/mutators/mutator/rocketflying/sv_rocketflying.qc +++ b/qcsrc/common/mutators/mutator/rocketflying/sv_rocketflying.qc @@ -1,19 +1,25 @@ #include "sv_rocketflying.qh" string autocvar_g_rocket_flying; +bool autocvar_g_rocket_flying_disabledelays = true; REGISTER_MUTATOR(rocketflying, expr_evaluate(autocvar_g_rocket_flying)); MUTATOR_HOOKFUNCTION(rocketflying, EditProjectile) { entity proj = M_ARGV(1, entity); - if(proj.classname == "rocket" || proj.classname == "mine") + if(autocvar_g_rocket_flying_disabledelays && (proj.classname == "rocket" || proj.classname == "mine")) { // kill detonate delay of rockets proj.spawnshieldtime = time; } } +MUTATOR_HOOKFUNCTION(rocketflying, AllowRocketJumping) +{ + M_ARGV(0, bool) = true; // force rocket jumping +} + MUTATOR_HOOKFUNCTION(rocketflying, BuildMutatorsString) { M_ARGV(0, string) = strcat(M_ARGV(0, string), ":RocketFlying"); diff --git a/qcsrc/common/weapons/weapon/devastator.qc b/qcsrc/common/weapons/weapon/devastator.qc index 5654488ddb..a77136b397 100644 --- a/qcsrc/common/weapons/weapon/devastator.qc +++ b/qcsrc/common/weapons/weapon/devastator.qc @@ -71,8 +71,11 @@ void W_Devastator_DoRemoteExplode(entity this, .entity weaponentity) bool handled_as_rocketjump = false; entity head = NULL; + bool allow_rocketjump = WEP_CVAR(devastator, remote_jump); + MUTATOR_CALLHOOK(AllowRocketJumping, allow_rocketjump); + allow_rocketjump = M_ARGV(0, bool); - if(WEP_CVAR(devastator, remote_jump_radius)) + if(allow_rocketjump && WEP_CVAR(devastator, remote_jump_radius)) { head = WarpZone_FindRadius( this.origin, diff --git a/qcsrc/common/weapons/weapon/devastator.qh b/qcsrc/common/weapons/weapon/devastator.qh index 33814a5e1e..679f75499a 100644 --- a/qcsrc/common/weapons/weapon/devastator.qh +++ b/qcsrc/common/weapons/weapon/devastator.qh @@ -40,6 +40,7 @@ CLASS(Devastator, Weapon) P(class, prefix, remote_damage, float, NONE) \ P(class, prefix, remote_edgedamage, float, NONE) \ P(class, prefix, remote_force, float, NONE) \ + P(class, prefix, remote_jump, float, NONE) \ P(class, prefix, remote_jump_damage, float, NONE) \ P(class, prefix, remote_jump_force, float, NONE) \ P(class, prefix, remote_jump_radius, float, NONE) \ diff --git a/qcsrc/server/mutators/events.qh b/qcsrc/server/mutators/events.qh index 1ca629078e..a310c6ccad 100644 --- a/qcsrc/server/mutators/events.qh +++ b/qcsrc/server/mutators/events.qh @@ -1231,3 +1231,10 @@ MUTATOR_HOOKABLE(GetPlayerLimit, EV_GetPlayerLimit); /**/ o(string, MUTATOR_ARGV_1_string) \ /**/ MUTATOR_HOOKABLE(LogDeath_AppendItemCodes, EV_LogDeath_AppendItemCodes); + +/** Allows disabling or enabling rocket jumping independently of balance, use the parameter to force a preferred setting */ +#define EV_AllowRocketJumping(i, o) \ + /** allow_rocketjump */ i(bool, MUTATOR_ARGV_0_bool) \ + /**/ o(bool, MUTATOR_ARGV_0_bool) \ + /**/ +MUTATOR_HOOKABLE(AllowRocketJumping, EV_AllowRocketJumping); -- 2.39.2