diff --git a/README.md b/README.md index 4dfe9b70..c38343f3 100644 --- a/README.md +++ b/README.md @@ -183,6 +183,9 @@ * Can be repurchased * Increased max amount that can be placed from 12 to 20 +### Time Bomb +* Can have with Monkey Bombs + ### One Inch Punch * Upgraded: elemental punch changes based on which staff the player currently has * Fixed an issue where a player's melee weapon wouldn't reset if the player bled out in the Giant Robots diff --git a/scripts/zm/replaced/_zm_weap_time_bomb.gsc b/scripts/zm/replaced/_zm_weap_time_bomb.gsc new file mode 100644 index 00000000..b3011f31 --- /dev/null +++ b/scripts/zm/replaced/_zm_weap_time_bomb.gsc @@ -0,0 +1,73 @@ +#include common_scripts\utility; +#include maps\mp\_utility; +#include maps\mp\zombies\_zm_utility; +#include maps\mp\gametypes_zm\_hud_util; +#include maps\mp\zombies\_zm_weapons; +#include maps\mp\_visionset_mgr; +#include maps\mp\zombies\_zm_audio; +#include maps\mp\zombies\_zm_blockers; +#include maps\mp\zombies\_zm_laststand; +#include maps\mp\zombies\_zm_weapon_locker; +#include maps\mp\zombies\_zm_magicbox; +#include maps\mp\zombies\_zm_perks; +#include maps\mp\zombies\_zm_score; +#include maps\mp\zombies\_zm_stats; +#include maps\mp\zombies\_zm_equipment; +#include maps\mp\zombies\_zm; +#include maps\mp\zombies\_zm_spawner; +#include maps\mp\animscripts\zm_death; +#include maps\mp\zombies\_zm_ai_basic; +#include maps\mp\zombies\_zm_weap_time_bomb; + +init_time_bomb() +{ + time_bomb_precache(); + level thread time_bomb_post_init(); + flag_init( "time_bomb_round_killed" ); + flag_init( "time_bomb_enemies_restored" ); + flag_init( "time_bomb_zombie_respawning_done" ); + flag_init( "time_bomb_restore_active" ); + flag_init( "time_bomb_restore_done" ); + flag_init( "time_bomb_global_restore_done" ); + flag_init( "time_bomb_detonation_enabled" ); + flag_init( "time_bomb_stores_door_state" ); + registerclientfield( "world", "time_bomb_saved_round_number", 12000, 8, "int" ); + registerclientfield( "world", "time_bomb_lua_override", 12000, 1, "int" ); + registerclientfield( "world", "time_bomb_hud_toggle", 12000, 1, "int" ); + registerclientfield( "toplayer", "sndTimebombLoop", 12000, 2, "int" ); + maps\mp\zombies\_zm_weapons::register_zombie_weapon_callback( "time_bomb_zm", ::player_give_time_bomb ); + level.zombiemode_time_bomb_give_func = ::player_give_time_bomb; + include_weapon( "time_bomb_zm", 1 ); + maps\mp\zombies\_zm_weapons::add_limited_weapon( "time_bomb_zm", 1 ); + add_time_bomb_to_mystery_box(); + register_equipment_for_level( "time_bomb_zm" ); + register_equipment_for_level( "time_bomb_detonator_zm" ); + + if ( !isdefined( level.round_wait_func ) ) + level.round_wait_func = ::time_bomb_round_wait; + + level.zombie_round_change_custom = ::time_bomb_custom_round_change; + level._effect["time_bomb_set"] = loadfx( "weapon/time_bomb/fx_time_bomb_detonate" ); + level._effect["time_bomb_ammo_fx"] = loadfx( "misc/fx_zombie_powerup_on" ); + level._effect["time_bomb_respawns_enemy"] = loadfx( "maps/zombie_buried/fx_buried_time_bomb_spawn" ); + level._effect["time_bomb_kills_enemy"] = loadfx( "maps/zombie_buried/fx_buried_time_bomb_death" ); + level._time_bomb = spawnstruct(); + level._time_bomb.enemy_type = []; + register_time_bomb_enemy( "zombie", ::is_zombie_round, ::time_bomb_saves_zombie_data, ::time_bomb_respawns_zombies ); + register_time_bomb_enemy_default( "zombie" ); + level._time_bomb.last_round_restored = -1; + flag_set( "time_bomb_detonation_enabled" ); +} + +player_give_time_bomb() +{ + assert( isplayer( self ), "player_give_time_bomb can only be used on players!" ); + self giveweapon( "time_bomb_zm" ); + self swap_weapon_to_time_bomb(); + self thread show_time_bomb_hints(); + self thread time_bomb_think(); + self thread detonator_think(); + self thread time_bomb_inventory_slot_think(); + self thread destroy_time_bomb_save_if_user_bleeds_out_or_disconnects(); + self thread sndwatchforweapswitch(); +} \ No newline at end of file diff --git a/scripts/zm/zm_buried/zm_buried_reimagined.gsc b/scripts/zm/zm_buried/zm_buried_reimagined.gsc index ff98ec8c..c99b9d3f 100644 --- a/scripts/zm/zm_buried/zm_buried_reimagined.gsc +++ b/scripts/zm/zm_buried/zm_buried_reimagined.gsc @@ -13,6 +13,7 @@ #include scripts\zm\replaced\_zm_equip_headchopper; #include scripts\zm\replaced\_zm_perk_vulture; #include scripts\zm\replaced\_zm_weap_slowgun; +#include scripts\zm\replaced\_zm_weap_time_bomb; #include scripts\zm\replaced\_zm_banking; #include scripts\zm\replaced\_zm_weapon_locker; #include scripts\zm\replaced\_zm_sq; @@ -41,6 +42,7 @@ main() replaceFunc(maps\mp\zombies\_zm_weap_slowgun::zombie_paralyzed, scripts\zm\replaced\_zm_weap_slowgun::zombie_paralyzed); replaceFunc(maps\mp\zombies\_zm_weap_slowgun::player_slow_for_time, scripts\zm\replaced\_zm_weap_slowgun::player_slow_for_time); replaceFunc(maps\mp\zombies\_zm_weap_slowgun::watch_reset_anim_rate, scripts\zm\replaced\_zm_weap_slowgun::watch_reset_anim_rate); + replaceFunc(maps\mp\zombies\_zm_weap_time_bomb::init_time_bomb, scripts\zm\replaced\_zm_weap_time_bomb::init_time_bomb); replaceFunc(maps\mp\zombies\_zm_banking::init, scripts\zm\replaced\_zm_banking::init); replaceFunc(maps\mp\zombies\_zm_banking::bank_deposit_box, scripts\zm\replaced\_zm_banking::bank_deposit_box); replaceFunc(maps\mp\zombies\_zm_banking::bank_deposit_unitrigger, scripts\zm\replaced\_zm_banking::bank_deposit_unitrigger);