doom3-bfg/base/script/map_phobos2.script
2022-08-27 13:19:00 +02:00

1570 lines
43 KiB
Text

namespace map_phobos2 {
float security_platform_position = 1;
float envirosuit_on = 0;
float hunter_stage = 1;
float dungeon_lift_position = 1;
float pumps_running = 1;
float turretEast_on = 0;
float turretSouth_on = 0;
float rod_nw_damaged = 1;
float rod_ne_damaged = 0;
float rod_sw_damaged = 0;
float rod_se_damaged = 0;
float rod_nw_door_open = 0;
float rod_ne_door_open = 0;
float rod_sw_door_open = 0;
float rod_se_door_open = 0;
float f_bruiser1 = 0;
float f_vulgar1 = 0;
void close_mcneil_shutters() {
// run this after the mcneil cinematic to close the mcshutters over her mcglass
$mcshutter1.time( 4 );
$mcshutter1.move( DOWN, 104 );
sys.wait(1);
$mcshutter2.time( 4 );
$mcshutter2.move( DOWN, 104 );
sys.wait(1);
$mcshutter3.time( 4 );
$mcshutter3.move( DOWN, 104 );
sys.wait(1);
$mcshutter4.time( 4 );
$mcshutter4.move( DOWN, 104 );
sys.wait(1);
$mcshutter5.time( 4 );
$mcshutter5.move( DOWN, 104 );
sys.wait(1);
$mcshutter6.time( 4 );
$mcshutter6.move( DOWN, 104 );
sys.wait(1);
$mcshutter7.time( 4 );
$mcshutter7.move( DOWN, 104 );
sys.wait(1);
$mcshutter8.time( 4 );
$mcshutter8.move( DOWN, 104 );
sys.wait(1);
$mcshutter9.time( 4 );
$mcshutter9.move( DOWN, 104 );
}
void open_mcneil_door() {
$adam_securitydoor_03.open();
}
void close_mcneil_door() {
$mcneil_buddy.setShaderParm( 7, 0 );
$adam_securitydoor_03.close();
$adam_securitydoor_03.lock( 2 );
}
////////////////////////////////////////////////////
//
// COMBAT FUNCTIONS
//
////////////////////////////////////////////////////
void set_bruiser1() {
f_bruiser1 = 1;
}
void teleport_bruiser1() {
if( f_bruiser1 == 0 ) {
return;
}
if( f_bruiser1 == 1 ) {
sys.trigger( $p2_bruiser1 );
sys.trigger( $p2_bruiser1_inf );
f_bruiser1 = 0;
return;
}
}
////////////////////////////////////////////////////
//
// SECURITY PLATFORM
//
////////////////////////////////////////////////////
void SecurityPlatformSeat() {
$security_platform.time( 0.5 );
$security_platform.accelTime( 0.1 );
$security_platform.decelTime( 0.1 );
$security_arm_upper.time( 0.5 );
$security_arm_upper.accelTime( 0.1 );
$security_arm_upper.decelTime( 0.1 );
$security_platform.startSoundShader ( "p2_seating_05s", SND_CHANNEL_VOICE2 ); // -Xian
$security_platform.rotateOnce( '5 0 0' );
$security_arm_upper.startSoundShader ( "p2_seating_05s", SND_CHANNEL_VOICE2 ); // -Xian
$security_arm_upper.rotateOnce( '-5 0 0' );
sys.waitFor( $security_arm_upper );
}
void SecurityPlatformUnseat() {
$security_platform.time( 0.5 );
$security_platform.accelTime( 0.1 );
$security_platform.decelTime( 0.1 );
$security_arm_upper.time( 0.5 );
$security_arm_upper.accelTime( 0.1 );
$security_arm_upper.decelTime( 0.1 );
$security_platform.startSoundShader ( "p2_seating_05s", SND_CHANNEL_VOICE2 ); // -Xian
$security_platform.rotateOnce( '-5 0 0' );
$security_arm_upper.startSoundShader ( "p2_seating_05s", SND_CHANNEL_VOICE2 ); // -Xian
$security_arm_upper.rotateOnce( '5 0 0' );
sys.waitFor( $security_arm_upper );
}
void SecurityPlatformLowerToMid() {
$security_platform.time( 2.0 );
$security_platform.accelTime( 0.5 );
$security_platform.decelTime( 0.5 );
$security_arm_lower.time( 2.0 );
$security_arm_lower.accelTime( 0.5 );
$security_arm_lower.decelTime( 0.5 );
$security_platform.startSoundShader ( "p2_arms_2s", SND_CHANNEL_VOICE ); // -Xian
$security_platform.rotateOnce( '-20 0 0' );
$security_arm_lower.startSoundShader ( "p2_arms_2s", SND_CHANNEL_VOICE ); // -Xian
$security_arm_lower.rotateOnce( '20 0 0' );
sys.waitFor( $security_arm_lower );
}
void SecurityPlatformMidToLower() {
$security_platform.time( 2.0 );
$security_platform.accelTime( 0.5 );
$security_platform.decelTime( 0.5 );
$security_arm_lower.time( 2.0 );
$security_arm_lower.accelTime( 0.5 );
$security_arm_lower.decelTime( 0.5 );
$security_platform.startSoundShader ( "p2_arms_2s", SND_CHANNEL_VOICE ); // -Xian
$security_platform.rotateOnce( '20 0 0' );
$security_arm_lower.startSoundShader ( "p2_arms_2s", SND_CHANNEL_VOICE ); // -Xian
$security_arm_lower.rotateOnce( '-20 0 0' );
sys.waitFor( $security_arm_lower );
}
void SecurityPlatformUpperToMid() {
$security_platform.time( 2.0 );
$security_platform.accelTime( 0.5 );
$security_platform.decelTime( 0.5 );
$security_arm_upper.time( 2.0 );
$security_arm_upper.accelTime( 0.5 );
$security_arm_upper.decelTime( 0.5 );
$security_arm_lower.time( 2.0 );
$security_arm_lower.accelTime( 0.5 );
$security_arm_lower.decelTime( 0.5 );
$security_platform.startSoundShader ( "p2_arms_2s", SND_CHANNEL_VOICE ); // -Xian
$security_platform.rotateOnce( '14 0 0' );
$security_arm_upper.startSoundShader ( "p2_arms_2s", SND_CHANNEL_VOICE ); // -Xian
$security_arm_upper.rotateOnce( '30 0 0' );
$security_arm_lower.startSoundShader ( "p2_arms_2s", SND_CHANNEL_VOICE ); // -Xian
$security_arm_lower.rotateOnce( '-44 0 0' );
sys.waitFor( $security_arm_lower );
}
void SecurityPlatformMidToUpper() {
$security_platform.time( 2.0 );
$security_platform.accelTime( 0.5 );
$security_platform.decelTime( 0.5 );
$security_arm_upper.time( 2.0 );
$security_arm_upper.accelTime( 0.5 );
$security_arm_upper.decelTime( 0.5 );
$security_arm_lower.time( 2.0 );
$security_arm_lower.accelTime( 0.5 );
$security_arm_lower.decelTime( 0.5 );
$security_platform.startSoundShader ( "p2_arms_2s", SND_CHANNEL_VOICE ); // -Xian
$security_platform.rotateOnce( '-14 0 0' );
$security_arm_upper.startSoundShader ( "p2_arms_2s", SND_CHANNEL_VOICE ); // -Xian
$security_arm_upper.rotateOnce( '-30 0 0' );
$security_arm_lower.startSoundShader ( "p2_arms_2s", SND_CHANNEL_VOICE ); // -Xian
$security_arm_lower.rotateOnce( '44 0 0' );
sys.waitFor( $security_arm_lower );
}
void SecurityWestToSouthSequence() {
security_platform_position = 666;
SecurityPlatformUnseat();
sys.wait( 1.0 );
SecurityPlatformLowerToMid();
$security_arm_base.time( 1.0 );
$security_arm_base.accelTime( 0.25 );
$security_arm_base.decelTime( 0.0 );
$security_arm_lower.startSoundShader ( "p2_movement_5s", SND_CHANNEL_ITEM ); // -Xian
$security_arm_base.move( SOUTH, 104 );
sys.waitFor( $security_arm_base );
$security_arm_base.time( 3.0 );
$security_arm_base.accelTime( 0.0 );
$security_arm_base.decelTime( 0.0 );
$security_arm_base.rotateOnce( '0 90 0' );
sys.waitFor( $security_arm_base );
$security_arm_base.time( 1.0 );
$security_arm_base.accelTime( 0.0 );
$security_arm_base.decelTime( 0.25 );
$security_arm_base.move( EAST, 104 );
sys.waitFor( $security_arm_base );
SecurityPlatformMidToUpper();
sys.wait( 1.0 );
SecurityPlatformSeat();
security_platform_position = 2;
}
void SecuritySouthToWestSequence() {
security_platform_position = 666;
SecurityPlatformUnseat();
sys.wait( 1.0 );
SecurityPlatformUpperToMid();
$security_arm_base.time( 1.0 );
$security_arm_base.accelTime( 0.0 );
$security_arm_base.decelTime( 0.25 );
$security_arm_lower.startSoundShader ( "p2_movement_5s", SND_CHANNEL_ITEM ); // -Xian
$security_arm_base.move( WEST, 104 );
sys.waitFor( $security_arm_base );
$security_arm_base.time( 3.0 );
$security_arm_base.accelTime( 0.0 );
$security_arm_base.decelTime( 0.0 );
$security_arm_base.rotateOnce( '0 -90 0' );
sys.waitFor( $security_arm_base );
$security_arm_base.time( 1.0 );
$security_arm_base.accelTime( 0.25 );
$security_arm_base.decelTime( 0.0 );
$security_arm_base.move( NORTH, 104 );
sys.waitFor( $security_arm_base );
SecurityPlatformMidToLower();
sys.wait( 1.0 );
SecurityPlatformSeat();
security_platform_position = 1;
}
void SecurityWestToEastSequence() {
security_platform_position = 666;
SecurityPlatformUnseat();
sys.wait( 1.0 );
SecurityPlatformLowerToMid();
$security_arm_base.time( 1.0 );
$security_arm_base.accelTime( 0.25 );
$security_arm_base.decelTime( 0.0 );
$security_arm_lower.startSoundShader ( "p2_movement_10s", SND_CHANNEL_ITEM ); // -Xian
$security_arm_base.move( SOUTH, 104 );
sys.waitFor( $security_arm_base );
$security_arm_base.time( 3.0 );
$security_arm_base.accelTime( 0.0 );
$security_arm_base.decelTime( 0.0 );
$security_arm_base.rotateOnce( '0 90 0' );
sys.waitFor( $security_arm_base );
$security_arm_base.time( 2.0 );
$security_arm_base.accelTime( 0.0 );
$security_arm_base.decelTime( 0.0 );
$security_arm_base.move( EAST, 208 );
sys.waitFor( $security_arm_base );
$security_arm_base.time( 3.0 );
$security_arm_base.accelTime( 0.0 );
$security_arm_base.decelTime( 0.0 );
$security_arm_base.rotateOnce( '0 90 0' );
sys.waitFor( $security_arm_base );
$security_arm_base.time( 1.0 );
$security_arm_base.accelTime( 0.0 );
$security_arm_base.decelTime( 0.25 );
$security_arm_base.move( NORTH, 104 );
sys.waitFor( $security_arm_base );
SecurityPlatformMidToLower();
sys.wait( 1.0 );
SecurityPlatformSeat();
security_platform_position = 4;
}
void SecurityEastToWestSequence() {
security_platform_position = 666;
SecurityPlatformUnseat();
sys.wait( 1.0 );
SecurityPlatformLowerToMid();
$security_arm_base.time( 1.0 );
$security_arm_base.accelTime( 0.25 );
$security_arm_base.decelTime( 0.0 );
$security_arm_lower.startSoundShader ( "p2_movement_10s", SND_CHANNEL_ITEM ); // -Xian
$security_arm_base.move( SOUTH, 104 );
sys.waitFor( $security_arm_base );
$security_arm_base.time( 3.0 );
$security_arm_base.accelTime( 0.0 );
$security_arm_base.decelTime( 0.0 );
$security_arm_base.rotateOnce( '0 -90 0' );
sys.waitFor( $security_arm_base );
$security_arm_base.time( 2.0 );
$security_arm_base.accelTime( 0.0 );
$security_arm_base.decelTime( 0.0 );
$security_arm_base.move( WEST, 208 );
sys.waitFor( $security_arm_base );
$security_arm_base.time( 3.0 );
$security_arm_base.accelTime( 0.0 );
$security_arm_base.decelTime( 0.0 );
$security_arm_base.rotateOnce( '0 -90 0' );
sys.waitFor( $security_arm_base );
$security_arm_base.time( 1.0 );
$security_arm_base.accelTime( 0.0 );
$security_arm_base.decelTime( 0.25 );
$security_arm_base.move( NORTH, 104 );
sys.waitFor( $security_arm_base );
SecurityPlatformMidToLower();
sys.wait( 1.0 );
SecurityPlatformSeat();
security_platform_position = 3;
}
void SetupSecurityPlatform() {
$security_arm_lower.bind( $security_arm_base );
$security_arm_upper.bind( $security_arm_lower );
$security_arm_lower.time( 0.1 );
$security_arm_lower.rotateOnce( '-62 0 0' );
sys.waitFor( $security_arm_lower );
$security_arm_upper.time( 0.1 );
$security_arm_upper.rotateOnce( '17 0 0' );
sys.waitFor( $security_arm_upper );
$security_platform.bind( $security_arm_upper );
}
void security_platform_move () {
if ( security_platform_position == 1 )
{
//move to south
SecurityWestToSouthSequence();
}
else if ( security_platform_position == 2 )
{
//move back to west
SecuritySouthToWestSequence();
}
else if ( security_platform_position == 3 )
{
//move to east
SecurityWestToEastSequence();
}
else if ( security_platform_position == 4 )
{
//move back to west
SecurityEastToWestSequence();
}
}
void security_platform_call_south () {
if ( security_platform_position == 1 )
{
//move to south
SecurityWestToSouthSequence();
}
}
void security_platform_call_east () {
if ( security_platform_position == 3 )
{
//move to east
SecurityWestToEastSequence();
}
}
void security_platform_call_west () {
if ( security_platform_position == 2 )
{
//move back to west
SecuritySouthToWestSequence();
}
else if ( security_platform_position == 4 )
{
//move back to west
SecurityEastToWestSequence();
}
}
////////////////////////////////////////////////////
//
// SECURITY TURRETS
//
////////////////////////////////////////////////////
void turret_east_on() {
if ( turretEast_on == 0 ) {
sys.trigger( $braaaaaant );
sys.trigger( $turret_east );
turretEast_on = 1;
}
}
void turret_east_off() {
if ( turretEast_on == 1 ) {
sys.trigger( $turret_east );
turretEast_on = 0;
}
}
////////////////////////////////////////////////////
//
// SECURITY BRIDGE
//
////////////////////////////////////////////////////
void SetupTopbridge() {
sys.trigger( $topbridge_aas );
$topbridge_railing_east_north.bind( $topbridge_rails_east );
$topbridge_railing_east_south.bind( $topbridge_rails_east );
$topbridge_railing_west_north.bind( $topbridge_rails_west );
$topbridge_railing_west_south.bind( $topbridge_rails_west );
$topbridge_railing_east_north.time( 0.1 );
$topbridge_railing_east_south.time( 0.1 );
$topbridge_railing_west_north.time( 0.1 );
$topbridge_railing_west_south.time( 0.1 );
$topbridge_railing_east_north.rotateOnce( '0 0 90' );
$topbridge_railing_east_south.rotateOnce( '0 0 -90' );
$topbridge_railing_west_north.rotateOnce( '0 0 90' );
$topbridge_railing_west_south.rotateOnce( '0 0 -90' );
sys.waitFor( $topbridge_railing_west_south );
$topbridge_rails_east.time( 0.1 );
$topbridge_rails_west.time( 0.1 );
$topbridge_floor_east.time( 0.1 );
$topbridge_floor_west.time( 0.1 );
$topbridge_rails_east.rotateOnce( '60 0 0' );
$topbridge_rails_west.rotateOnce( '-60 0 0' );
$topbridge_floor_east.move( EAST, 200 );
$topbridge_floor_west.move( WEST, 200 );
sys.waitFor( $topbridge_floor_west );
}
void RaiseTopbridgeSequence()
{
sys.trigger( $topbridge_aas );
$topbridge_floor_east.time( 1.0 );
$topbridge_floor_east.accelTime( 0.2 );
$topbridge_floor_east.decelTime( 0.2 );
$topbridge_floor_west.time( 1.0 );
$topbridge_floor_west.accelTime( 0.2 );
$topbridge_floor_west.decelTime( 0.2 );
$topbridge_floor_east.startSoundShader ( "p2_floor_1s_inout", SND_CHANNEL_VOICE ); // -Xian
$topbridge_floor_east.move( EAST, 200 );
$topbridge_floor_west.startSoundShader ( "p2_floor_1s_inout", SND_CHANNEL_VOICE ); // -Xian
$topbridge_floor_west.move( WEST, 200 );
sys.wait( 0.5 );
$topbridge_railing_east_north.time( 1.0 );
$topbridge_railing_east_south.time( 1.0 );
$topbridge_railing_west_north.time( 1.0 );
$topbridge_railing_west_south.time( 1.0 );
$topbridge_railing_east_north.startSoundShader ( "p2_bridge_rails_1s", SND_CHANNEL_VOICE ); // -Xian
$topbridge_railing_east_north.rotateOnce( '0 0 90' );
$topbridge_railing_east_south.rotateOnce( '0 0 -90' );
$topbridge_railing_west_south.startSoundShader ( "p2_bridge_rails_1s", SND_CHANNEL_VOICE ); // -Xian
$topbridge_railing_west_north.rotateOnce( '0 0 90' );
$topbridge_railing_west_south.rotateOnce( '0 0 -90' );
sys.waitFor( $topbridge_railing_west_south );
$topbridge_rails_east.time( 2.0 );
$topbridge_rails_east.accelTime( 0.25 );
$topbridge_rails_east.decelTime( 0.25 );
$topbridge_rails_west.time( 2.0 );
$topbridge_rails_west.accelTime( 0.25 );
$topbridge_rails_west.decelTime( 0.25 );
$topbridge_rails_east.startSoundShader ( "p2_bridge_2s", SND_CHANNEL_VOICE ); // -Xian
$topbridge_rails_east.rotateOnce( '60 0 0' );
$topbridge_rails_west.rotateOnce( '-60 0 0' );
sys.waitFor( $topbridge_rails_west );
}
void LowerTopbridgeSequence()
{
sys.trigger( $turret_shutdown_speaker );
thread turret_east_off();
$topbridge_rails_east.time( 2.0 );
$topbridge_rails_east.accelTime( 0.25 );
$topbridge_rails_east.decelTime( 0.25 );
$topbridge_rails_west.time( 2.0 );
$topbridge_rails_west.accelTime( 0.25 );
$topbridge_rails_west.decelTime( 0.25 );
$topbridge_rails_east.startSoundShader ( "p2_bridge_2s", SND_CHANNEL_VOICE ); // -Xian
$topbridge_rails_east.rotateOnce( '-60 0 0' );
$topbridge_rails_west.rotateOnce( '60 0 0' );
sys.waitFor( $topbridge_rails_west );
sys.wait( 0.25 );
$topbridge_railing_east_north.time( 1.0 );
$topbridge_railing_east_south.time( 1.0 );
$topbridge_railing_west_north.time( 1.0 );
$topbridge_railing_west_south.time( 1.0 );
$topbridge_railing_east_north.startSoundShader ( "p2_bridge_rails_1s", SND_CHANNEL_VOICE ); // -Xian
$topbridge_railing_east_north.rotateOnce( '0 0 -90' );
$topbridge_railing_east_south.rotateOnce( '0 0 90' );
$topbridge_railing_west_south.startSoundShader ( "p2_bridge_rails_1s", SND_CHANNEL_VOICE ); // -Xian
$topbridge_railing_west_north.rotateOnce( '0 0 -90' );
$topbridge_railing_west_south.rotateOnce( '0 0 90' );
sys.waitFor( $topbridge_railing_west_south );
sys.wait( 0.25 );
$topbridge_floor_east.time( .75 );
$topbridge_floor_east.accelTime( 0.2 );
$topbridge_floor_east.decelTime( 0.2 );
$topbridge_floor_west.time( .75 );
$topbridge_floor_west.accelTime( 0.2 );
$topbridge_floor_west.decelTime( 0.2 );
$topbridge_floor_east.startSoundShader ( "p2_floor_1s_inout", SND_CHANNEL_VOICE ); // -Xian
$topbridge_floor_east.move( WEST, 200 );
$topbridge_floor_west.startSoundShader ( "p2_floor_1s_inout", SND_CHANNEL_VOICE ); // -Xian
$topbridge_floor_west.move( EAST, 200 );
sys.wait(.25);
sys.trigger( $bridge_clip );
sys.wait(.5);
sys.trigger( $service_bridge_speaker );
sys.trigger( $topbridge_aas );
sys.trigger( $security_guards );
}
////////////////////////////////////////////////////
//
// MAIN AIRLOCK ACTIVATION
//
////////////////////////////////////////////////////
void airlock1_activate ()
{
sys.trigger( $phobos2_airlock1_clipper );
thread airlock_main_activate(1 , 2);
sys.wait(2);
// Turn on or Off the enviroment suit - Commented out by BJ
if ( envirosuit_on == 0 )
{
//$player1.setPowerupTime( ENVIROSUIT, 999999999 );
envirosuit_on = 1;
}
else
{
//$player1.setPowerupTime( ENVIROSUIT, 0 );
envirosuit_on = 0;
}
}
void airlock2_activate ()
{
sys.trigger( $phobos2_airlock2_clipper );
thread airlock_main_activate(2 , 1);
sys.wait(5);
if( f_vulgar1 == 0 ) {
f_vulgar1 = 1;
sys.trigger( $p2_vulgar1 );
sys.trigger( $p2_vulgar1_base );
sys.trigger( $p2_vulgar1_snd );
return;
}
}
////////////////////////////////////////////////////
//
// AIRLOCK EXTERNAL DOORS
//
////////////////////////////////////////////////////
void airlock1_door1_open ()
{
airlock_door_activate(1 , 1 , 2 , 1);
}
void airlock1_door2_open ()
{
airlock_door_activate(1 , 2 , 2 , 1);
}
void airlock2_door1_open ()
{
airlock_door_activate(2 , 1 , 1 , 1);
}
void airlock2_door2_open ()
{
airlock_door_activate(2 , 2 , 1 , 1);
}
void airlock1_door2_close ()
{
airlock_door_activate(1 , 2 , 2 , 2);
}
////////////////////////////////////////////////////
//
// PUMPING STATION FOG
//
////////////////////////////////////////////////////
void pstation_fog_fadein()
{
$pstation_fog_on1.disable();
$pstation_fog_on2.disable();
$pstation_fog_off1.enable();
$pstation_fog_off2.enable();
$pstation_fog_mover.time( 0.1 );
$pstation_fog_mover.move( NORTH, 1024 );
sys.waitFor( $pstation_fog_mover );
$pstation_fog.On();
sys.trigger( $pstation_fog_on );
}
void pstation_fog_fadeout()
{
$pstation_fog_on1.enable();
$pstation_fog_on2.enable();
$pstation_fog_off1.disable();
$pstation_fog_off2.disable();
sys.trigger( $pstation_fog_off );
sys.wait( 2.0 );
$pstation_fog_mover.time( 0.1 );
$pstation_fog_mover.move( SOUTH, 1024 );
sys.waitFor( $pstation_fog_mover );
$office_fog.Off();
}
void pstation_fog_darken() {
thread crossFadeEnt ($pstation_fog, '0.29 0.21 0.14', '0.22 0.16 0.11', 2);
$pstation_fog_off.setColor( 0.22, 0.16, 0.11 );
$pstation_fog_on.setColor( 0.22, 0.16, 0.11 );
}
////////////////////////////////////////////////////
//
// PUMPING STATION MACHINE
//
////////////////////////////////////////////////////
void pumpingMachine_loop ()
{
while ( pumps_running == 1 ) //begin while
{
$piston1.move ( DOWN, 6 );
$pistrod1.rotateOnce ( '0 0 -26.56' );
$piston2.move ( UP, 6 );
$pistrod2.rotateOnce ( '0 0 26.56' );
$piston3.move ( DOWN, 6 );
$pistrod3.rotateOnce ( '0 0 -26.56' );
$crankshaft.rotateOnce ( '0 0 90' );
sys.waitFor ($piston1);
$piston1.move ( DOWN, 6 );
$pistrod1.rotateOnce ( '0 0 26.56' );
$piston2.move ( UP, 6 );
$pistrod2.rotateOnce ( '0 0 -26.56' );
$piston3.move ( DOWN, 6 );
$pistrod3.rotateOnce ( '0 0 26.56' );
$crankshaft.rotateOnce ( '0 0 90' );
sys.waitFor ($piston1);
$piston1.move ( UP, 6 );
$pistrod1.rotateOnce ( '0 0 26.56' );
$piston2.move ( DOWN, 6 );
$pistrod2.rotateOnce ( '0 0 -26.56' );
$piston3.move ( UP, 6 );
$pistrod3.rotateOnce ( '0 0 26.56' );
$crankshaft.rotateOnce ( '0 0 90' );
sys.waitFor ($piston1);
$piston1.move ( UP, 6 );
$pistrod1.rotateOnce ( '0 0 -26.56' );
$piston2.move ( DOWN, 6 );
$pistrod2.rotateOnce ( '0 0 26.56' );
$piston3.move ( UP, 6 );
$pistrod3.rotateOnce ( '0 0 -26.56' );
$crankshaft.rotateOnce ( '0 0 90' );
sys.waitFor ($piston1);
} //end while
}
////////////////////////////////////////////////////
//
// PUMPING STATION SHUTDOWN
//
////////////////////////////////////////////////////
void pumping_shutdown () {
sys.wait(1);
$piston1.time (.25);
$pistrod1.time (.25);
$piston2.time (.25);
$pistrod2.time (.25);
$piston3.time (.25);
$pistrod3.time (.25);
$crankshaft.time (.25);
sys.wait(1.5);
$piston1.time (.5);
$pistrod1.time (.5);
$piston2.time (.5);
$pistrod2.time (.5);
$piston3.time (.5);
$pistrod3.time (.5);
$crankshaft.time (.5);
sys.wait(1.5);
$piston1.time (.75);
$pistrod1.time (.75);
$piston2.time (.75);
$pistrod2.time (.75);
$piston3.time (.75);
$pistrod3.time (.75);
$crankshaft.time (.75);
sys.wait(1);
$piston1.time (1);
$pistrod1.time (1);
$piston2.time (1);
$pistrod2.time (1);
$piston3.time (1);
$pistrod3.time (1);
$crankshaft.time (1);
sys.wait(1);
sys.trigger( $ps_steam1 );
sys.trigger( $ps_steam1_speaker );
pumps_running = 0;
}
////////////////////////////////////////////////////
//
// BUSTED BACKTRACKER DOOR
//
////////////////////////////////////////////////////
void rd_door () {
//hide the real door
$rd_frame.remove();
$adam_func_door_27.remove();
$adam_func_door_28.remove();
$rd_light_white.Off();
//show the broken fake door
$rd_bustedframe.show();
$rd_light_red.On();
$func_static_6396.setGui( 1, "guis/screens/malfunction.gui" );
$func_static_6396.setGuiParm( "noninteractive", "1" );
$func_static_6396.setShaderParm (7, 0);
sys.trigger ( $func_static_6859 );
$func_static_6859.setColor( 1, 0, 0 );
sys.trigger ( $rd_sparks );
//sys.trigger ( $rd_portal );
sys.wait(.25);
sys.trigger ( $rd_bustedframe_setcolor );
}
////////////////////////////////////////////////////
//
// BUSTED BATHROOM DOOR
//
////////////////////////////////////////////////////
void bathroom_door ()
{
sys.trigger ( $bathroom_sparks );
$bathroom_door.time (.25);
$bathroom_door.move ( WEST, 16 );
sys.wait(.25);
$bathroom_door.time (.15);
$bathroom_door.move ( EAST, 16 );
$bathroom_door_frame.remove();
$bathroom_door_frame2.show();
sys.wait(.75);
$bathroom_door.time (.25);
$bathroom_door.move ( WEST, 4 );
sys.wait(.35);
$bathroom_door.time (.15);
$bathroom_door.move ( EAST, 4 );
}
////////////////////////////////////////////////////
//
// INVULNERABILITY HUNTER BOSS FIGHT
//
////////////////////////////////////////////////////
// called by the master rod gui console
void rod_nw_door () {
// open the door and make the rod damageable
if ( rod_nw_door_open == 0 ) {
rod_nw_door_open = 1;
$rod_nw_damageable.show();
$rod_door_nw.startSoundShader ( "e4_fingers_1s_inout", SND_CHANNEL_VOICE ); // -Xian
$rod_door_nw.rotateOnce( '0 -180 0' );
sys.waitFor( $rod_door_nw );
}
sys.wait(3.5);
// close the door if the rod has not been destroyed already
if ( rod_nw_damaged == 0 ) {
$rod_nw_damageable.hide();
$rod_door_nw.startSoundShader ( "e4_fingers_1s_inout", SND_CHANNEL_VOICE ); // -Xian
$rod_door_nw.rotateOnce( '0 180 0' );
sys.waitFor( $rod_door_nw );
rod_nw_door_open = 0;
hunter_stage = 1;
}
else if ( rod_nw_damaged == 1 ) {
hunter_stage = 1;
}
}
// called by the master rod gui console
void rod_ne_door () {
// open the door and make the rod damageable
if ( rod_ne_door_open == 0 ) {
rod_ne_door_open = 1;
//Call Named GUI Event Here: openCore
$gui_rod1.guiNamedEvent( 1, "openCore" );
$rod_ne_damageable.show();
$rod_door_ne.startSoundShader ( "e4_fingers_1s_inout", SND_CHANNEL_VOICE ); // -Xian
$rod_door_ne.rotateOnce( '0 180 0' );
sys.waitFor( $rod_door_ne );
}
sys.wait(3.5);
// close the door if the rod has not been destroyed already
if ( rod_ne_damaged == 0 ) {
//Call Named GUI Event Here: closeCore
//$gui_rod1.guiNamedEvent( 1, "closeCore" );
//$gui_main.guiNamedEvent( 1, "coreReady" );
$rod_ne_damageable.hide();
$rod_door_ne.startSoundShader ( "e4_fingers_1s_inout", SND_CHANNEL_VOICE ); // -Xian
$rod_door_ne.rotateOnce( '0 -180 0' );
sys.waitFor( $rod_door_ne );
rod_ne_door_open = 0;
hunter_stage = 2;
}
else if ( rod_ne_damaged == 1 ) {
hunter_stage = 3;
}
}
// called by the master rod gui console
void rod_sw_door () {
// open the door and make the rod damageable
if ( rod_sw_door_open == 0 ) {
rod_sw_door_open = 1;
//Call Named GUI Event Here: openCore
$gui_rod4.guiNamedEvent( 1, "openCore" );
$rod_sw_damageable.show();
$rod_door_sw.startSoundShader ( "e4_fingers_1s_inout", SND_CHANNEL_VOICE ); // -Xian
$rod_door_sw.rotateOnce( '0 180 0' );
sys.waitFor( $rod_door_sw );
}
sys.wait(3.5);
// close the door if the rod has not been destroyed already
if ( rod_sw_damaged == 0 ) {
//Call Named GUI Event Here: closeCore
//$gui_rod4.guiNamedEvent( 1, "closeCore" );
//$gui_main.guiNamedEvent( 1, "coreReady" );
$rod_sw_damageable.hide();
$rod_door_sw.startSoundShader ( "e4_fingers_1s_inout", SND_CHANNEL_VOICE ); // -Xian
$rod_door_sw.rotateOnce( '0 -180 0' );
sys.waitFor( $rod_door_sw );
rod_sw_door_open = 0;
hunter_stage = 3;
}
else if ( rod_sw_damaged == 1 ) {
hunter_stage = 4;
}
}
// called by the master rod gui console
void rod_se_door () {
// open the door and make the rod damageable
if ( rod_se_door_open == 0 ) {
rod_se_door_open = 1;
//Call Named GUI Event Here: openCore
$gui_rod2.guiNamedEvent( 1, "openCore" );
$rod_se_damageable.show();
$rod_door_se.startSoundShader ( "e4_fingers_1s_inout", SND_CHANNEL_VOICE ); // -Xian
$rod_door_se.rotateOnce( '0 -180 0' );
sys.waitFor( $rod_door_se );
}
sys.wait(3.5);
// close the door if the rod has not been destroyed already
if ( rod_se_damaged == 0 ) {
//Call Named GUI Event Here: closeCore
//$gui_rod2.guiNamedEvent( 1, "closeCore" );
//$gui_main.guiNamedEvent( 1, "coreReady" );
$rod_se_damageable.hide();
$rod_door_se.startSoundShader ( "e4_fingers_1s_inout", SND_CHANNEL_VOICE ); // -Xian
$rod_door_se.rotateOnce( '0 180 0' );
sys.waitFor( $rod_door_se );
rod_se_door_open = 0;
hunter_stage = 1;
}
else if ( rod_se_damaged == 1 ) {
hunter_stage = 2;
}
}
// -Xian Start
void rod_se_offline() {
sys.wait (1.5);
$rod_se_red.startSoundShader ( "p2_core2_failure", SND_CHANNEL_VOICE );
}
void rod_ne_offline() {
sys.wait (1.5);
$rod_ne_red.startSoundShader ( "p2_core3_failure", SND_CHANNEL_VOICE );
}
void rod_sw_offline() {
sys.wait (1.5);
$rod_sw_red.startSoundShader ( "p2_core4_failure", SND_CHANNEL_VOICE );
}
// -Xian End
// called when north west rod is damaged (in the hunter intro cinematic)
void rod_nw_damage () {
if ( rod_nw_damaged == 0 ) {
sys.print( "NW Rod Damaged\n");
rod_nw_damaged = 1;
$rod_nw_damageable.hide();
sys.trigger( $rod_nw_rodexplode );
sys.trigger( $nw_speaker_explode );
sys.wait(0.25);
sys.trigger( $nw_explosion_emitter );
sys.trigger( $rod_nw_shockwave );
sys.trigger( $rod_nw_force );
//sys.killthread ( "map_phobos2::rod_nw_door" );
$rod_nw_beam.hide();
$rod_nw_electricity.stopSound ( SND_CHANNEL_BODY, false );
$rod_nw_electricity.hide();
$rod_nw_glow.Off();
// hide the blue rod
$rod_nw_blue.hide();
$rod_nw_blue_top_fx.hide();
$rod_nw_blue_bot_fx.hide();
$rod_nw_blue_top_light.Off();
$rod_nw_blue_bot_light.Off();
// show the red rod
$rod_nw_red.show();
$rod_nw_red_shimmer.show();
$rod_nw_red_smoke.show();
$rod_nw_red_fire.startSoundShader ( "p2_flames", SND_CHANNEL_BODY );
$rod_nw_red_fire.show();
$rod_nw_red_light.On();
$rod_nw_red_top_fx.show();
$rod_nw_red_bot_fx.show();
// bring the hunter out of invulnerability
$hunter.callFunction( "endInvuln" );
}
}
// called when north east rod is damaged
void rod_ne_damage () {
if ( rod_ne_damaged == 0 ) {
//Call Named GUI Event Here: coreCompensating
//$gui_main.guiNamedEvent( 1, "coreCompensating" );
//$gui_rod1.guiNamedEvent( 1, "breakCore" );
sys.print( "NE Rod Damaged\n");
rod_ne_damaged = 1;
$rod_ne_damageable.hide();
sys.trigger( $rod_ne_rodexplode );
sys.trigger( $rod_ne_force );
sys.trigger( $ne_speaker_explode );
sys.wait(0.25);
sys.trigger( $ne_explosion_emitter );
//sys.trigger( $rod_ne_speaker );
//sys.killthread ( "map_phobos2::rod_ne_door" );
sys.trigger( $rod_ne_shockwave );
sys.trigger( $rod_ne_triggerhurt );
sys.trigger( $endInvulnSurvival_lights );
sys.trigger ( $speaker_rod_ne_fixed ); // turn it off -Xian
$rod_ne_beam.hide();
$rod_ne_electricity.stopSound ( SND_CHANNEL_BODY, false );
$rod_ne_electricity.hide();
$rod_ne_glow.Off();
// hide the blue rod
$rod_ne_blue.hide();
$rod_ne_blue_top_fx.hide();
$rod_ne_blue_bot_fx.hide();
$rod_ne_blue_top_light.Off();
$rod_ne_blue_bot_light.Off();
// show the red rod
$rod_ne_red.show();
$rod_ne_red_shimmer.show();
$rod_ne_red_smoke.show();
$rod_ne_red_fire.startSoundShader ( "p2_flames", SND_CHANNEL_BODY );
$rod_ne_red_fire.show();
$rod_ne_red_light.On();
$rod_ne_red_top_fx.show();
$rod_ne_red_bot_fx.show();
thread ( rod_ne_offline() );
// bring the hunter out of invulnerability
$hunter.callFunction( "endInvuln" );
}
}
// called when south west rod is damaged
void rod_sw_damage () {
if ( rod_sw_damaged == 0 ) {
//Call Named GUI Event Here: coreDestroyed
//$gui_main.guiNamedEvent( 1, "coreDestroyed" );
//$gui_rod4.guiNamedEvent( 1, "breakCore" );
sys.print( "SW Rod Damaged\n");
rod_sw_damaged = 1;
$rod_sw_damageable.hide();
sys.trigger( $rod_sw_rodexplode );
sys.trigger( $rod_sw_force );
sys.trigger( $sw_speaker_explode );
sys.wait(0.25);
sys.trigger( $sw_explosion_emitter );
//sys.trigger( $rod_sw_speaker );
sys.trigger( $rod_sw_shockwave );
sys.trigger( $rod_sw_triggerhurt );
sys.trigger( $endInvulnSurvival_lights );
//sys.killthread ( "map_phobos2::rod_sw_door" );
sys.trigger ( $speaker_rod_sw_fixed ); // turn it off -Xian
$rod_sw_beam.hide();
$rod_sw_electricity.stopSound ( SND_CHANNEL_BODY, false );
$rod_sw_electricity.hide();
$rod_sw_glow.Off();
// hide the blue rod
$rod_sw_blue.hide();
$rod_sw_blue_top_fx.hide();
$rod_sw_blue_bot_fx.hide();
$rod_sw_blue_top_light.Off();
$rod_sw_blue_bot_light.Off();
// show the red rod
$rod_sw_red.show();
$rod_sw_red_shimmer.show();
$rod_sw_red_smoke.show();
$rod_sw_red_fire.startSoundShader ( "p2_flames", SND_CHANNEL_BODY );
$rod_sw_red_fire.show();
$rod_sw_red_light.On();
$rod_sw_red_top_fx.show();
$rod_sw_red_bot_fx.show();
thread ( rod_sw_offline() );
// bring the hunter out of invulnerability
$hunter.callFunction( "endInvuln" );
}
}
// called when south east rod is damaged
void rod_se_damage () {
if ( rod_se_damaged == 0 ) {
//Call Named GUI Event Here: coreCompensating
//$gui_main.guiNamedEvent( 1, "coreCompensating" );
//$gui_rod2.guiNamedEvent( 1, "breakCore" );
sys.print( "SE Rod Damaged\n");
rod_se_damaged = 1;
$rod_se_damageable.hide();
sys.trigger( $rod_se_rodexplode );
sys.trigger( $rod_se_force );
sys.trigger( $se_speaker_explode );
sys.wait(0.25);
sys.trigger( $se_explosion_emitter );
//sys.trigger( $rod_se_speaker );
sys.trigger( $rod_se_shockwave );
sys.trigger( $rod_se_triggerhurt );
sys.trigger( $endInvulnSurvival_lights );
//sys.killthread ( "map_phobos2::rod_se_door" );
sys.trigger ( $speaker_rod_se_fixed ); // turn it off -Xian
$rod_se_beam.hide();
$rod_se_electricity.stopSound ( SND_CHANNEL_BODY, false );
$rod_se_electricity.hide();
$rod_se_glow.Off();
// hide the blue rod
$rod_se_blue.hide();
$rod_se_blue_top_fx.hide();
$rod_se_blue_bot_fx.hide();
$rod_se_blue_top_light.Off();
$rod_se_blue_bot_light.Off();
// show the red rod
$rod_se_red.show();
$rod_se_red_shimmer.show();
$rod_se_red_smoke.show();
$rod_se_red_fire.startSoundShader ( "p2_flames", SND_CHANNEL_BODY );
$rod_se_red_fire.show();
$rod_se_red_light.On();
$rod_se_red_top_fx.show();
$rod_se_red_bot_fx.show();
thread ( rod_se_offline() );
// bring the hunter out of invulnerability
$hunter.callFunction( "endInvuln" );
}
}
// called when the master rod gui console is activated
// opens the doors exposing the rods
void rod_master_gui() {
if( hunter_stage == 1 ) {
// open the southeastern door
hunter_stage = 4;
sys.print( "SE Door Opening\n");
rod_se_door();
}
else if( hunter_stage == 2 ) {
// open the northeastern door
hunter_stage = 4;
sys.print( "NE Door Opening\n");
rod_ne_door();
}
else if( hunter_stage == 3 ) {
// open the southwestern door
hunter_stage = 4;
sys.print( "SW Door Opening\n");
rod_sw_door();
}
}
// called after a rod is damaged
// hunter comes out of invulnerable mode
void hunter_beginNormal () {
// hide the rod electricity
if( rod_nw_damaged == 0 ) {
$rod_nw_electricity.stopSound ( SND_CHANNEL_BODY, false ); // -Xian
$rod_nw_electricity.hide();
$rod_nw_glow.Off();
}
if( rod_ne_damaged == 0 ) {
$rod_ne_electricity.stopSound ( SND_CHANNEL_BODY, false ); // -Xian
$rod_ne_electricity.hide();
$rod_ne_glow.Off();
}
if( rod_se_damaged == 0 ) {
$rod_se_electricity.stopSound ( SND_CHANNEL_BODY, false ); // -Xian
$rod_se_electricity.hide();
$rod_se_glow.Off();
}
if( rod_sw_damaged == 0 ) {
$rod_sw_electricity.stopSound ( SND_CHANNEL_BODY, false ); // -Xian
$rod_sw_electricity.hide();
$rod_sw_glow.Off();
}
}
// called after the damage cap has been hit
// hunter moves to his node
void hunter_movingToInvuln () {
//Call Named GUI Event Here: coreLoadTest
//$gui_main.guiNamedEvent( 1, "coreLoadTest" );
$ceiling_light1.setKey ("color_demonic", "0.28 0 0");
$ceiling_light2.setKey ("color_demonic", "0.28 0 0");
$ceiling_light3.setKey ("color_demonic", "0.28 0 0");
$ceiling_light4.setKey ("color_demonic", "0.28 0 0");
$ceiling_highlight.setKey ("color_demonic", "0.28 0 0");
$ceiling_biglight.setKey ("color_demonic", "0.28 0 0");
$lowerlight_01.setKey ("color_demonic", "0.28 0 0");
$lowerlight_02.setKey ("color_demonic", "0.28 0 0");
$lowerlight_03.setKey ("color_demonic", "0.28 0 0");
$lowerlight_04.setKey ("color_demonic", "0.28 0 0");
$lowerlight_05.setKey ("color_demonic", "0.28 0 0");
$lowerlight_06.setKey ("color_demonic", "0.28 0 0");
$lowerlight_07.setKey ("color_demonic", "0.28 0 0");
$lowerlight_08.setKey ("color_demonic", "0.28 0 0");
$lowerlight_big.setKey ("color_demonic", "0.28 0 0");
$console_light.setKey ("color_demonic", "0.28 0 0");
sys.trigger( $movingToInvuln_lights );
}
// called after the hunter gets to his node
// begin the survival period
void hunter_beginInvulnSurvival () {
sys.wait(1.5);
// show the energy beams and rod electricity
if( rod_nw_damaged == 0 ) {
$rod_nw_electricity.startSoundShader ( "p2_electrical", SND_CHANNEL_BODY ); // -Xian
$rod_nw_electricity.show();
$rod_nw_glow.On();
$rod_nw_beam.show();
}
if( rod_ne_damaged == 0 ) {
$rod_ne_electricity.startSoundShader ( "p2_electrical", SND_CHANNEL_BODY ); // -Xian
$rod_ne_electricity.show();
$rod_ne_glow.On();
$rod_ne_beam.show();
}
if( rod_se_damaged == 0 ) {
$rod_se_electricity.startSoundShader ( "p2_electrical", SND_CHANNEL_BODY ); // -Xian
$rod_se_electricity.show();
$rod_se_glow.On();
$rod_se_beam.show();
}
if( rod_sw_damaged == 0 ) {
$rod_sw_electricity.startSoundShader ( "p2_electrical", SND_CHANNEL_BODY ); // -Xian
$rod_sw_electricity.show();
$rod_sw_glow.On();
$rod_sw_beam.show();
}
$ceiling_light1.setKey ("color_demonic", "0.24 0.46 0.75");
$ceiling_light2.setKey ("color_demonic", "0.24 0.46 0.75");
$ceiling_light3.setKey ("color_demonic", "0.24 0.46 0.75");
$ceiling_light4.setKey ("color_demonic", "0.24 0.46 0.75");
$ceiling_highlight.setKey ("color_demonic", "0.24 0.46 0.75");
$ceiling_biglight.setKey ("color_demonic", "0.24 0.46 0.75");
$lowerlight_01.setKey ("color_demonic", "0.24 0.46 0.75");
$lowerlight_02.setKey ("color_demonic", "0.24 0.46 0.75");
$lowerlight_03.setKey ("color_demonic", "0.24 0.46 0.75");
$lowerlight_04.setKey ("color_demonic", "0.24 0.46 0.75");
$lowerlight_05.setKey ("color_demonic", "0.24 0.46 0.75");
$lowerlight_06.setKey ("color_demonic", "0.24 0.46 0.75");
$lowerlight_07.setKey ("color_demonic", "0.24 0.46 0.75");
$lowerlight_08.setKey ("color_demonic", "0.24 0.46 0.75");
$lowerlight_big.setKey ("color_demonic", "0.24 0.46 0.75");
$console_light.setKey ("color_demonic", "0.24 0.46 0.75");
sys.trigger( $beginInvulnSurvival_lights );
// make a gui operable based on the hunters stage
if( hunter_stage == 1 ) {
$rod_se_gui.guiNamedEvent( 1, "openCore" );
$rod_se_electricity.hide();
}
else if( hunter_stage == 2 ) {
$rod_ne_gui.guiNamedEvent( 1, "openCore" );
$rod_ne_electricity.hide();
}
else if( hunter_stage == 3 ) {
$rod_sw_gui.guiNamedEvent( 1, "openCore" );
$rod_sw_electricity.hide();
}
}
// called after the survival period
// hunter is free to move around
void hunter_endSurvival () {
//Call Named GUI Event Here: coreReady
//$gui_main.guiNamedEvent( 1, "coreReady" );
if( rod_nw_damaged == 0 ) {
$rod_nw_beam.hide();
}
if( rod_ne_damaged == 0 ) {
$rod_ne_beam.hide();
}
if( rod_se_damaged == 0 ) {
$rod_se_beam.hide();
}
if( rod_sw_damaged == 0 ) {
$rod_sw_beam.hide();
}
}
// called when the hunter dies
// player gets bloodstone active power number 3
void hunter_defeated ()
{
$player1.giveInventoryItem("weapon_bloodstone_active3");
sys.wait( 1 );
$player1.giveInventoryItem( "ammo_bloodstone_normal" );
// reset stamina
sys.setcvar( "pm_stamina", "24" );
if ( security_platform_position == 1 ) {
security_platform_position = 3;
}
else if ( security_platform_position == 2 ) {
SecuritySouthToWestSequence();
security_platform_position = 3;
}
}
////////////////////////////////////////////////////
//
// DUNGEON LIFT
//
////////////////////////////////////////////////////
void dungeon_lift_up() {
if ( dungeon_lift_position == 2 ) {
dungeon_lift_position = 666;
$dungeon_lift_down_trigger1.disable();
$dungeon_lift_down_trigger2.disable();
$dungeon_lift.move (UP, 128);
sys.waitFor($dungeon_lift);
dungeon_lift_position = 1;
}
}
void dungeon_lift_down() {
if ( dungeon_lift_position == 1 ) {
dungeon_lift_position = 666;
$dungeon_lift_up_trigger1.disable();
$dungeon_lift_up_trigger2.disable();
$dungeon_lift.move (DOWN, 128);
sys.waitFor($dungeon_lift);
dungeon_lift_position = 2;
}
}
void dungeon_lift_up_reset() {
if ( dungeon_lift_position == 2 ) {
$dungeon_lift_up_trigger1.enable();
$dungeon_lift_up_trigger2.enable();
}
else if ( dungeon_lift_position == 1 ) {
dungeon_lift_down();
$dungeon_lift_up_trigger1.enable();
$dungeon_lift_up_trigger2.enable();
}
}
void dungeon_lift_down_reset() {
if ( dungeon_lift_position == 1 ) {
$dungeon_lift_down_trigger1.enable();
$dungeon_lift_down_trigger2.enable();
}
else if ( dungeon_lift_position == 2 ) {
dungeon_lift_up();
$dungeon_lift_down_trigger1.enable();
$dungeon_lift_down_trigger2.enable();
}
}
////////////////////////////////////////////////////
//
// MCNEIL RADIO EVENTS
//
////////////////////////////////////////////////////
void mcneil_power ()
{
sys.trigger( $mcneil_power1 );
sys.wait(5);
sys.trigger( $mcneil_power2 );
sys.wait(6.25);
sys.trigger( $update_objectives );
}
////////////////////////////////////////////////////
//
// MCNEIL CINEMATIC EVENTS
//
////////////////////////////////////////////////////
void mcneil_viewer_start() {
$mcneil_viewer.setGui( 1, "guis/phobos2/p2_mcneil_ancient2.gui" );
$mcneil_viewer.guiNamedEvent( 1, "startMcNeil" );
}
void mcneil_viewer_maps() {
$mcneil_viewer.guiNamedEvent( 1, "startMap" );
}
void mcneil_typing_hide() {
$phobos2_mcneil_typing_1.hide();
}
void mcneil_typing_show() {
$phobos2_mcneil_typing_1.show();
}
void mcneil_viewer_reset() {
$mcneil_viewer.setGui(1, "guis/phobos2/p2_mcneil_ancient3.gui" );
close_mcneil_shutters();
//$mcneil_viewer.guiNamedEvent( 1, "backToStart" );
}
////////////////////////////////////////////////////
//
// SETUP
//
////////////////////////////////////////////////////
void setup_objects ()
{
// set airlock door guis initial state to 1
$airlock1_door1_gui.setGuiParm ( "gui_parm1" , 1);
$airlock1_door2_gui.setGuiParm ( "gui_parm1" , 1);
$airlock2_door1_gui.setGuiParm ( "gui_parm1" , 1);
$airlock2_door2_gui.setGuiParm ( "gui_parm1" , 1);
// override the states of the airlocks so the lights will cooperate
$airlock2_door2_light.setColor (0.84 , 0.84 , 0.90);
$airlock2_door1_light.setColor (0.37 , 0.05 , 0.01);
$airlock2_door1_portal.setKey ("state", "3");
$airlock1_door1_portal.setKey ("state", "2");
// setup the pumping station fog
$pstation_fog_off1.disable();
$pstation_fog_off2.disable();
//pumping station machine binds and times
$pistrod1.bind ($piston1);
$pistrod2.bind ($piston2);
$pistrod3.bind ($piston3);
$piston1.time (.125);
$pistrod1.time (.125);
$piston2.time (.125);
$pistrod2.time (.125);
$piston3.time (.125);
$pistrod3.time (.125);
$crankshaft.time (.125);
// precache guis
$func_static_6396.precacheGui("guis/screens/malfunction.gui");
$mcneil_viewer.precacheGui("guis/phobos2/p2_mcneil_ancient.gui");
$mcneil_viewer.precacheGui("guis/phobos2/p2_mcneil_ancient3.gui");
}
void cache_sounds() {
sys.cacheSoundShader ( "p2_seating_05s" ); // -Xian
sys.cacheSoundShader ( "p2_arms_2s" ); // -Xian
sys.cacheSoundShader ( "p2_movement_5s" ); // -Xian
sys.cacheSoundShader ( "p2_movement_10s" ); // -Xian
sys.cacheSoundShader ( "p2_floor_1s_inout" ); // -Xian
sys.cacheSoundShader ( "p2_bridge_rails_1s" ); // -Xian
sys.cacheSoundShader ( "p2_bridge_2s" ); // -Xian
sys.cacheSoundShader ( "p2_flames" );
sys.cacheSoundShader ( "p2_electrical" );
sys.cacheSoundShader ( "p2_core1_failure" );
sys.cacheSoundShader ( "p2_core2_failure" );
sys.cacheSoundShader ( "p2_core3_failure" );
sys.cacheSoundShader ( "p2_core4_failure" );
sys.cacheSoundShader ( "e4_fingers_1s_inout" );
}
////////////////////////////////////////////////////
//
// MAIN
//
////////////////////////////////////////////////////
void main ()
{
setup_objects();
cache_sounds();
thread SetupTopbridge();
thread SetupSecurityPlatform();
thread pumpingMachine_loop();
$pstation_fog_mover.time( 0.1 );
$pstation_fog_mover.move( SOUTH, 1024 );
sys.waitFor( $pstation_fog_mover );
}
}// namespace