diff --git a/README.md b/README.md index ac5f3b49..49032205 100644 --- a/README.md +++ b/README.md @@ -492,6 +492,7 @@ * Plane parts are shared in coop * Plane parts must be all acquired to craft * Plane fuel automatically picked up +* Key no longer shows on HUD * Players no longer respawn in the Acid Trap * Zombies spawn in the Docks zone when in the Docks Gates zone * Zombies spawn in the Docks Gates zone when in the Docks zone @@ -543,6 +544,7 @@ * Players can go prone on the tank * Shovels automatically picked up * Gramophone and records automatically picked up +* Gramophone and master record no longer show on HUD * Der Wunderfizz: increased cost from 1500 to 2500 * Der Wunderfizz: all perks have an equal chance of being obtained * Rituals of the Ancients: spend points challenge reward changed from Double Tap perk to a random perk that the player does not have (perk does not change if reward is reopened) diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index 761a0233..94c3738d 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -474,14 +474,7 @@ enemy_counter_hud() hud.horzalign = "user_left"; hud.vertalign = "user_top"; hud.x += 5; - if (level.script == "zm_tomb") - { - hud.y += 49; - } - else - { - hud.y += 2; - } + hud.y += 2; hud.fontscale = 1.4; hud.alpha = 0; hud.color = ( 1, 1, 1 ); diff --git a/scripts/zm/replaced/zm_alcatraz_craftables.gsc b/scripts/zm/replaced/zm_alcatraz_craftables.gsc new file mode 100644 index 00000000..d90248ef --- /dev/null +++ b/scripts/zm/replaced/zm_alcatraz_craftables.gsc @@ -0,0 +1,51 @@ +#include common_scripts\utility; +#include maps\mp\_utility; +#include maps\mp\zombies\_zm_utility; +#include maps\mp\zombies\_zm_weapons; +#include maps\mp\zm_alcatraz_utility; +#include maps\mp\zombies\_zm_craftables; +#include maps\mp\zombies\_zm_unitrigger; +#include maps\mp\zombies\_zm_audio; +#include maps\mp\zm_alcatraz_sq_vo; +#include maps\mp\zm_alcatraz_travel; +#include maps\mp\zm_alcatraz_craftables; + +include_key_craftable( craftable_name, model_name ) +{ + part_key = generate_zombie_craftable_piece( craftable_name, undefined, model_name, 32, 15, 0, undefined, ::onpickup_key, undefined, undefined, undefined, undefined, undefined, undefined, 1 ); + part = spawnstruct(); + part.name = craftable_name; + part add_craftable_piece( part_key ); + part.triggerthink = maps\mp\zombies\_zm_craftables::setup_craftable_pieces; + include_craftable( part ); +} + +onpickup_key( player ) +{ + flag_set( "key_found" ); + + if ( level.is_master_key_west ) + level clientnotify( "fxanim_west_pulley_up_start" ); + else + level clientnotify( "fxanim_east_pulley_up_start" ); + + a_m_checklist = getentarray( "plane_checklist", "targetname" ); + + foreach ( m_checklist in a_m_checklist ) + { + m_checklist showpart( "j_check_key" ); + m_checklist showpart( "j_strike_key" ); + } + + a_door_structs = getstructarray( "quest_trigger", "script_noteworthy" ); + + foreach ( struct in a_door_structs ) + { + if ( isdefined( struct.unitrigger_stub ) ) + struct.unitrigger_stub maps\mp\zombies\_zm_unitrigger::run_visibility_function_for_all_triggers(); + } + + player playsound( "evt_key_pickup" ); + player thread do_player_general_vox( "quest", "sidequest_key_response", undefined, 100 ); + //level setclientfield( "piece_key_warden", 1 ); +} \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_craftables.gsc b/scripts/zm/replaced/zm_tomb_craftables.gsc index 4d6a25e3..f4906828 100644 --- a/scripts/zm/replaced/zm_tomb_craftables.gsc +++ b/scripts/zm/replaced/zm_tomb_craftables.gsc @@ -13,6 +13,19 @@ #include maps\mp\zombies\_zm_equipment; #include maps\mp\zm_tomb_craftables; +vinyl_add_pickup( str_craftable_name, str_piece_name, str_model_name, str_bit_clientfield, str_quest_clientfield, str_vox_id ) +{ + if (str_bit_clientfield == "piece_record_zm_player" || str_bit_clientfield == "piece_record_zm_vinyl_master") + { + str_bit_clientfield = undefined; + } + + b_one_time_vo = 1; + craftable = generate_zombie_craftable_piece( str_craftable_name, str_piece_name, str_model_name, 32, 62, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, str_bit_clientfield, 1, str_vox_id, b_one_time_vo ); + craftable thread watch_part_pickup( str_quest_clientfield, 1 ); + return craftable; +} + quadrotor_control_thread() { self endon( "bled_out" ); diff --git a/scripts/zm/replaced/zm_tomb_main_quest.gsc b/scripts/zm/replaced/zm_tomb_main_quest.gsc index f5f969b3..b61736c6 100644 --- a/scripts/zm/replaced/zm_tomb_main_quest.gsc +++ b/scripts/zm/replaced/zm_tomb_main_quest.gsc @@ -337,6 +337,156 @@ staff_glow_fx() e_staff_standard.e_fx delete(); } +chambers_init() +{ + flag_init( "gramophone_placed" ); + array_thread( getentarray( "trigger_death_floor", "targetname" ), ::monitor_chamber_death_trigs ); + a_stargate_gramophones = getstructarray( "stargate_gramophone_pos", "targetname" ); + array_thread( a_stargate_gramophones, ::run_gramophone_teleporter ); + a_door_main = getentarray( "chamber_entrance", "targetname" ); + array_thread( a_door_main, ::run_gramophone_door, "vinyl_master" ); +} + +run_gramophone_teleporter( str_vinyl_record ) +{ + self.has_vinyl = 0; + self.gramophone_model = undefined; + self thread watch_gramophone_vinyl_pickup(); + t_gramophone = tomb_spawn_trigger_radius( self.origin, 60.0, 1 ); + t_gramophone set_unitrigger_hint_string( &"ZOMBIE_BUILD_PIECE_MORE" ); + + level waittill( "gramophone_vinyl_player_picked_up" ); + + str_craftablename = "gramophone"; + t_gramophone set_unitrigger_hint_string( &"ZM_TOMB_RU" ); + + while ( !self.has_vinyl ) + wait 0.05; + + t_gramophone set_unitrigger_hint_string( &"ZM_TOMB_PLGR" ); + + while ( true ) + { + t_gramophone waittill( "trigger", player ); + + if ( !isdefined( self.gramophone_model ) ) + { + if ( !flag( "gramophone_placed" ) ) + { + self.gramophone_model = spawn( "script_model", self.origin ); + self.gramophone_model.angles = self.angles; + self.gramophone_model setmodel( "p6_zm_tm_gramophone" ); + //level setclientfield( "piece_record_zm_player", 0 ); + flag_set( "gramophone_placed" ); + t_gramophone set_unitrigger_hint_string( "" ); + t_gramophone trigger_off(); + str_song_id = self get_gramophone_song(); + self.gramophone_model playsound( str_song_id ); + player thread maps\mp\zm_tomb_vo::play_gramophone_place_vo(); + maps\mp\zm_tomb_teleporter::stargate_teleport_enable( self.script_int ); + flag_wait( "teleporter_building_" + self.script_int ); + flag_waitopen( "teleporter_building_" + self.script_int ); + t_gramophone trigger_on(); + t_gramophone set_unitrigger_hint_string( &"ZM_TOMB_PUGR" ); + + if ( isdefined( self.script_flag ) ) + flag_set( self.script_flag ); + } + else + player door_gramophone_elsewhere_hint(); + } + else + { + self.gramophone_model delete(); + self.gramophone_model = undefined; + player playsound( "zmb_craftable_pickup" ); + flag_clear( "gramophone_placed" ); + //level setclientfield( "piece_record_zm_player", 1 ); + maps\mp\zm_tomb_teleporter::stargate_teleport_disable( self.script_int ); + t_gramophone set_unitrigger_hint_string( &"ZM_TOMB_PLGR" ); + } + } +} + +run_gramophone_door( str_vinyl_record ) +{ + flag_init( self.targetname + "_opened" ); + trig_position = getstruct( self.targetname + "_position", "targetname" ); + trig_position.has_vinyl = 0; + trig_position.gramophone_model = undefined; + trig_position thread watch_gramophone_vinyl_pickup(); + trig_position thread door_watch_open_sesame(); + t_door = tomb_spawn_trigger_radius( trig_position.origin, 60.0, 1 ); + t_door set_unitrigger_hint_string( &"ZOMBIE_BUILD_PIECE_MORE" ); + level waittill_any( "gramophone_vinyl_player_picked_up", "open_sesame", "open_all_gramophone_doors" ); + str_craftablename = "gramophone"; + t_door set_unitrigger_hint_string( &"ZM_TOMB_RU" ); + trig_position.trigger = t_door; + + while ( !trig_position.has_vinyl ) + wait 0.05; + + t_door set_unitrigger_hint_string( &"ZM_TOMB_PLGR" ); + + while ( true ) + { + t_door waittill( "trigger", player ); + + if ( !isdefined( trig_position.gramophone_model ) ) + { + if ( !flag( "gramophone_placed" ) || isdefined( level.b_open_all_gramophone_doors ) && level.b_open_all_gramophone_doors ) + { + if ( !( isdefined( level.b_open_all_gramophone_doors ) && level.b_open_all_gramophone_doors ) ) + { + trig_position.gramophone_model = spawn( "script_model", trig_position.origin ); + trig_position.gramophone_model.angles = trig_position.angles; + trig_position.gramophone_model setmodel( "p6_zm_tm_gramophone" ); + flag_set( "gramophone_placed" ); + //level setclientfield( "piece_record_zm_player", 0 ); + } + + t_door trigger_off(); + str_song = trig_position get_gramophone_song(); + playsoundatposition( str_song, self.origin ); + self playsound( "zmb_crypt_stairs" ); + wait 6.0; + chamber_blocker(); + flag_set( self.targetname + "_opened" ); + + if ( isdefined( trig_position.script_flag ) ) + flag_set( trig_position.script_flag ); + + level setclientfield( "crypt_open_exploder", 1 ); + self movez( -260, 10.0, 1.0, 1.0 ); + + self waittill( "movedone" ); + + self connectpaths(); + self delete(); + t_door trigger_on(); + t_door set_unitrigger_hint_string( &"ZM_TOMB_PUGR" ); + + if ( isdefined( level.b_open_all_gramophone_doors ) && level.b_open_all_gramophone_doors ) + break; + } + else + player door_gramophone_elsewhere_hint(); + } + else + { + trig_position.gramophone_model delete(); + trig_position.gramophone_model = undefined; + flag_clear( "gramophone_placed" ); + player playsound( "zmb_craftable_pickup" ); + //level setclientfield( "piece_record_zm_player", 1 ); + break; + } + } + + t_door tomb_unitrigger_delete(); + trig_position.trigger = undefined; +} + watch_staff_ammo_reload() { // removed max ammo clip fill diff --git a/scripts/zm/zm_prison/zm_prison_reimagined.gsc b/scripts/zm/zm_prison/zm_prison_reimagined.gsc index ddfab967..168697d5 100644 --- a/scripts/zm/zm_prison/zm_prison_reimagined.gsc +++ b/scripts/zm/zm_prison/zm_prison_reimagined.gsc @@ -6,6 +6,7 @@ #include maps\mp\zm_alcatraz_utility; #include scripts\zm\replaced\zm_alcatraz_classic; +#include scripts\zm\replaced\zm_alcatraz_craftables; #include scripts\zm\replaced\zm_alcatraz_gamemodes; #include scripts\zm\replaced\zm_alcatraz_utility; #include scripts\zm\replaced\zm_alcatraz_weap_quest; @@ -19,6 +20,7 @@ main() { replaceFunc(maps\mp\zm_alcatraz_classic::give_afterlife, scripts\zm\replaced\zm_alcatraz_classic::give_afterlife); + replaceFunc(maps\mp\zm_alcatraz_craftables::include_key_craftable, scripts\zm\replaced\zm_alcatraz_craftables::include_key_craftable); replaceFunc(maps\mp\zm_alcatraz_gamemodes::init, scripts\zm\replaced\zm_alcatraz_gamemodes::init); replaceFunc(maps\mp\zm_alcatraz_utility::blundergat_upgrade_station, scripts\zm\replaced\zm_alcatraz_utility::blundergat_upgrade_station); replaceFunc(maps\mp\zm_alcatraz_weap_quest::grief_soul_catcher_state_manager, scripts\zm\replaced\zm_alcatraz_weap_quest::grief_soul_catcher_state_manager); diff --git a/scripts/zm/zm_tomb/zm_tomb_reimagined.gsc b/scripts/zm/zm_tomb/zm_tomb_reimagined.gsc index ce243469..2211bf8a 100644 --- a/scripts/zm/zm_tomb/zm_tomb_reimagined.gsc +++ b/scripts/zm/zm_tomb/zm_tomb_reimagined.gsc @@ -34,6 +34,7 @@ main() replaceFunc(maps\mp\zm_tomb_challenges::challenges_init, scripts\zm\replaced\zm_tomb_challenges::challenges_init); replaceFunc(maps\mp\zm_tomb_craftables::quadrotor_control_thread, scripts\zm\replaced\zm_tomb_craftables::quadrotor_control_thread); replaceFunc(maps\mp\zm_tomb_craftables::quadrotor_set_unavailable, scripts\zm\replaced\zm_tomb_craftables::quadrotor_set_unavailable); + replaceFunc(maps\mp\zm_tomb_craftables::vinyl_add_pickup, scripts\zm\replaced\zm_tomb_craftables::vinyl_add_pickup); replaceFunc(maps\mp\zm_tomb_dig::increment_player_perk_purchase_limit, scripts\zm\replaced\zm_tomb_dig::increment_player_perk_purchase_limit); replaceFunc(maps\mp\zm_tomb_dig::dig_disconnect_watch, scripts\zm\replaced\zm_tomb_dig::dig_disconnect_watch); replaceFunc(maps\mp\zm_tomb_tank::players_on_tank_update, scripts\zm\replaced\zm_tomb_tank::players_on_tank_update);