boiii-scripts/mp/mp_arena_sound.gsc
2023-04-13 17:30:38 +02:00

88 lines
9.4 KiB
Plaintext

#using scripts\codescripts\struct;
#using scripts\shared\array_shared;
#using scripts\shared\callbacks_shared;
#using scripts\shared\clientfield_shared;
// 10 min play period
// Wait for spawnprerise to fade
// 25%
// 66%
// 85%
function main()
{
clientfield::register( "world", "arena_announcer_line", 12000, 4, "int" );
clientfield::register( "world", "arena_fighter", 12000, 2, "int" );
clientfield::register( "world", "arena_fighter_line", 12000, 3, "int" );
clientfield::register( "world", "arena_event", 12000, 3, "int" );
level.arenaFighters = array::randomize( Array( 0, 1, 2 ) );
level thread playTimedEvents();
}
function playTimedEvents()
{
{wait(.05);};
while ( level.inPrematchPeriod )
{
wait( 1 );
}
wait( 20 );
playWelcome();
wait( 150 - 20 );
playIntro();
wait( 400 - 150 );
playLoser();
wait( 500 - 400 );
playWinner();
}
function playWelcome()
{
playEvent( 1, 10 );
}
function playIntro()
{
fighter = level.arenaFighters[RandomInt( 2 )]; // Winner or loser
playEvent( 2, 3, fighter, 5 );
}
function playLoser()
{
fighter = level.arenaFighters[1];
playEvent( 3, 3, fighter, 5 );
}
function playWinner()
{
fighter = level.arenaFighters[0];
playEvent( 4, 3, fighter, 5 );
}
function playEvent( event, announcerLineCount, fighter, fighterLineCount )
{
level clientfield::set( "arena_announcer_line", RandomInt( announcerLineCount ) );
if ( isdefined( fighter ) && isdefined( fighterLineCount ) )
{
level clientfield::set( "arena_fighter", fighter );
level clientfield::set( "arena_fighter_line", RandomInt( fighterLineCount ) );
}
level clientfield::set( "arena_event", event );
}