Files
2026-08-06 14:45:27 -07:00

330 lines
8.3 KiB
Plaintext

namespace painlord
{
float PAINLORD_PROCESSING_REQUESTED = 0;
float PAINLORD_WORKING_POSITION = 0;
float PAINLORD_BUSY_WORKING = 0;
float PAINLORD_ENRAGED = 0;
float PAINLORD_DEAD = 0;
float RED_LIGHT_ON = 0;
void redLightOn()
{
if ( !RED_LIGHT_ON )
{
$spinnyLight.fadeInLight( 1 );
$mainPainlordLight.setCurrentLightLevel( 1 );
sys.wait( 1 );
sys.trigger( $slimy_spawner_w );
RED_LIGHT_ON = 1;
sys.println( "red_light_on = 1" );
}
else
{
if ( PAINLORD_ENRAGED )
{
sys.println( "redLightOn() ignored -- painlord is enraged" );
}
else
{
sys.println( "redLightOn() ignored -- what" );
}
}
}
void redLightOff()
{
if ( PAINLORD_ENRAGED && !PAINLORD_DEAD )
{
sys.println( "redLightOff() ignored -- painlord is enraged" );
}
else if ( PAINLORD_PROCESSING_REQUESTED )
{
sys.println( "redLightOff() ignored -- there's a guy on the line who needs processing" );
}
else
{
if ( RED_LIGHT_ON )
{
sys.trigger( $slimy_spawner_w );
$spinnyLight.fadeOutLight( 1 );
$mainPainlordLight.setCurrentLightLevel( 3 );
RED_LIGHT_ON = 0;
sys.println( "red_light_on = 0" );
}
else
{
sys.println( "RED LIGHT IS ALREADY OFF GOSH STOP BOTHERING ME" );
}
}
}
void moveToProcessingStation()
{
PAINLORD_BUSY_WORKING = 1;
thread redLightOn();
sys.println("MOVING TO PROCESSING STATION, SPAWNING IN GUYS");
aiScriptedMoveWait( $theboss, $painlord_working_spot, 32, 1 );
aiScriptedFaceWait( $theboss, $painlord_working_face, 1 );
sys.println("PAINLORD AT PROCESSING STATION" );
$theboss.atProcessingStation(); // do that thing you do good sir
PAINLORD_PROCESSING_REQUESTED = 0;
PAINLORD_WORKING_POSITION++;
}
void processingBroken()
{
PAINLORD_BUSY_WORKING = 0;
sys.println("PROCESSING HAS BEEN BROKEN");
}
void processingDone()
{
PAINLORD_BUSY_WORKING = 0;
sys.println("PROCESSING HAS BEEN FINISHED");
}
void setupProcessing()
{
$moverpod0.time(2);
$moverpod1.time(2);
$moverpod2.time(2);
$moverpod3.time(2);
$moverpod4.time(2);
$painlordMachinePushingDown.time(2);
$painlordRotatingArm.time(2);
sys.println( "INITIAL GUYS SETUP" );
$moverpod0.moveTo( $processingloc1a );
$painlordMachinePushingDown.moveTo( $processingloc_down );
$moverpod1.moveTo( $processingloc_down );
sys.wait(2);
aiSpeak( $pl_tubemarine_1, "lipsync_marine1_agony1" );
}
void processGuy1()
{
sys.println( "TAKING GUY OUT OF MACHINE" );
$painlordMachinePushingDown.moveTo( $processingloc );
$moverpod1.moveTo( $processingloc );
sys.wait( 2 );
sys.println( "MOVING GUY BACK ON LINE" );
$painlordMachinePushingDown.moveTo( $processingloc_up );
$moverpod1.bind( $painlordRotatingArm );
$painlordRotatingArm.rotateOnce('0 -90 0'); // west
sys.wait( 2 );
$moverpod1.unbind();
sys.println( "SHIFTING OVER ONE FINISHED GUYS" );
$moverpod0.moveTo( $processingloc2a );
$moverpod1.moveTo( $processingloc1a );
$painlordRotatingArm.rotateOnce('0 180 0'); // east
sys.wait(2);
sys.println( "SHIFTING OVER ONE QUEUE GUYS" );
$moverpod2.bind( $painlordRotatingArm );
$painlordRotatingArm.rotateOnce('0 -90 0'); // south
$moverpod3.moveTo( $processingloc1b );
$moverpod4.moveTo( $processingloc2b );
sys.wait( 2 );
$moverpod2.unbind();
$painlordMachinePushingDown.moveTo( $processingloc );
sys.wait( 2 );
}
void processGuy2()
{
sys.println( "TAKING GUY OUT OF MACHINE" );
$painlordMachinePushingDown.moveTo( $processingloc );
$moverpod2.moveTo( $processingloc );
sys.wait( 2 );
sys.println( "MOVING GUY BACK ON LINE" );
$moverpod2.bind( $painlordRotatingArm );
$painlordRotatingArm.rotateOnce('0 -90 0'); // west
$painlordMachinePushingDown.moveTo( $processingloc_up );
sys.wait( 2 );
$moverpod2.unbind();
sys.wait( 2 );
sys.println( "SHIFTING OVER ONE FINISHED GUYS" );
$moverpod0.moveTo( $processingloc3a );
$moverpod1.moveTo( $processingloc2a );
$moverpod2.moveTo( $processingloc1a );
$painlordRotatingArm.rotateOnce('0 180 0'); // east
sys.wait( 2 );
sys.println( "SHIFTING OVER ONE QUEUE GUYS" );
$moverpod3.bind( $painlordRotatingArm );
$painlordRotatingArm.rotateOnce( '0 -90 0' ); // south
$moverpod4.moveTo( $processingloc1b );
sys.wait( 2 );
$moverpod3.unbind();
$painlordMachinePushingDown.moveTo( $processingloc );
sys.wait( 2 );
}
void processGuy3()
{
sys.println( "TAKING GUY OUT OF MACHINE" );
$painlordMachinePushingDown.moveTo( $processingloc );
$moverpod3.moveTo( $processingloc );
sys.wait( 2 );
sys.println( "MOVING GUY BACK ON LINE" );
$moverpod3.bind( $painlordRotatingArm );
$painlordRotatingArm.rotateOnce('0 -90 0'); // west
$painlordMachinePushingDown.moveTo( $processingloc_up );
sys.wait( 2 );
$moverpod3.unbind();
sys.wait( 2 );
sys.println( "SHIFTING OVER ONE FINISHED GUYS" );
$moverpod0.moveTo( $processingloc4a );
$moverpod1.moveTo( $processingloc3a );
$moverpod2.moveTo( $processingloc2a );
$moverpod3.moveTo( $processingloc1a );
$painlordRotatingArm.rotateOnce('0 180 0'); // east
sys.wait( 2 );
sys.println( "SHIFTING OVER ONE QUEUE GUYS" );
$moverpod4.bind( $painlordRotatingArm );
$painlordRotatingArm.rotateOnce('0 -90 0'); // south
sys.wait( 2 );
$moverpod4.unbind();
$painlordMachinePushingDown.moveTo( $processingloc );
sys.wait( 2 );
}
void processingLine()
{
sys.println( "WAITING 40 SECONDS" );
sys.wait( 40 );
processGuy1(); // taking guy out, moving guys over
$theboss.requestProcessing();
PAINLORD_PROCESSING_REQUESTED = 1;
while ( PAINLORD_WORKING_POSITION < 1 )
{
sys.waitFrame();
}
sys.println( "WAITING FOR THE BOSS TO BE DONE" );
while ( PAINLORD_BUSY_WORKING )
{
sys.waitFrame();
}
sys.println( "BOSS IS DONE, PUTTING GUY IN MACHINE" );
$painlordMachinePushingDown.moveTo( $processingloc_down );
$moverpod2.moveTo( $processingloc_down );
sys.wait( 2 );
aiSpeak( $pl_tubemarine_2, "lipsync_marine2_agony1" );
thread redLightOff();
sys.println( "WAITING 40 SECONDS" );
sys.wait( 40 );
processGuy2(); // taking guy out, moving guys over
$theboss.requestProcessing();
PAINLORD_PROCESSING_REQUESTED = 1;
while ( PAINLORD_WORKING_POSITION < 2 )
{
sys.waitFrame();
}
sys.println( "WAITING FOR THE BOSS TO BE DONE" );
while ( PAINLORD_BUSY_WORKING )
{
sys.waitFrame();
}
sys.println( "BOSS IS DONE, PUTTING GUY IN MACHINE" );
$painlordMachinePushingDown.moveTo( $processingloc_down );
$moverpod3.moveTo( $processingloc_down );
sys.wait( 2 );
aiSpeak( $pl_tubemarine_3, "lipsync_marine3_agony1" );
thread redLightOff();
sys.println( "WAITING 40 SECONDS" );
sys.wait( 40 );
processGuy3(); // taking guy out, moving guys over
$theboss.requestProcessing();
PAINLORD_PROCESSING_REQUESTED = 1;
while ( PAINLORD_WORKING_POSITION < 3 )
{
sys.waitFrame();
}
sys.println( "BOSS IS DONE, PUTTING GUY IN MACHINE" );
$moverpod4.moveTo( $processingloc_down );
$painlordMachinePushingDown.moveTo( $processingloc_down );
sys.wait( 2 );
sys.println("**********************");
sys.println("**** STRAUSS DIES ****");
sys.println("**********************");
$strauss.kill();
// kill strauss
// game over
}
void painlordStunned()
{
sys.println( "PAINLORD IS STUNNED, SLIMYS SHOULD BE SPAWNING" );
thread redLightOn();
}
void painlordUnstunned()
{
sys.println( "PAINLORD IS NOT STUNNED ANYMORE" );
thread redLightOff();
}
void painlordEnraged()
{
sys.println( "PAINLORD IS ENRAAAAAAAAAAGED!!!!111111oneone" );
PAINLORD_ENRAGED = 1;
sys.waitFrame();
thread redLightOn();
}
void slimySpawningIn()
{
sys.println("SLIMY TRANSFER INCOMING");
}
void bossDies()
{
PAINLORD_DEAD = 1;
sys.killthread( "painlord::processingLine" );
sys.println( "JUBILATION ABOUNDS" );
sys.waitFrame();
thread redLightOff();
$slimy_spawner_w.remove();
sys.trigger( $painlordFrontAAS );
sys.trigger( $painlordOuterRingAAS );
sys.trigger( $bossDiesHack );
}
void tubeMarinesAnimLoop()
{
aiScriptedAnimLoop( $pl_tubemarine_0, "floating_tube", 4 );
aiScriptedAnimLoop( $pl_tubemarine_1, "floating_tube", 4 );
aiScriptedAnimLoop( $pl_tubemarine_2, "floating_tube", 4 );
aiScriptedAnimLoop( $pl_tubemarine_3, "floating_tube", 4 );
aiScriptedAnimLoop( $pl_tubemarine_4, "floating_tube", 4 );
}
void main()
{
}
}