mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-13 00:28:03 -05:00
Die Rise: elevators can be locked at their current floor
Die Rise: escape pod can be called up or down Die Rise: elevators and escape pod triggers require look at
This commit is contained in:
@ -584,7 +584,9 @@
|
|||||||
### Die Rise
|
### Die Rise
|
||||||
* Removed key
|
* Removed key
|
||||||
* Elevators and escape pod can be called without key
|
* Elevators and escape pod can be called without key
|
||||||
|
* Elevators can be locked at their current floor
|
||||||
* Escape pod can be used with any amount of players
|
* Escape pod can be used with any amount of players
|
||||||
|
* Escape pod can be called up or down
|
||||||
* Moved weapon locker to the downstairs fridge
|
* Moved weapon locker to the downstairs fridge
|
||||||
* Quick Revive elevator randomizes with Speed Cola and Who's Who elevators
|
* Quick Revive elevator randomizes with Speed Cola and Who's Who elevators
|
||||||
* Zombies are no longer killed while spawning in a stationary elevator
|
* Zombies are no longer killed while spawning in a stationary elevator
|
||||||
|
@ -23,12 +23,12 @@ escape_pod()
|
|||||||
used_at_least_once = 0;
|
used_at_least_once = 0;
|
||||||
escape_pod setanim( level.escape_elevator_1_state );
|
escape_pod setanim( level.escape_elevator_1_state );
|
||||||
escape_pod setclientfield( "clientfield_escape_pod_light_fx", 1 );
|
escape_pod setclientfield( "clientfield_escape_pod_light_fx", 1 );
|
||||||
|
escape_pod thread escape_pod_state_run();
|
||||||
escape_pod_trigger thread escape_pod_walk_on_off( escape_pod );
|
escape_pod_trigger thread escape_pod_walk_on_off( escape_pod );
|
||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
escape_pod setanim( level.escape_elevator_idle );
|
escape_pod setanim( level.escape_elevator_idle );
|
||||||
flag_clear( "escape_pod_needs_reset" );
|
|
||||||
|
|
||||||
if ( isdefined( escape_pod_blocker_door ) )
|
if ( isdefined( escape_pod_blocker_door ) )
|
||||||
{
|
{
|
||||||
@ -41,38 +41,17 @@ escape_pod()
|
|||||||
if ( is_true( used_at_least_once ) )
|
if ( is_true( used_at_least_once ) )
|
||||||
wait 3;
|
wait 3;
|
||||||
|
|
||||||
escape_pod thread escape_pod_state_run();
|
level thread escape_pod_wait_for_players_inside( escape_pod, escape_pod_trigger );
|
||||||
|
|
||||||
while ( true )
|
flag_set( "escape_pod_needs_reset" );
|
||||||
{
|
|
||||||
players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside();
|
|
||||||
|
|
||||||
if ( players_in_escape_pod.size == 0 )
|
level waittill( "reset_escape_pod" );
|
||||||
{
|
|
||||||
escape_pod.escape_pod_state = 1;
|
|
||||||
wait 0.05;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside();
|
flag_clear( "escape_pod_needs_reset" );
|
||||||
|
|
||||||
if ( players_in_escape_pod.size > 0 )
|
|
||||||
{
|
|
||||||
escape_pod.escape_pod_state = 2;
|
|
||||||
|
|
||||||
escape_pod thread escape_pod_tell_fx();
|
|
||||||
wait 3;
|
|
||||||
players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside();
|
|
||||||
|
|
||||||
if ( players_in_escape_pod.size > 0 )
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
wait 0.05;
|
|
||||||
}
|
|
||||||
|
|
||||||
level notify( "escape_pod_falling_begin" );
|
level notify( "escape_pod_falling_begin" );
|
||||||
|
|
||||||
|
players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside();
|
||||||
foreach ( player in players_in_escape_pod )
|
foreach ( player in players_in_escape_pod )
|
||||||
{
|
{
|
||||||
player.riding_escape_pod = 1;
|
player.riding_escape_pod = 1;
|
||||||
@ -154,6 +133,42 @@ escape_pod()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
escape_pod_wait_for_players_inside( escape_pod, escape_pod_trigger )
|
||||||
|
{
|
||||||
|
level endon( "reset_escape_pod" );
|
||||||
|
|
||||||
|
while ( true )
|
||||||
|
{
|
||||||
|
players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside();
|
||||||
|
|
||||||
|
if ( players_in_escape_pod.size == 0 )
|
||||||
|
{
|
||||||
|
escape_pod.escape_pod_state = 1;
|
||||||
|
wait 0.05;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside();
|
||||||
|
|
||||||
|
if ( players_in_escape_pod.size > 0 )
|
||||||
|
{
|
||||||
|
escape_pod.escape_pod_state = 2;
|
||||||
|
|
||||||
|
escape_pod thread escape_pod_tell_fx();
|
||||||
|
wait 3;
|
||||||
|
players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside();
|
||||||
|
|
||||||
|
if ( players_in_escape_pod.size > 0 )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
|
level notify( "reset_escape_pod" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
escape_pod_get_all_alive_players_inside()
|
escape_pod_get_all_alive_players_inside()
|
||||||
{
|
{
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
@ -249,6 +249,29 @@ elevator_think( elevator )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
elevator_initial_wait( elevator, minwait, maxwait, delaybeforeleaving )
|
||||||
|
{
|
||||||
|
elevator.body endon( "forcego" );
|
||||||
|
elevator.body waittill_any_or_timeout( randomintrange( minwait, maxwait ), "depart_early" );
|
||||||
|
|
||||||
|
if ( !is_true( elevator.body.lock_doors ) && !is_true( elevator.body.elevator_stop ) )
|
||||||
|
elevator.body setanim( level.perk_elevators_anims[elevator.body.perk_type][0] );
|
||||||
|
|
||||||
|
if ( !is_true( elevator.body.departing_early ) )
|
||||||
|
wait( delaybeforeleaving );
|
||||||
|
|
||||||
|
if ( elevator.body.perk_type == "specialty_weapupgrade" )
|
||||||
|
{
|
||||||
|
while ( flag( "pack_machine_in_use" ) )
|
||||||
|
wait 0.5;
|
||||||
|
|
||||||
|
wait( randomintrange( 1, 3 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
while ( isdefined( level.elevators_stop ) && level.elevators_stop || isdefined( elevator.body.elevator_stop ) && elevator.body.elevator_stop )
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
faller_location_logic()
|
faller_location_logic()
|
||||||
{
|
{
|
||||||
wait 1;
|
wait 1;
|
||||||
|
@ -159,37 +159,55 @@ custom_faller_entrance_logic()
|
|||||||
elevator_call()
|
elevator_call()
|
||||||
{
|
{
|
||||||
trigs = getentarray( "elevator_key_console_trigger", "targetname" );
|
trigs = getentarray( "elevator_key_console_trigger", "targetname" );
|
||||||
|
|
||||||
|
foreach (trig in trigs)
|
||||||
|
{
|
||||||
|
elevatorname = trig.script_noteworthy;
|
||||||
|
|
||||||
|
if ( isdefined( elevatorname ) && isdefined( trig.script_parameters ) )
|
||||||
|
{
|
||||||
|
elevator = level.elevators[elevatorname];
|
||||||
|
floor = int( trig.script_parameters );
|
||||||
|
flevel = elevator maps\mp\zm_highrise_elevators::elevator_level_for_floor( floor );
|
||||||
|
trig.elevator = elevator;
|
||||||
|
trig.floor = flevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
trig usetriggerrequirelookat();
|
||||||
|
trig sethintstring( &"ZOMBIE_NEED_POWER" );
|
||||||
|
}
|
||||||
|
|
||||||
|
flag_wait( "power_on" );
|
||||||
|
|
||||||
foreach (trig in trigs)
|
foreach (trig in trigs)
|
||||||
{
|
{
|
||||||
trig thread elevator_call_think();
|
trig thread elevator_call_think();
|
||||||
|
trig thread watch_elevator_prompt();
|
||||||
|
trig thread watch_elevator_body_prompt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
elevator_call_think()
|
elevator_call_think()
|
||||||
{
|
{
|
||||||
self sethintstring( &"ZM_HIGHRISE_BUILD_KEYS" );
|
self notify( "elevator_call_think" );
|
||||||
self trigger_off();
|
self endon( "elevator_call_think" );
|
||||||
|
|
||||||
elevatorname = self.script_noteworthy;
|
|
||||||
|
|
||||||
if ( isdefined( elevatorname ) && isdefined( self.script_parameters ) )
|
|
||||||
{
|
|
||||||
elevator = level.elevators[elevatorname];
|
|
||||||
floor = int( self.script_parameters );
|
|
||||||
flevel = elevator maps\mp\zm_highrise_elevators::elevator_level_for_floor( floor );
|
|
||||||
self.elevator = elevator;
|
|
||||||
self.floor = flevel;
|
|
||||||
}
|
|
||||||
|
|
||||||
flag_wait( "power_on" );
|
|
||||||
|
|
||||||
self thread watch_elevator_prompt();
|
|
||||||
|
|
||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
while ( self.elevator maps\mp\zm_highrise_elevators::elevator_is_on_floor( self.floor ) )
|
if ( !self.elevator.body.is_moving && self.elevator maps\mp\zm_highrise_elevators::elevator_is_on_floor( self.floor ) )
|
||||||
{
|
{
|
||||||
self.elevator waittill( "floor_changed" );
|
if ( !is_true( self.elevator.body.elevator_stop ) )
|
||||||
|
{
|
||||||
|
self sethintstring( "Hold ^3[{+activate}]^7 to lock the elevator" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self sethintstring( "Hold ^3[{+activate}]^7 to unlock the elevator" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self sethintstring( &"ZM_HIGHRISE_BUILD_KEYS" );
|
||||||
}
|
}
|
||||||
|
|
||||||
self trigger_on();
|
self trigger_on();
|
||||||
@ -201,14 +219,31 @@ elevator_call_think()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self playsound( "zmb_elevator_ding" );
|
||||||
|
|
||||||
|
if ( !self.elevator.body.is_moving && self.elevator maps\mp\zm_highrise_elevators::elevator_is_on_floor( self.floor ) )
|
||||||
|
{
|
||||||
|
if ( !is_true( self.elevator.body.elevator_stop ) )
|
||||||
|
{
|
||||||
|
self.elevator.body setanim( level.perk_elevators_anims[self.elevator.body.perk_type][1] );
|
||||||
|
self.elevator.body.elevator_stop = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self.elevator.body.elevator_stop = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
self sethintstring( "" );
|
||||||
self trigger_off();
|
self trigger_off();
|
||||||
|
|
||||||
|
self.elevator.body.elevator_stop = 0;
|
||||||
|
self.elevator.body.elevator_force_go = 1;
|
||||||
self maps\mp\zm_highrise_buildables::onuseplantobject_elevatorkey( who );
|
self maps\mp\zm_highrise_buildables::onuseplantobject_elevatorkey( who );
|
||||||
|
|
||||||
while ( !self.elevator maps\mp\zm_highrise_elevators::elevator_is_on_floor( self.floor ) )
|
return;
|
||||||
{
|
|
||||||
self.elevator waittill( "floor_changed" );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,13 +253,40 @@ watch_elevator_prompt()
|
|||||||
{
|
{
|
||||||
self.elevator waittill( "floor_changed" );
|
self.elevator waittill( "floor_changed" );
|
||||||
|
|
||||||
if ( self.elevator maps\mp\zm_highrise_elevators::elevator_is_on_floor( self.floor ) )
|
if ( !is_true( self.elevator.body.elevator_force_go ) )
|
||||||
{
|
{
|
||||||
self trigger_off();
|
self thread elevator_call_think();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
watch_elevator_body_prompt()
|
||||||
|
{
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
msg = self.elevator.body waittill_any_return( "movedone", "forcego" );
|
||||||
|
|
||||||
|
if ( msg == "movedone" )
|
||||||
|
{
|
||||||
|
while ( is_true( self.elevator.body.is_moving ) )
|
||||||
|
{
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.elevator.body.elevator_force_go = 0;
|
||||||
|
self thread elevator_call_think();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self trigger_on();
|
while ( !is_true( self.elevator.body.is_moving ) )
|
||||||
|
{
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !self.elevator maps\mp\zm_highrise_elevators::elevator_is_on_floor( self.floor ) )
|
||||||
|
{
|
||||||
|
self thread elevator_call_think();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -232,14 +294,16 @@ watch_elevator_prompt()
|
|||||||
escape_pod_call()
|
escape_pod_call()
|
||||||
{
|
{
|
||||||
trig = getent( "escape_pod_key_console_trigger", "targetname" );
|
trig = getent( "escape_pod_key_console_trigger", "targetname" );
|
||||||
|
|
||||||
|
trig usetriggerrequirelookat();
|
||||||
|
trig sethintstring( &"ZM_HIGHRISE_BUILD_KEYS" );
|
||||||
|
trig trigger_off();
|
||||||
|
|
||||||
trig thread escape_pod_call_think();
|
trig thread escape_pod_call_think();
|
||||||
}
|
}
|
||||||
|
|
||||||
escape_pod_call_think()
|
escape_pod_call_think()
|
||||||
{
|
{
|
||||||
self sethintstring( &"ZM_HIGHRISE_BUILD_KEYS" );
|
|
||||||
self trigger_off();
|
|
||||||
|
|
||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
flag_wait( "escape_pod_needs_reset" );
|
flag_wait( "escape_pod_needs_reset" );
|
||||||
|
Reference in New Issue
Block a user