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

323 lines
8.2 KiB
Text

namespace map_site3 {
void setup_objects ()
{
// Cache the sounds... -Xian
sys.cacheSoundShader ("train_door_close");
sys.cacheSoundShader ("train_door_open");
$transport.accelTime (.5);
$transport.decelTime (.5);
$transport_door.accelTime (.2);
$transport_door.decelTime (.1);
$transport_door.time (.5);
$transport_door.bind ($transport);
$transport_door_open1.bind ($transport);
$transport_door_close1.bind ($transport);
$transport_door_close2.bind ($transport);
$transport_activator_2.bind ($transport);
$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);
$arm_base.time (1);
$arm_base.accelTime (.5);
$arm_base.decelTime (.1);
$metaldoor.time (.05);
$finger1.bind ($hand);
$finger2.bind ($hand);
$hand.bind ($arm);
$arm.bind ($arm_anchor);
$arm_anchor.bind ($arm_base);
$pipe_crash.bind ($pipe_crash_anchor);
$pipe_crash_anchor.accelTime (.4);
$pipe_crash_anchor.time (1);
$skcube_crash.bind ($skcube_crash_anchor);
$skcube_crash_anchor.accelTime (.4);
$skcube_crash_anchor.time (.8);
$walkway1_anchor.time (.5);
$walkway1_anchor.accelTime (.5);
$walkway2_anchor.time (.5);
$walkway2_anchor.accelTime (.5);
$walkway1edge_anchor.time (.3);
$walkway1edge_anchor.accelTime (.3);
$walkway2edge_anchor.time (.3);
$walkway2edge_anchor.accelTime (.3);
$walkway1.bind ($walkway1_anchor);
$walkway1edge.bind ($walkway1edge_anchor);
$walkway1edge_anchor.bind ($walkway1);
$walkway2.bind ($walkway2_anchor);
$walkway2edge.bind ($walkway2edge_anchor);
$walkway2edge_anchor.bind ($walkway2);
}
////////////////////////////////////////////////////
//
// transport
//
////////////////////////////////////////////////////
void call_transport ()
{
sys.trigger ($door_block_trigger);
sys.trigger ($trigger_objectivecomplete_2);
$transport.time (10);
$transport.moveTo ($transport_spot1);
sys.waitFor ($transport);
$transport_activator_2.unbind ();
$transport_activator_1.bind ($transport);
$transport_door.unbind ();
sys.trigger ($trans_trigger);
sys.trigger ($trigger_objective_3);
}
void move_transport ()
{
sys.trigger ($airdoor1_lf);
$transport.time (4);
$transport.moveTo ($transport_spot1a);
sys.waitFor ($transport);
sys.wait (.5);
sys.trigger ($airdoor1_lf);
sys.wait (2);
sys.trigger ($airdoor2_lf);
sys.waitFor ($airdoor2_lf);
sys.trigger ($airdoor2_relay);
sys.trigger ($airdoor3_relay);
$transport.time (7);
$transport.moveTo ($transport_spot2);
sys.waitFor ($transport);
sys.trigger ($airdoor3_lf);
sys.trigger ($trans_trigger2);
}
void transport_door_close ()
{
$transport_door.startSoundShader ("train_door_close", SND_CHANNEL_VOICE);
$transport_door.moveTo ($transport_door_close1);
sys.waitFor ($transport_door);
$transport_door.moveTo ($transport_door_close2);
sys.waitFor ($transport_door);
$transport_door.bind ($transport);
}
void transport_door_open ()
{
$transport_door.unbind ();
$transport_door.startSoundShader ("train_door_open", SND_CHANNEL_VOICE);
$transport_door.moveTo ($transport_door_close1);
sys.waitFor ($transport_door);
$transport_door.moveTo ($transport_door_open1);
sys.waitFor ($transport_door);
}
void airdoor1_open ()
{
sys.trigger ($airdoor1_lf);
}
void airdoor2_open ()
{
sys.trigger ($airdoor2_lf);
}
void airdoor3_open ()
{
sys.trigger ($airdoor3_lf);
}
void airdoor1_close ()
{
sys.trigger ($airdoor1_lf);
}
void airdoor2_close ()
{
sys.trigger ($airdoor2_lf);
}
void airdoor3_close ()
{
sys.trigger ($airdoor3_lf);
}
////////////////////////////////////////////////////
//
// archvile room
//
////////////////////////////////////////////////////
void archvile_start ()
{
sys.trigger ($blight_trigger1);
sys.wait (.7);
sys.trigger ($blight_trigger3);
sys.wait (.2);
sys.trigger ($blight_trigger2);
sys.wait (.6);
sys.trigger ($alight_trigger1);
sys.trigger ($alight_trigger2);
sys.trigger ($alight_trigger3);
sys.trigger ($alight_trigger4);
sys.trigger ($alight_trigger5);
sys.trigger ($alight_trigger6);
$walkway1_anchor.rotateOnce ('-88 0 0');
$walkway1edge_anchor.rotateOnce ('84 0 0');
$walkway2_anchor.rotateOnce ('0 0 -88');
$walkway2edge_anchor.rotateOnce ('0 0 84');
sys.waitFor ($walkway1_anchor);
sys.wait (1);
sys.trigger ($candles_trigger);
sys.wait (.5);
sys.trigger ($archvile_trigger);
sys.wait (.5);
sys.trigger ($fire_trigger);
sys.trigger ($speaker_flames_1);
sys.trigger ($speaker_flames_2);
sys.trigger ($speaker_av_mood);
}
////////////////////////////////////////////////////
//
// misc
//
////////////////////////////////////////////////////
void pipe_crash_trigger ()
{
$pipe_crash_anchor.rotateOnce ('-20 0 25');
$skcube_crash_anchor.rotateOnce ('0 10 90');
}
////////////////////////////////////////////////////
//
// crane arm movement
//
////////////////////////////////////////////////////
void crane_move ()
{
while (1) {
$arm_base.startSoundShader ("s3_arm_back", SND_CHANNEL_ANY );
$arm_base.move ( SOUTH, 256 );
sys.waitFor ($arm_base);
sys.trigger ($doorbang);
sys.trigger ($doorspark);
$metaldoor.move (SOUTH,1);
$arm_anchor.time (.1);
$arm_anchor.decelTime (.05);
$arm_anchor.rotateOnce ('0 0 -4');
sys.waitFor ($arm_anchor);
$metaldoor.move (NORTH,1);
$arm_anchor.rotateOnce ('0 0 5');
sys.waitFor ($arm_anchor);
$arm_anchor.time (.08);
$arm_anchor.rotateOnce ('0 0 -1.5');
sys.waitFor ($arm_anchor);
$arm_anchor.time (.04);
$arm_anchor.rotateOnce ('0 0 0.5');
sys.waitFor ($arm_anchor);
// need sound here
sys.trigger ($armsound1);
$arm_base.move ( NORTH, 256 );
sys.waitFor ($arm_base);
$arm_anchor.time (.2);
$arm_anchor.decelTime (.1);
$arm_anchor.rotateOnce ('0 0 6');
sys.waitFor ($arm_anchor);
$arm_anchor.rotateOnce ('0 0 -7');
sys.waitFor ($arm_anchor);
$arm_anchor.time (.15);
$arm_anchor.rotateOnce ('0 0 2');
sys.waitFor ($arm_anchor);
$arm_anchor.time (.08);
$arm_anchor.rotateOnce ('0 0 -1');
sys.waitFor ($arm_anchor);
}
}
////////////////////////////////////////////////////
//
// piston movement
//
////////////////////////////////////////////////////
void piston_move ()
{
while (1)
{
$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);
}
}
////////////////////////////////////////////////////
//
// MAIN
//
////////////////////////////////////////////////////
void main ()
{
sys.cacheSoundShader ("s3_arm_back");
setup_objects ();
piston_move ();
}
}