X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fmutator%2Fgamemode_keepaway.qc;h=b948c6d5e229e91601e89c49b6d62bc0cc6c2cfc;hb=f7b69c7bd1d05162b3c532422e3ce3013dc0f5f2;hp=407ac6c98bb7ed05a083c49b4db0801aea3aca5d;hpb=03660ddc8afa9852f26a21faaec376e0d27dcb9b;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/mutators/mutator/gamemode_keepaway.qc b/qcsrc/server/mutators/mutator/gamemode_keepaway.qc index 407ac6c98..b948c6d5e 100644 --- a/qcsrc/server/mutators/mutator/gamemode_keepaway.qc +++ b/qcsrc/server/mutators/mutator/gamemode_keepaway.qc @@ -1,44 +1,4 @@ #include "gamemode_keepaway.qh" -#ifndef GAMEMODE_KEEPAWAY_H -#define GAMEMODE_KEEPAWAY_H - -void ka_Initialize(); - -REGISTER_MUTATOR(ka, false) -{ - MUTATOR_ONADD - { - if (time > 1) // game loads at time 1 - error("This is a game type and it cannot be added at runtime."); - ka_Initialize(); - } - - MUTATOR_ONROLLBACK_OR_REMOVE - { - // we actually cannot roll back ka_Initialize here - // BUT: we don't need to! If this gets called, adding always - // succeeds. - } - - MUTATOR_ONREMOVE - { - LOG_INFO("This is a game type and it cannot be removed at runtime."); - return -1; - } - - return false; -} - - -entity ka_ball; - -void(entity this) havocbot_role_ka_carrier; -void(entity this) havocbot_role_ka_collector; - -void ka_DropEvent(entity plyr); -#endif - -#ifdef IMPLEMENTATION int autocvar_g_keepaway_ballcarrier_effects; float autocvar_g_keepaway_ballcarrier_damage; @@ -363,7 +323,7 @@ MUTATOR_HOOKFUNCTION(ka, PlayerUseKey) } } -MUTATOR_HOOKFUNCTION(ka, PlayerDamage_Calculate) // for changing damage and force values that are applied to players in g_damage.qc +MUTATOR_HOOKFUNCTION(ka, Damage_Calculate) // for changing damage and force values that are applied to players in g_damage.qc { entity frag_attacker = M_ARGV(1, entity); entity frag_target = M_ARGV(2, entity); @@ -466,11 +426,12 @@ MUTATOR_HOOKFUNCTION(ka, HavocBot_ChooseRole) MUTATOR_HOOKFUNCTION(ka, DropSpecialItems) { entity frag_target = M_ARGV(0, entity); - + if(frag_target.ballcarried) ka_DropEvent(frag_target); } +.bool pushable; // ============== // Initialization @@ -490,6 +451,7 @@ void ka_SpawnBall() // loads various values for the ball, runs only once at star e.glow_color = autocvar_g_keepawayball_trail_color; e.glow_trail = true; e.flags = FL_ITEM; + IL_PUSH(g_items, e); e.pushable = true; e.reset = ka_Reset; settouch(e, ka_TouchEvent); @@ -513,5 +475,3 @@ void ka_Initialize() // run at the start of a match, initiates game mode ka_ScoreRules(); ka_SpawnBall(); } - -#endif