From d8e2f992865d61e5c11e227bec9eff07439c79b2 Mon Sep 17 00:00:00 2001 From: Jbleezy Date: Sun, 26 Mar 2023 13:58:29 -0700 Subject: [PATCH] Mystery Box: add weapon cycle --- README.md | 3 ++- scripts/zm/_zm_reimagined.gsc | 1 + scripts/zm/replaced/_zm_magicbox.gsc | 35 ++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fa747b6f..4e42e16b 100644 --- a/README.md +++ b/README.md @@ -171,7 +171,7 @@ * Sprinting no longer wakes up EMP'd zombies ### Hell's Retriever -* No longer ricochets to other zombies if not charged +* No longer ricochets to other zombies when not charged * Every charge increases total zombies attacked by 3 * Unupgraded: changed damage to 2000 (normally does 1000-2000 damage based on number of charges) * Upgraded: kills on any round when not charged @@ -241,6 +241,7 @@ * Lethal grenade hint string no longer displays "ammo" after purchasing ## Mystery Box +* Players will now get every weapon they can before getting duplicates * Decreased weapon pickup time from 12 seconds to 9 seconds * Moves to new location instantly * Special sound no longer plays when obtaining the Ray Gun diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index f94c6555..c75bb64e 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -61,6 +61,7 @@ main() replaceFunc(maps\mp\zombies\_zm_magicbox::treasure_chest_move, scripts\zm\replaced\_zm_magicbox::treasure_chest_move); replaceFunc(maps\mp\zombies\_zm_magicbox::treasure_chest_timeout, scripts\zm\replaced\_zm_magicbox::treasure_chest_timeout); replaceFunc(maps\mp\zombies\_zm_magicbox::timer_til_despawn, scripts\zm\replaced\_zm_magicbox::timer_til_despawn); + replaceFunc(maps\mp\zombies\_zm_magicbox::treasure_chest_chooseweightedrandomweapon, scripts\zm\replaced\_zm_magicbox::treasure_chest_chooseweightedrandomweapon); replaceFunc(maps\mp\zombies\_zm_perks::perk_pause, scripts\zm\replaced\_zm_perks::perk_pause); replaceFunc(maps\mp\zombies\_zm_perks::perk_unpause, scripts\zm\replaced\_zm_perks::perk_unpause); replaceFunc(maps\mp\zombies\_zm_perks::destroy_weapon_in_blackout, scripts\zm\replaced\_zm_perks::destroy_weapon_in_blackout); diff --git a/scripts/zm/replaced/_zm_magicbox.gsc b/scripts/zm/replaced/_zm_magicbox.gsc index 56999fea..f1394639 100644 --- a/scripts/zm/replaced/_zm_magicbox.gsc +++ b/scripts/zm/replaced/_zm_magicbox.gsc @@ -117,4 +117,39 @@ timer_til_despawn( v_float ) { self delete(); } +} + +treasure_chest_chooseweightedrandomweapon( player ) +{ + keys = array_randomize( getarraykeys( level.zombie_weapons ) ); + + if ( isdefined( level.customrandomweaponweights ) ) + keys = player [[ level.customrandomweaponweights ]]( keys ); + + pap_triggers = getentarray( "specialty_weapupgrade", "script_noteworthy" ); + + if (!isDefined(player.random_weapons_acquired)) + { + player.random_weapons_acquired = []; + } + + for ( i = 0; i < keys.size; i++ ) + { + if ( treasure_chest_canplayerreceiveweapon( player, keys[i], pap_triggers ) ) + { + if (!isInArray(player.random_weapons_acquired, keys[i])) + { + player.random_weapons_acquired[player.random_weapons_acquired.size] = keys[i]; + return keys[i]; + } + } + } + + if (player.random_weapons_acquired.size > 0) + { + player.random_weapons_acquired = []; + return treasure_chest_chooseweightedrandomweapon(player); + } + + return keys[0]; } \ No newline at end of file