mirror of
https://github.com/JezuzLizard/Recompilable-gscs-for-BO2-zombies-and-multiplayer.git
synced 2025-06-10 18:57:58 -05:00
354 lines
12 KiB
Plaintext
354 lines
12 KiB
Plaintext
#include maps/mp/zombies/_zm_unitrigger;
|
|
#include maps/mp/zm_highrise_elevators;
|
|
#include maps/mp/zombies/_zm_buildables;
|
|
#include maps/mp/zm_transit_utility;
|
|
#include maps/mp/zombies/_zm_weapons;
|
|
#include maps/mp/zombies/_zm_utility;
|
|
#include maps/mp/_utility;
|
|
#include common_scripts/utility;
|
|
|
|
init_buildables()
|
|
{
|
|
level.buildable_piece_count = 13;
|
|
add_zombie_buildable( "springpad_zm", &"ZM_HIGHRISE_BUILD_SPRINGPAD", &"ZM_HIGHRISE_BUILDING_SPRINGPAD", &"ZM_HIGHRISE_BOUGHT_SPRINGPAD" );
|
|
add_zombie_buildable( "slipgun_zm", &"ZM_HIGHRISE_BUILD_SLIPGUN", &"ZM_HIGHRISE_BUILDING_SLIPGUN", &"ZM_HIGHRISE_BOUGHT_SLIPGUN" );
|
|
add_zombie_buildable( "keys_zm", &"ZM_HIGHRISE_BUILD_KEYS", &"ZM_HIGHRISE_BUILDING_KEYS", &"ZM_HIGHRISE_BOUGHT_KEYS" );
|
|
add_zombie_buildable( "ekeys_zm", &"ZM_HIGHRISE_BUILD_KEYS", &"ZM_HIGHRISE_BUILDING_KEYS", &"ZM_HIGHRISE_BOUGHT_KEYS" );
|
|
add_zombie_buildable( "sq_common", &"ZOMBIE_BUILD_SQ_COMMON", &"ZOMBIE_BUILDING_SQ_COMMON" );
|
|
}
|
|
|
|
include_buildables()
|
|
{
|
|
springpad_door = generate_zombie_buildable_piece( "springpad_zm", "p6_zm_buildable_tramplesteam_door", 32, 64, 0, "zom_hud_trample_steam_screen", ::onpickup_common, ::ondrop_common, undefined, "Tag_part_02", undefined, 1 );
|
|
springpad_flag = generate_zombie_buildable_piece( "springpad_zm", "p6_zm_buildable_tramplesteam_bellows", 48, 15, 0, "zom_hud_trample_steam_bellow", ::onpickup_common, ::ondrop_common, undefined, "Tag_part_04", undefined, 2 );
|
|
springpad_motor = generate_zombie_buildable_piece( "springpad_zm", "p6_zm_buildable_tramplesteam_compressor", 48, 15, 0, "zom_hud_trample_steam_compressor", ::onpickup_common, ::ondrop_common, undefined, "Tag_part_01", undefined, 3 );
|
|
springpad_whistle = generate_zombie_buildable_piece( "springpad_zm", "p6_zm_buildable_tramplesteam_flag", 48, 15, 0, "zom_hud_trample_steam_whistle", ::onpickup_common, ::ondrop_common, undefined, "Tag_part_03", undefined, 4 );
|
|
springpad = spawnstruct();
|
|
springpad.name = "springpad_zm";
|
|
springpad add_buildable_piece( springpad_door );
|
|
springpad add_buildable_piece( springpad_flag );
|
|
springpad add_buildable_piece( springpad_motor );
|
|
springpad add_buildable_piece( springpad_whistle );
|
|
springpad.triggerthink = ::springpadbuildable;
|
|
include_buildable( springpad );
|
|
slipgun_canister = generate_zombie_buildable_piece( "slipgun_zm", "t6_zmb_buildable_slipgun_extinguisher", 32, 64, 0, "zom_hud_icon_buildable_slip_ext", ::onpickup_common, ::ondrop_common, undefined, "TAG_CO2", undefined, 5 );
|
|
slipgun_cooker = generate_zombie_buildable_piece( "slipgun_zm", "t6_zmb_buildable_slipgun_cooker", 48, 15, 0, "zom_hud_icon_buildable_slip_cooker", ::onpickup_common, ::ondrop_common, undefined, "TAG_COOKER", undefined, 6 );
|
|
slipgun_foot = generate_zombie_buildable_piece( "slipgun_zm", "t6_zmb_buildable_slipgun_foot", 48, 15, 0, "zom_hud_icon_buildable_slip_foot", ::onpickup_common, ::ondrop_common, undefined, "TAG_FOOT", undefined, 7 );
|
|
slipgun_throttle = generate_zombie_buildable_piece( "slipgun_zm", "t6_zmb_buildable_slipgun_throttle", 48, 15, 0, "zom_hud_icon_buildable_slip_handle", ::onpickup_common, ::ondrop_common, undefined, "TAG_THROTTLE", undefined, 8 );
|
|
slipgun = spawnstruct();
|
|
slipgun.name = "slipgun_zm";
|
|
slipgun add_buildable_piece( slipgun_canister );
|
|
slipgun add_buildable_piece( slipgun_cooker );
|
|
slipgun add_buildable_piece( slipgun_foot );
|
|
slipgun add_buildable_piece( slipgun_throttle );
|
|
slipgun.onbuyweapon = ::onbuyweapon_slipgun;
|
|
slipgun.triggerthink = ::slipgunbuildable;
|
|
slipgun.onuseplantobject = ::onuseplantobject_slipgun;
|
|
include_buildable( slipgun );
|
|
key_chain = generate_zombie_buildable_piece( "keys_zm", "P6_zm_hr_key", 32, 64, 2,4, "zom_hud_icon_epod_key", ::onpickup_keys, ::ondrop_keys, undefined, undefined, 0, 9 );
|
|
key_chain.onspawn = ::onspawn_keys;
|
|
key_chain manage_multiple_pieces( 4 );
|
|
key = spawnstruct();
|
|
key.name = "keys_zm";
|
|
key add_buildable_piece( key_chain );
|
|
key.triggerthink = ::keysbuildable;
|
|
key.onuseplantobject = ::onuseplantobject_escapepodkey;
|
|
key.buildablepieces[ 0 ].onspawn = ::onspawn_keys;
|
|
include_buildable( key );
|
|
ekey = spawnstruct();
|
|
ekey.name = "ekeys_zm";
|
|
ekey add_buildable_piece( key_chain );
|
|
ekey.triggerthink = ::ekeysbuildable;
|
|
ekey.onuseplantobject = ::onuseplantobject_elevatorkey;
|
|
ekey.buildablepieces[ 0 ].onspawn = ::onspawn_keys;
|
|
include_buildable( ekey );
|
|
if ( !isDefined( level.gamedifficulty ) || level.gamedifficulty != 0 )
|
|
{
|
|
sq_common_electricbox = generate_zombie_buildable_piece( "sq_common", "p6_zm_buildable_sq_electric_box", 32, 64, 0, "zm_hud_icon_sq_powerbox", ::onpickup_common, ::ondrop_common, undefined, "tag_part_02", undefined, 10 );
|
|
sq_common_meteor = generate_zombie_buildable_piece( "sq_common", "p6_zm_buildable_sq_meteor", 128, 64, 0, "zm_hud_icon_sq_meteor", ::onpickup_common, ::ondrop_common, undefined, "tag_part_04", undefined, 11 );
|
|
sq_common_scaffolding = generate_zombie_buildable_piece( "sq_common", "p6_zm_buildable_sq_scaffolding", 64, 96, 0, "zm_hud_icon_sq_scafold", ::onpickup_common, ::ondrop_common, undefined, "tag_part_01", undefined, 12 );
|
|
sq_common_transceiver = generate_zombie_buildable_piece( "sq_common", "p6_zm_buildable_sq_transceiver", 64, 96, 0, "zm_hud_icon_sq_tranceiver", ::onpickup_common, ::ondrop_common, undefined, "tag_part_03", undefined, 13 );
|
|
sqcommon = spawnstruct();
|
|
sqcommon.name = "sq_common";
|
|
sqcommon add_buildable_piece( sq_common_electricbox );
|
|
sqcommon add_buildable_piece( sq_common_meteor );
|
|
sqcommon add_buildable_piece( sq_common_scaffolding );
|
|
sqcommon add_buildable_piece( sq_common_transceiver );
|
|
sqcommon.triggerthink = ::sqcommonbuildable;
|
|
include_buildable( sqcommon );
|
|
maps/mp/zombies/_zm_buildables::hide_buildable_table_model( "sq_common_buildable_trigger" );
|
|
}
|
|
}
|
|
|
|
springpadbuildable()
|
|
{
|
|
maps/mp/zombies/_zm_buildables::buildable_trigger_think( "springpad_zm_buildable_trigger", "springpad_zm", "equip_springpad_zm", &"ZM_HIGHRISE_GRAB_SPRINGPAD", 1, 1 );
|
|
}
|
|
|
|
slipgunbuildable()
|
|
{
|
|
level thread wait_for_slipgun();
|
|
if ( isDefined( level.slipgun_as_equipment ) && !level.slipgun_as_equipment )
|
|
{
|
|
persist = 2;
|
|
}
|
|
else
|
|
{
|
|
persist = 1;
|
|
}
|
|
maps/mp/zombies/_zm_buildables::buildable_trigger_think( "slipgun_zm_buildable_trigger", "slipgun_zm", "slipgun_zm", &"ZM_HIGHRISE_GRAB_SLIPGUN", 1, persist );
|
|
}
|
|
|
|
keysbuildable()
|
|
{
|
|
pod_key = maps/mp/zombies/_zm_buildables::buildable_trigger_think( "escape_pod_key_console_trigger", "keys_zm", "keys_zm", "", 1, 3 );
|
|
pod_key.prompt_and_visibility_func = ::escape_pod_key_prompt;
|
|
}
|
|
|
|
ekeysbuildable()
|
|
{
|
|
elevator_keys = maps/mp/zombies/_zm_buildables::buildable_trigger_think_array( "elevator_key_console_trigger", "ekeys_zm", "keys_zm", "", 1, 3 );
|
|
_a143 = elevator_keys;
|
|
_k143 = getFirstArrayKey( _a143 );
|
|
while ( isDefined( _k143 ) )
|
|
{
|
|
stub = _a143[ _k143 ];
|
|
stub.prompt_and_visibility_func = ::elevator_key_prompt;
|
|
stub.buildablezone.stat_name = "keys_zm";
|
|
_k143 = getNextArrayKey( _a143, _k143 );
|
|
}
|
|
}
|
|
|
|
ondrop_common( player )
|
|
{
|
|
/#
|
|
println( "ZM >> Common part callback onDrop()" );
|
|
#/
|
|
self droponelevator( player );
|
|
self.piece_owner = undefined;
|
|
}
|
|
|
|
onpickup_common( player )
|
|
{
|
|
/#
|
|
println( "ZM >> Common part callback onPickup()" );
|
|
#/
|
|
player playsound( "zmb_buildable_pickup" );
|
|
self pickupfromelevator();
|
|
self.piece_owner = player;
|
|
}
|
|
|
|
sqcommonbuildable()
|
|
{
|
|
level.sq_buildable = maps/mp/zombies/_zm_buildables::buildable_trigger_think( "sq_common_buildable_trigger", "sq_common", "sq_common", "", 1, 0 );
|
|
}
|
|
|
|
onbuyweapon_slipgun( player )
|
|
{
|
|
player givestartammo( self.stub.weaponname );
|
|
player switchtoweapon( self.stub.weaponname );
|
|
level notify( "slipgun_bought" );
|
|
}
|
|
|
|
wait_for_slipgun()
|
|
{
|
|
level.zombie_include_weapons[ "slipgun_zm" ] = 0;
|
|
if ( isDefined( level.slipgun_as_equipment ) && !level.slipgun_as_equipment )
|
|
{
|
|
level waittill( "slipgun_bought", player );
|
|
level.zombie_include_weapons[ "slipgun_zm" ] = 1;
|
|
level.zombie_weapons[ "slipgun_zm" ].is_in_box = 1;
|
|
}
|
|
}
|
|
|
|
keyscreateglint()
|
|
{
|
|
if ( !isDefined( self.model.glint_fx ) )
|
|
{
|
|
playfxontag( level._effect[ "elevator_glint" ], self.model, "tag_origin" );
|
|
}
|
|
}
|
|
|
|
onspawn_keys()
|
|
{
|
|
self keyscreateglint();
|
|
}
|
|
|
|
ondrop_keys( player )
|
|
{
|
|
self keyscreateglint();
|
|
}
|
|
|
|
onpickup_keys( player )
|
|
{
|
|
}
|
|
|
|
escape_pod_key_prompt( player )
|
|
{
|
|
if ( !flag( "escape_pod_needs_reset" ) )
|
|
{
|
|
self.stub.hint_string = "";
|
|
self sethintstring( self.stub.hint_string );
|
|
return 0;
|
|
}
|
|
return self buildabletrigger_update_prompt( player );
|
|
}
|
|
|
|
onuseplantobject_escapepodkey( player )
|
|
{
|
|
level notify( "reset_escape_pod" );
|
|
}
|
|
|
|
watch_elevator_prompt( player, trig )
|
|
{
|
|
player notify( "watch_elevator_prompt" );
|
|
player endon( "watch_elevator_prompt" );
|
|
trig endon( "kill_trigger" );
|
|
while ( 1 )
|
|
{
|
|
trig.stub.elevator waittill( "floor_changed" );
|
|
if ( isDefined( self.stub.elevator ) )
|
|
{
|
|
if ( trig.stub.elevator maps/mp/zm_highrise_elevators::elevator_is_on_floor( trig.stub.floor ) )
|
|
{
|
|
thread maps/mp/zombies/_zm_unitrigger::cleanup_trigger( trig, player );
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
elevator_key_prompt( player )
|
|
{
|
|
if ( !isDefined( self.stub.elevator ) )
|
|
{
|
|
elevatorname = self.stub.script_noteworthy;
|
|
if ( isDefined( elevatorname ) && isDefined( self.stub.script_parameters ) )
|
|
{
|
|
elevator = level.elevators[ elevatorname ];
|
|
floor = int( self.stub.script_parameters );
|
|
flevel = elevator maps/mp/zm_highrise_elevators::elevator_level_for_floor( floor );
|
|
self.stub.elevator = elevator;
|
|
self.stub.floor = flevel;
|
|
}
|
|
}
|
|
/#
|
|
if ( !isDefined( self.stub.elevator ) )
|
|
{
|
|
if ( isDefined( self.stub.script_noteworthy ) )
|
|
{
|
|
error( "Cannot locate elevator " + self.stub.script_noteworthy );
|
|
}
|
|
else
|
|
{
|
|
error( "Cannot locate elevator " );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color = vectorScale( ( 0, 0, 1 ), 0,7 );
|
|
stop = self.stub.floor;
|
|
floor = self.stub.elevator.floors[ "" + stop ].script_location;
|
|
text = "call " + self.stub.script_noteworthy + " to stop " + stop + " floor " + floor + "";
|
|
if ( getDvarInt( #"B67910B4" ) )
|
|
{
|
|
print3d( self.stub.origin, text, color, 1, 0,5, 300 );
|
|
#/
|
|
}
|
|
}
|
|
if ( isDefined( self.stub.elevator ) )
|
|
{
|
|
if ( self.stub.elevator maps/mp/zm_highrise_elevators::elevator_is_on_floor( self.stub.floor ) )
|
|
{
|
|
self.stub.hint_string = "";
|
|
self sethintstring( self.stub.hint_string );
|
|
return 0;
|
|
}
|
|
}
|
|
if ( !flag( "power_on" ) )
|
|
{
|
|
self.stub.hint_string = "";
|
|
self sethintstring( self.stub.hint_string );
|
|
return 0;
|
|
}
|
|
can_use = self buildabletrigger_update_prompt( player );
|
|
if ( can_use )
|
|
{
|
|
thread watch_elevator_prompt( player, self );
|
|
}
|
|
return can_use;
|
|
}
|
|
|
|
onuseplantobject_elevatorkey( player )
|
|
{
|
|
elevatorname = self.script_noteworthy;
|
|
if ( isDefined( elevatorname ) && isDefined( self.script_parameters ) )
|
|
{
|
|
floor = int( self.script_parameters );
|
|
elevator = level.elevators[ elevatorname ];
|
|
if ( isDefined( elevator ) )
|
|
{
|
|
elevator.body.force_starting_floor = floor;
|
|
elevator.body notify( "forcego" );
|
|
}
|
|
}
|
|
}
|
|
|
|
droponelevator( player )
|
|
{
|
|
if ( isDefined( player ) && isDefined( player maps/mp/zm_highrise_elevators::object_is_on_elevator() ) && player maps/mp/zm_highrise_elevators::object_is_on_elevator() )
|
|
{
|
|
self.model linkto( player.elevator_parent );
|
|
self.linked_to_elevator = 1;
|
|
self.unitrigger.link_parent = player.elevator_parent;
|
|
}
|
|
else
|
|
{
|
|
self.unitrigger.link_parent = undefined;
|
|
}
|
|
}
|
|
|
|
pickupfromelevator()
|
|
{
|
|
if ( isDefined( self.linked_to_elevator ) && self.linked_to_elevator )
|
|
{
|
|
if ( isDefined( self.model ) )
|
|
{
|
|
self.model unlink();
|
|
}
|
|
self.linked_to_elevator = undefined;
|
|
}
|
|
if ( isDefined( self.unitrigger ) )
|
|
{
|
|
self.unitrigger.link_parent = undefined;
|
|
}
|
|
}
|
|
|
|
onuseplantobject_slipgun( player )
|
|
{
|
|
/#
|
|
println( "ZM >> Slipgun Buildable CallBack onUsePlantObject()" );
|
|
#/
|
|
buildable = self.buildablezone;
|
|
first_part = "TAG_COOKER";
|
|
second_part = "TAG_BASE";
|
|
i = 0;
|
|
while ( i < buildable.pieces.size )
|
|
{
|
|
if ( buildable.pieces[ i ].part_name == first_part )
|
|
{
|
|
if ( isDefined( buildable.pieces[ i ].built ) || buildable.pieces[ i ].built && player.current_buildable_piece.part_name == first_part )
|
|
{
|
|
buildable.stub.model showpart( second_part );
|
|
i++;
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
buildable.stub.model hidepart( second_part );
|
|
}
|
|
}
|
|
i++;
|
|
}
|
|
}
|