From 92df915b5ea7a8619aa40d341cc71e1dc20bfbc9 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Sat, 23 Oct 2010 09:47:57 +0200 Subject: [PATCH] add the "rocket flying" mutator, cvar g_rocket_flying --- defaultXonotic.cfg | 1 + qcsrc/server/miscfunctions.qc | 4 +++ qcsrc/server/mutators/mutator_dodging.qc | 2 +- qcsrc/server/mutators/mutator_rocketflying.qc | 31 +++++++++++++++++++ qcsrc/server/mutators/mutators.qh | 4 +-- qcsrc/server/progs.src | 1 + qcsrc/server/teamplay.qc | 3 -- 7 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 qcsrc/server/mutators/mutator_rocketflying.qc diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index df948aa00..e9cd073be 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -551,6 +551,7 @@ alias clearmap "disconnect" set g_grappling_hook 0 "let players spawn with the grappling hook which allows them to pull themselves up" set g_dodging 0 "set to 1 to enable dodging in games" +set g_rocket_flying 0 "set to 1 to enable rocket flying in all balance configs" seta cl_dodging_timeout 0.2 "determines how long apart (in seconds) two taps on the same direction key are considered a dodge. use 0 to disable" diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index 59428f65d..113651eeb 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -1172,6 +1172,10 @@ void readlevelcvars(void) // first load all the mutators if(cvar("g_nix")) MUTATOR_ADD(mutator_nix); + if(cvar("g_dodging")) + MUTATOR_ADD(mutator_dodging); + if(cvar("g_rocket_flying")) + MUTATOR_ADD(mutator_rocketflying); g_bugrigs = cvar("g_bugrigs"); g_bugrigs_planar_movement = cvar("g_bugrigs_planar_movement"); diff --git a/qcsrc/server/mutators/mutator_dodging.qc b/qcsrc/server/mutators/mutator_dodging.qc index d3b8e6d64..894bb3ee5 100644 --- a/qcsrc/server/mutators/mutator_dodging.qc +++ b/qcsrc/server/mutators/mutator_dodging.qc @@ -266,7 +266,7 @@ MUTATOR_HOOKFUNCTION(dodging_GetPressedKeys) { return 0; } -MUTATOR_DEFINITION(dodging) +MUTATOR_DEFINITION(mutator_dodging) { // we need to be called before GetPressedKey does its thing so we can // detect state changes and therefore dodging actions.. diff --git a/qcsrc/server/mutators/mutator_rocketflying.qc b/qcsrc/server/mutators/mutator_rocketflying.qc new file mode 100644 index 000000000..53bc829bc --- /dev/null +++ b/qcsrc/server/mutators/mutator_rocketflying.qc @@ -0,0 +1,31 @@ +MUTATOR_HOOKFUNCTION(rocketflying_EditProjectile) +{ + if(other.classname == "rocket") + { + // kill detonate delay of rockets + other.spawnshieldtime = time; + } +} + +MUTATOR_HOOKFUNCTION(rocketflying_BuildMutatorsString) +{ + ret_string = strcat(ret_string, ":RocketFlying"); + return 0; +} + +MUTATOR_HOOKFUNCTION(rocketflying_BuildMutatorsPrettyString) +{ + ret_string = strcat(ret_string, ", Rocket Flying"); + return 0; +} + +MUTATOR_DEFINITION(mutator_rocketflying) +{ + entity e; + + MUTATOR_HOOK(EditProjectile, rocketflying_EditProjectile, CBC_ORDER_ANY); + MUTATOR_HOOK(BuildMutatorsString, rocketflying_BuildMutatorsString, CBC_ORDER_ANY); + MUTATOR_HOOK(BuildMutatorsPrettyString, rocketflying_BuildMutatorsPrettyString, CBC_ORDER_ANY); + + return 0; +} diff --git a/qcsrc/server/mutators/mutators.qh b/qcsrc/server/mutators/mutators.qh index da14483a4..91d2ea5be 100644 --- a/qcsrc/server/mutators/mutators.qh +++ b/qcsrc/server/mutators/mutators.qh @@ -1,5 +1,5 @@ MUTATOR_DECLARATION(gamemode_keyhunt); MUTATOR_DECLARATION(mutator_nix); - -MUTATOR_DECLARATION(dodging); +MUTATOR_DECLARATION(mutator_dodging); +MUTATOR_DECLARATION(mutator_rocketflying); diff --git a/qcsrc/server/progs.src b/qcsrc/server/progs.src index adf4b4a1d..d492a04ed 100644 --- a/qcsrc/server/progs.src +++ b/qcsrc/server/progs.src @@ -179,6 +179,7 @@ mutators/base.qc mutators/gamemode_keyhunt.qc mutators/mutator_nix.qc mutators/mutator_dodging.qc +mutators/mutator_rocketflying.qc ../warpzonelib/anglestransform.qc ../warpzonelib/mathlib.qc diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index 912e22c24..1232e3c8e 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -210,9 +210,6 @@ void InitGameplayMode() fraglimit_override = cvar("fraglimit_override"); leadlimit_override = cvar("leadlimit_override"); - if(cvar("g_dodging")) - MUTATOR_ADD(dodging); - if(g_dm) { game = GAME_DEATHMATCH; -- 2.39.2