From d98cd216ca3b07ead614596d11c3f1e6c33ce8d8 Mon Sep 17 00:00:00 2001 From: Jbleezy Date: Tue, 11 Apr 2023 23:35:59 -0700 Subject: [PATCH] Nuketown: perk changes --- README.md | 6 + scripts/zm/replaced/zm_nuked_perks.gsc | 119 ++++++++++++++++++++ scripts/zm/zm_nuked/zm_nuked_reimagined.gsc | 8 ++ 3 files changed, 133 insertions(+) create mode 100644 scripts/zm/replaced/zm_nuked_perks.gsc diff --git a/README.md b/README.md index c2e43b55..2df52b5e 100644 --- a/README.md +++ b/README.md @@ -556,6 +556,12 @@ * No perks * Pack-a-Punch +### Nuketown +* Initial perk is no longer always Quick Revive in solo +* Initial perk no longer always spawns in the starting area in solo +* Initial perk spawns at round 1 in coop +* Perks spawn every 5th round + ### Die Rise * Removed key * Elevators and escape pod can be called without key diff --git a/scripts/zm/replaced/zm_nuked_perks.gsc b/scripts/zm/replaced/zm_nuked_perks.gsc new file mode 100644 index 00000000..8c15424d --- /dev/null +++ b/scripts/zm/replaced/zm_nuked_perks.gsc @@ -0,0 +1,119 @@ +#include common_scripts\utility; +#include maps\mp\_utility; +#include maps\mp\zombies\_zm_utility; +#include maps\mp\zombies\_zm_weapons; +#include maps\mp\zombies\_zm_perks; +#include maps\mp\animscripts\zm_death; +#include maps\mp\zombies\_zm_game_module; +#include maps\mp\zm_nuked_perks; + +init_nuked_perks() +{ + level.perk_arrival_vehicle = getent( "perk_arrival_vehicle", "targetname" ); + level.perk_arrival_vehicle setmodel( "tag_origin" ); + flag_init( "perk_vehicle_bringing_in_perk" ); + structs = getstructarray( "zm_perk_machine", "targetname" ); + + for ( i = 0; i < structs.size; i++ ) + structs[i] structdelete(); + + level.nuked_perks = []; + level.nuked_perks[0] = spawnstruct(); + level.nuked_perks[0].model = "zombie_vending_revive"; + level.nuked_perks[0].script_noteworthy = "specialty_quickrevive"; + level.nuked_perks[0].turn_on_notify = "revive_on"; + level.nuked_perks[1] = spawnstruct(); + level.nuked_perks[1].model = "zombie_vending_sleight"; + level.nuked_perks[1].script_noteworthy = "specialty_fastreload"; + level.nuked_perks[1].turn_on_notify = "sleight_on"; + level.nuked_perks[2] = spawnstruct(); + level.nuked_perks[2].model = "zombie_vending_doubletap2"; + level.nuked_perks[2].script_noteworthy = "specialty_rof"; + level.nuked_perks[2].turn_on_notify = "doubletap_on"; + level.nuked_perks[3] = spawnstruct(); + level.nuked_perks[3].model = "zombie_vending_jugg"; + level.nuked_perks[3].script_noteworthy = "specialty_armorvest"; + level.nuked_perks[3].turn_on_notify = "juggernog_on"; + level.nuked_perks[4] = spawnstruct(); + level.nuked_perks[4].model = "p6_anim_zm_buildable_pap"; + level.nuked_perks[4].script_noteworthy = "specialty_weapupgrade"; + level.nuked_perks[4].turn_on_notify = "Pack_A_Punch_on"; + + level.override_perk_targetname = "zm_perk_machine_override"; + random_perk_structs = []; + perk_structs = getstructarray( "zm_random_machine", "script_noteworthy" ); + + for ( i = 0; i < perk_structs.size; i++ ) + { + random_perk_structs[i] = getstruct( perk_structs[i].target, "targetname" ); + random_perk_structs[i].script_int = perk_structs[i].script_int; + } + + level.random_perk_structs = array_randomize( random_perk_structs ); + + for ( i = 0; i < 5; i++ ) + { + level.random_perk_structs[i].targetname = "zm_perk_machine_override"; + level.random_perk_structs[i].model = level.nuked_perks[i].model; + level.random_perk_structs[i].blocker_model = getent( level.random_perk_structs[i].target, "targetname" ); + level.random_perk_structs[i].script_noteworthy = level.nuked_perks[i].script_noteworthy; + level.random_perk_structs[i].turn_on_notify = level.nuked_perks[i].turn_on_notify; + + if ( !isdefined( level.struct_class_names["targetname"]["zm_perk_machine_override"] ) ) + level.struct_class_names["targetname"]["zm_perk_machine_override"] = []; + + level.struct_class_names["targetname"]["zm_perk_machine_override"][level.struct_class_names["targetname"]["zm_perk_machine_override"].size] = level.random_perk_structs[i]; + } +} + +perks_from_the_sky() +{ + level thread turn_perks_on(); + top_height = 8000; + machines = []; + machine_triggers = []; + machines[0] = getent( "vending_revive", "targetname" ); + + if ( !isdefined( machines[0] ) ) + return; + + machine_triggers[0] = getent( "vending_revive", "target" ); + move_perk( machines[0], top_height, 5.0, 0.001 ); + machine_triggers[0] trigger_off(); + machines[1] = getent( "vending_doubletap", "targetname" ); + machine_triggers[1] = getent( "vending_doubletap", "target" ); + move_perk( machines[1], top_height, 5.0, 0.001 ); + machine_triggers[1] trigger_off(); + machines[2] = getent( "vending_sleight", "targetname" ); + machine_triggers[2] = getent( "vending_sleight", "target" ); + move_perk( machines[2], top_height, 5.0, 0.001 ); + machine_triggers[2] trigger_off(); + machines[3] = getent( "vending_jugg", "targetname" ); + machine_triggers[3] = getent( "vending_jugg", "target" ); + move_perk( machines[3], top_height, 5.0, 0.001 ); + machine_triggers[3] trigger_off(); + machine_triggers[4] = getent( "specialty_weapupgrade", "script_noteworthy" ); + machines[4] = getent( machine_triggers[4].target, "targetname" ); + move_perk( machines[4], top_height, 5.0, 0.001 ); + machine_triggers[4] trigger_off(); + flag_wait( "initial_blackscreen_passed" ); + + wait( randomintrange( 10, 20 ) ); + bring_random_perk( machines, machine_triggers ); + + wait_for_round_range( 5, 6 ); + wait( randomintrange( 30, 60 ) ); + bring_random_perk( machines, machine_triggers ); + + wait_for_round_range( 10, 11 ); + wait( randomintrange( 30, 60 ) ); + bring_random_perk( machines, machine_triggers ); + + wait_for_round_range( 15, 16 ); + wait( randomintrange( 60, 120 ) ); + bring_random_perk( machines, machine_triggers ); + + wait_for_round_range( 20, 21 ); + wait( randomintrange( 60, 120 ) ); + bring_random_perk( machines, machine_triggers ); +} \ No newline at end of file diff --git a/scripts/zm/zm_nuked/zm_nuked_reimagined.gsc b/scripts/zm/zm_nuked/zm_nuked_reimagined.gsc index cf31dd23..19d31927 100644 --- a/scripts/zm/zm_nuked/zm_nuked_reimagined.gsc +++ b/scripts/zm/zm_nuked/zm_nuked_reimagined.gsc @@ -2,6 +2,14 @@ #include common_scripts\utility; #include maps\mp\zombies\_zm_utility; +#include scripts\zm\replaced\zm_nuked_perks; + +main() +{ + replaceFunc(maps\mp\zm_nuked_perks::init_nuked_perks, scripts\zm\replaced\zm_nuked_perks::init_nuked_perks); + replaceFunc(maps\mp\zm_nuked_perks::perks_from_the_sky, scripts\zm\replaced\zm_nuked_perks::perks_from_the_sky); +} + init() { level.zombie_init_done = ::zombie_init_done;