From e488a45f0bc89f2332249b6e9d7e47a36df02326 Mon Sep 17 00:00:00 2001 From: Jbleezy Date: Fri, 7 Apr 2023 21:31:59 -0700 Subject: [PATCH] Tombstone: fix powerup not spawning if machine is powered off --- scripts/zm/_zm_reimagined.gsc | 1 + scripts/zm/replaced/_zm_perks.gsc | 42 +++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index df64e654..9d16c90d 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -78,6 +78,7 @@ main() replaceFunc(maps\mp\zombies\_zm_perks::perk_think, scripts\zm\replaced\_zm_perks::perk_think); replaceFunc(maps\mp\zombies\_zm_perks::perk_set_max_health_if_jugg, scripts\zm\replaced\_zm_perks::perk_set_max_health_if_jugg); replaceFunc(maps\mp\zombies\_zm_perks::initialize_custom_perk_arrays, scripts\zm\replaced\_zm_perks::initialize_custom_perk_arrays); + replaceFunc(maps\mp\zombies\_zm_perks::turn_tombstone_on, scripts\zm\replaced\_zm_perks::turn_tombstone_on); replaceFunc(maps\mp\zombies\_zm_perks::wait_for_player_to_take, scripts\zm\replaced\_zm_perks::wait_for_player_to_take); replaceFunc(maps\mp\zombies\_zm_power::standard_powered_items, scripts\zm\replaced\_zm_power::standard_powered_items); replaceFunc(maps\mp\zombies\_zm_powerups::powerup_grab, scripts\zm\replaced\_zm_powerups::powerup_grab); diff --git a/scripts/zm/replaced/_zm_perks.gsc b/scripts/zm/replaced/_zm_perks.gsc index e9d03fe8..ce8e5c60 100644 --- a/scripts/zm/replaced/_zm_perks.gsc +++ b/scripts/zm/replaced/_zm_perks.gsc @@ -508,6 +508,48 @@ turn_movefaster_on() } } +turn_tombstone_on() +{ + level endon( "tombstone_removed" ); + + while ( true ) + { + machine = getentarray( "vending_tombstone", "targetname" ); + machine_triggers = getentarray( "vending_tombstone", "target" ); + + for ( i = 0; i < machine.size; i++ ) + machine[i] setmodel( level.machine_assets["tombstone"].off_model ); + + level thread do_initial_power_off_callback( machine, "tombstone" ); + array_thread( machine_triggers, ::set_power_on, 0 ); + + level waittill( "tombstone_on" ); + + for ( i = 0; i < machine.size; i++ ) + { + machine[i] setmodel( level.machine_assets["tombstone"].on_model ); + machine[i] vibrate( vectorscale( ( 0, -1, 0 ), 100.0 ), 0.3, 0.4, 3 ); + machine[i] playsound( "zmb_perks_power_on" ); + machine[i] thread perk_fx( "tombstone_light" ); + machine[i] thread play_loop_on_machine(); + } + + level notify( "specialty_scavenger_power_on" ); + array_thread( machine_triggers, ::set_power_on, 1 ); + + if ( isdefined( level.machine_assets["tombstone"].power_on_callback ) ) + array_thread( machine, level.machine_assets["tombstone"].power_on_callback ); + + level waittill( "tombstone_off" ); + + if ( isdefined( level.machine_assets["tombstone"].power_off_callback ) ) + array_thread( machine, level.machine_assets["tombstone"].power_off_callback ); + + array_thread( machine, ::turn_perk_off ); + players = get_players(); + } +} + give_movefaster() { self set_perk_clientfield("specialty_longersprint", 1);