diff --git a/README.md b/README.md index f1ea3d19..eb0fb689 100644 --- a/README.md +++ b/README.md @@ -382,6 +382,7 @@ * Fountain portal automatically active * Navcard table automatically crafted * Players can no longer get into the corner next to Juggernog +* Fixed hint strings on buildables when purchased #### Borough * Tunnels disabled diff --git a/scripts/zm/replaced/_zm_buildables_pooled.gsc b/scripts/zm/replaced/_zm_buildables_pooled.gsc new file mode 100644 index 00000000..583ad3d4 --- /dev/null +++ b/scripts/zm/replaced/_zm_buildables_pooled.gsc @@ -0,0 +1,59 @@ +#include maps\mp\_utility; +#include common_scripts\utility; +#include maps\mp\zombies\_zm_utility; +#include maps/mp/zombies/_zm_buildables_pooled; + +add_buildable_to_pool( stub, poolname ) +{ + if ( !isDefined( level.buildablepools ) ) + { + level.buildablepools = []; + } + if ( !isDefined( level.buildablepools[ poolname ] ) ) + { + level.buildablepools[ poolname ] = spawnstruct(); + level.buildablepools[ poolname ].stubs = []; + } + level.buildablepools[ poolname ].stubs[ level.buildablepools[ poolname ].stubs.size ] = stub; + if ( !isDefined( level.buildablepools[ poolname ].buildable_slot ) ) + { + level.buildablepools[ poolname ].buildable_slot = stub.buildablestruct.buildable_slot; + } + stub.buildable_pool = level.buildablepools[ poolname ]; + stub.original_prompt_and_visibility_func = stub.prompt_and_visibility_func; + stub.original_trigger_func = stub.trigger_func; + stub.prompt_and_visibility_func = ::pooledbuildabletrigger_update_prompt; + reregister_unitrigger( stub, ::pooled_buildable_place_think ); +} + +pooledbuildabletrigger_update_prompt( player ) +{ + can_use = self.stub pooledbuildablestub_update_prompt( player, self ); + self sethintstring( self.stub.hint_string ); + if ( isDefined( self.stub.cursor_hint ) ) + { + if ( self.stub.cursor_hint == "HINT_WEAPON" && isDefined( self.stub.cursor_hint_weapon ) ) + { + self setcursorhint( self.stub.cursor_hint, self.stub.cursor_hint_weapon ); + } + else + { + self setcursorhint( self.stub.cursor_hint ); + } + } + if(can_use) + { + self thread pooledbuildabletrigger_wait_and_update_prompt( player ); + } + return can_use; +} + +pooledbuildabletrigger_wait_and_update_prompt( player ) +{ + self notify("pooledbuildabletrigger_wait_and_update_prompt"); + self endon("pooledbuildabletrigger_wait_and_update_prompt"); + + self waittill("trigger"); + + self pooledbuildabletrigger_update_prompt( player ); +} \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_buildables.gsc b/scripts/zm/replaced/zm_buried_buildables.gsc new file mode 100644 index 00000000..fd489bc6 --- /dev/null +++ b/scripts/zm/replaced/zm_buried_buildables.gsc @@ -0,0 +1,100 @@ +#include maps\mp\_utility; +#include common_scripts\utility; +#include maps\mp\zombies\_zm_utility; +#include maps/mp/zm_buried_buildables; +#include maps/mp/zombies/_zm_buildables; + +init_buildables( buildablesenabledlist ) +{ + registerclientfield( "scriptmover", "buildable_glint_fx", 12000, 1, "int" ); + precacheitem( "chalk_draw_zm" ); + precacheitem( "no_hands_zm" ); + level._effect[ "wallbuy_replace" ] = loadfx( "maps/zombie_buried/fx_buried_booze_candy_spawn" ); + level._effect[ "wallbuy_drawing" ] = loadfx( "maps/zombie/fx_zmb_wall_dyn_chalk_drawing" ); + level.str_buildables_build = &"ZOMBIE_BUILD_SQ_COMMON"; + level.str_buildables_building = &"ZOMBIE_BUILDING_SQ_COMMON"; + level.str_buildables_grab_part = &"ZOMBIE_BUILD_PIECE_GRAB"; + level.str_buildables_swap_part = &"ZOMBIE_BUILD_PIECE_SWITCH"; + level.safe_place_for_buildable_piece = ::safe_place_for_buildable_piece; + level.buildable_slot_count = max( 1, 2 ) + 1; + level.buildable_clientfields = []; + level.buildable_clientfields[ 0 ] = "buildable"; + level.buildable_clientfields[ 1 ] = "buildable" + "_pu"; + level.buildable_piece_counts = []; + level.buildable_piece_counts[ 0 ] = 15; + level.buildable_piece_counts[ 1 ] = 4; + if ( -1 ) + { + level.buildable_clientfields[ 2 ] = "buildable" + "_sq"; + level.buildable_piece_counts[ 2 ] = 13; + } + if ( isinarray( buildablesenabledlist, "sq_common" ) ) + { + add_zombie_buildable( "sq_common", level.str_buildables_build, level.str_buildables_building ); + } + if ( isinarray( buildablesenabledlist, "buried_sq_tpo_switch" ) ) + { + add_zombie_buildable( "buried_sq_tpo_switch", level.str_buildables_build, level.str_buildables_building ); + } + if ( isinarray( buildablesenabledlist, "buried_sq_ghost_lamp" ) ) + { + add_zombie_buildable( "buried_sq_ghost_lamp", level.str_buildables_build, level.str_buildables_building ); + } + if ( isinarray( buildablesenabledlist, "buried_sq_bt_m_tower" ) ) + { + add_zombie_buildable( "buried_sq_bt_m_tower", level.str_buildables_build, level.str_buildables_building ); + } + if ( isinarray( buildablesenabledlist, "buried_sq_bt_r_tower" ) ) + { + add_zombie_buildable( "buried_sq_bt_r_tower", level.str_buildables_build, level.str_buildables_building ); + } + if ( isinarray( buildablesenabledlist, "buried_sq_oillamp" ) ) + { + add_zombie_buildable( "buried_sq_oillamp", level.str_buildables_build, level.str_buildables_building, &"NULL_EMPTY" ); + } + if ( isinarray( buildablesenabledlist, "turbine" ) ) + { + add_zombie_buildable( "turbine", level.str_buildables_build, level.str_buildables_building, &"ZOMBIE_BUILD_PIECE_HAVE_ONE" ); + add_zombie_buildable_vox_category( "turbine", "trb" ); + } + if ( isinarray( buildablesenabledlist, "springpad_zm" ) ) + { + add_zombie_buildable( "springpad_zm", level.str_buildables_build, level.str_buildables_building, &"ZOMBIE_BUILD_PIECE_HAVE_ONE" ); + add_zombie_buildable_vox_category( "springpad_zm", "stm" ); + } + if ( isinarray( buildablesenabledlist, "subwoofer_zm" ) ) + { + add_zombie_buildable( "subwoofer_zm", level.str_buildables_build, level.str_buildables_building, &"ZOMBIE_BUILD_PIECE_HAVE_ONE" ); + add_zombie_buildable_vox_category( "subwoofer_zm", "sw" ); + } + if ( isinarray( buildablesenabledlist, "headchopper_zm" ) ) + { + add_zombie_buildable( "headchopper_zm", level.str_buildables_build, level.str_buildables_building, &"ZOMBIE_BUILD_PIECE_HAVE_ONE" ); + add_zombie_buildable_vox_category( "headchopper_zm", "hc" ); + } + if ( isinarray( buildablesenabledlist, "booze" ) ) + { + add_zombie_buildable( "booze", &"ZM_BURIED_LEAVE_BOOZE", level.str_buildables_building, &"NULL_EMPTY" ); + add_zombie_buildable_piece_vox_category( "booze", "booze" ); + } + if ( isinarray( buildablesenabledlist, "candy" ) ) + { + add_zombie_buildable( "candy", &"ZM_BURIED_LEAVE_CANDY", level.str_buildables_building, &"NULL_EMPTY" ); + add_zombie_buildable_piece_vox_category( "candy", "candy" ); + } + if ( isinarray( buildablesenabledlist, "chalk" ) ) + { + add_zombie_buildable( "chalk", &"NULL_EMPTY", level.str_buildables_building, &"NULL_EMPTY" ); + add_zombie_buildable_piece_vox_category( "chalk", "gunshop_chalk", 300 ); + } + if ( isinarray( buildablesenabledlist, "sloth" ) ) + { + add_zombie_buildable( "sloth", &"ZM_BURIED_BOOZE_GV", level.str_buildables_building, &"NULL_EMPTY" ); + } + if ( isinarray( buildablesenabledlist, "keys_zm" ) ) + { + add_zombie_buildable( "keys_zm", &"ZM_BURIED_KEYS_BL", level.str_buildables_building, &"NULL_EMPTY" ); + add_zombie_buildable_piece_vox_category( "keys_zm", "key" ); + } + level thread chalk_host_migration(); +} \ 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 46ca6efe..e39cc2f7 100644 --- a/scripts/zm/zm_buried/zm_buried_reimagined.gsc +++ b/scripts/zm/zm_buried/zm_buried_reimagined.gsc @@ -2,6 +2,8 @@ #include common_scripts\utility; #include maps\mp\zombies\_zm_utility; +#include scripts/zm/replaced/zm_buried_buildables; +#include scripts/zm/replaced/_zm_buildables_pooled; #include scripts/zm/replaced/_zm_equip_subwoofer; #include scripts/zm/replaced/_zm_banking; #include scripts/zm/replaced/_zm_weap_slowgun; @@ -10,6 +12,8 @@ main() { precachemodel( "collision_wall_128x128x10_standard" ); + replaceFunc(maps/mp/zm_buried_buildables::init_buildables, scripts/zm/replaced/zm_buried_buildables::init_buildables); + replaceFunc(maps/mp/zombies/_zm_buildables_pooled::add_buildable_to_pool, scripts/zm/replaced/_zm_buildables_pooled::add_buildable_to_pool); replaceFunc(maps/mp/zombies/_zm_equip_subwoofer::startsubwooferdecay, scripts/zm/replaced/_zm_equip_subwoofer::startsubwooferdecay); replaceFunc(maps/mp/zombies/_zm_equip_subwoofer::subwoofer_network_choke, scripts/zm/replaced/_zm_equip_subwoofer::subwoofer_network_choke); replaceFunc(maps/mp/zombies/_zm_weap_slowgun::watch_reset_anim_rate, scripts/zm/replaced/_zm_weap_slowgun::watch_reset_anim_rate);