1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-20 12:10:28 -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:
Jbleezy
2023-04-20 07:06:43 -07:00
parent d18d0bebdf
commit 34b3bcc05d
4 changed files with 160 additions and 56 deletions

View File

@ -23,12 +23,12 @@ escape_pod()
used_at_least_once = 0;
escape_pod setanim( level.escape_elevator_1_state );
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 );
while ( true )
{
escape_pod setanim( level.escape_elevator_idle );
flag_clear( "escape_pod_needs_reset" );
if ( isdefined( escape_pod_blocker_door ) )
{
@ -41,38 +41,17 @@ escape_pod()
if ( is_true( used_at_least_once ) )
wait 3;
escape_pod thread escape_pod_state_run();
level thread escape_pod_wait_for_players_inside( escape_pod, escape_pod_trigger );
while ( true )
{
players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside();
flag_set( "escape_pod_needs_reset" );
if ( players_in_escape_pod.size == 0 )
{
escape_pod.escape_pod_state = 1;
wait 0.05;
continue;
}
level waittill( "reset_escape_pod" );
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;
}
flag_clear( "escape_pod_needs_reset" );
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 )
{
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()
{
players = get_players();

View File

@ -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()
{
wait 1;