From: terencehill Date: Wed, 7 Dec 2016 22:29:31 +0000 (+0100) Subject: Key Hunt: Destroy a key a short while after it falls into lava/slime/trigger hurt X-Git-Tag: xonotic-v0.8.2~327^2~5 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=e9c1702c72c6576b4ab7f3094476f3ff48796be2;p=xonotic%2Fxonotic-data.pk3dir.git Key Hunt: Destroy a key a short while after it falls into lava/slime/trigger hurt --- diff --git a/gamemodes.cfg b/gamemodes.cfg index 71f0dc179..f306253bc 100644 --- a/gamemodes.cfg +++ b/gamemodes.cfg @@ -418,7 +418,9 @@ set g_keepawayball_respawntime 10 "if no one picks up the ball, how long to wait // key hunt // ========== set g_keyhunt 0 "Key Hunt: collect all keys from the enemies and bring them together to score" -set g_balance_keyhunt_delay_return 60 +set g_balance_keyhunt_return_when_unreachable 1 "automatically destroy a key if it falls into lava/slime/trigger hurt" +set g_balance_keyhunt_delay_damage_return 5 "time a key takes to automatically destroy itself if it falls into lava/slime/trigger hurt" +set g_balance_keyhunt_delay_return 60 "time a key takes to destroy itself if dropped" set g_balance_keyhunt_delay_round 5 set g_balance_keyhunt_delay_tracking 10 set g_balance_keyhunt_delay_fadeout 2 diff --git a/qcsrc/server/mutators/mutator/gamemode_keyhunt.qc b/qcsrc/server/mutators/mutator/gamemode_keyhunt.qc index 2954fd1d3..28e43c085 100644 --- a/qcsrc/server/mutators/mutator/gamemode_keyhunt.qc +++ b/qcsrc/server/mutators/mutator/gamemode_keyhunt.qc @@ -2,9 +2,11 @@ float autocvar_g_balance_keyhunt_damageforcescale; float autocvar_g_balance_keyhunt_delay_collect; +float autocvar_g_balance_keyhunt_delay_damage_return; float autocvar_g_balance_keyhunt_delay_return; float autocvar_g_balance_keyhunt_delay_round; float autocvar_g_balance_keyhunt_delay_tracking; +float autocvar_g_balance_keyhunt_return_when_unreachable; float autocvar_g_balance_keyhunt_dropvelocity; float autocvar_g_balance_keyhunt_maxdist; float autocvar_g_balance_keyhunt_protecttime; @@ -418,10 +420,8 @@ void kh_Key_Damage(entity this, entity inflictor, entity attacker, float damage, return; if(ITEM_DAMAGE_NEEDKILL(deathtype)) { - // touching lava, or hurt trigger - // what shall we do? - // immediately return is bad - // maybe start a shorter countdown? + this.pain_finished = bound(time, time + autocvar_g_balance_keyhunt_delay_damage_return, this.pain_finished); + return; } if(force == '0 0 0') return; @@ -456,10 +456,8 @@ void kh_Key_Touch(entity this, entity toucher) // runs many, many times when a if(ITEM_TOUCH_NEEDKILL()) { - // touching sky, or nodrop - // what shall we do? - // immediately return is bad - // maybe start a shorter countdown? + this.pain_finished = bound(time, time + autocvar_g_balance_keyhunt_delay_damage_return, this.pain_finished); + return; } if (!IS_PLAYER(toucher)) @@ -730,6 +728,8 @@ void kh_Key_Spawn(entity initial_owner, float _angle, float i) // runs every ti key.angles = '0 360 0' * random(); key.event_damage = kh_Key_Damage; key.takedamage = DAMAGE_YES; + key.damagedbytriggers = autocvar_g_balance_keyhunt_return_when_unreachable; + key.damagedbycontents = autocvar_g_balance_keyhunt_return_when_unreachable; key.modelindex = kh_key_dropped; key.model = "key"; key.kh_dropperteam = 0;