From: Rudolf Polzer Date: Sat, 23 Oct 2010 07:47:57 +0000 (+0200) Subject: add the "rocket flying" mutator, cvar g_rocket_flying X-Git-Tag: xonotic-v0.1.0preview~250 X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=92df915b5ea7a8619aa40d341cc71e1dc20bfbc9 add the "rocket flying" mutator, cvar g_rocket_flying --- diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index df948aa003..e9cd073be1 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 59428f65db..113651eebe 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 d3b8e6d64e..894bb3ee54 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 0000000000..53bc829bc0 --- /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 da14483a4d..91d2ea5be7 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 adf4b4a1d8..d492a04ed3 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 912e22c244..1232e3c8eb 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;