Files
DoomRTX/base/script/map_alphalabs1.script
T
2026-05-23 14:19:48 -07:00

480 lines
11 KiB
Plaintext

namespace map_alphalabs1 {
float PLAYMUSIC = TRUE;
float monsterstatus = 1;
float GATE_OPEN = 0;
void init_world()
{
$epd_emlight.rotate ('0 -360 0');
//$epd_light1.setColor (0,0,0);
//$epd_light2.setColor (0,0,0);
//$epd_light3.setColor (0,0,0);
//$epd_light4.setColor (0,0,0);
//$epd_emlight.setColor (0,0,0);
}
void epd_phantasm_fadeout() {
$speaker_4.fadeSound ( SND_CHANNEL_ANY, -60, 1.5 );
$speaker_6.fadeSound ( SND_CHANNEL_ANY, -60, 1.5 );
$epd_alarm.fadeSound ( SND_CHANNEL_ANY, -60, 1.5 );
$epd_speaker_blast.fadeSound ( SND_CHANNEL_ANY, -60, 1.5 );
$epd_speaker_warmup.fadeSound ( SND_CHANNEL_ANY, -60, 1.5 );
sys.wait (10);
$speaker_4.fadeSound ( SND_CHANNEL_ANY, -5, 1.5 );
$speaker_6.fadeSound ( SND_CHANNEL_ANY, -6, 1.5 );
$epd_alarm.fadeSound ( SND_CHANNEL_ANY, 3, 1.5 );
$epd_speaker_blast.fadeSound ( SND_CHANNEL_ANY, 0, 1.5 );
$epd_speaker_warmup.fadeSound ( SND_CHANNEL_ANY, 0, 1.5 );
}
void seq_2() {
monsterstatus = 2;
}
void seq_3() {
monsterstatus = 3;
}
void seq_end() {
monsterstatus = 4;
}
void music_engine() {
return;
}
void fan_init ()
{
$fan_01.bind ($fan_01_anchor);
$fan_02.bind ($fan_02_anchor);
$fan_03.bind ($fan_03_anchor);
$fan_04.bind ($fan_04_anchor);
$fan_01_anchor.rotateOnce ('0 0 25');
$fan_02_anchor.rotateOnce ('0 0 25');
$fan_03_anchor.rotateOnce ('0 0 25');
$fan_04_anchor.rotateOnce ('0 0 25');
sys.waitFor ($fan_04_anchor);
$fan_01.rotate ('540 0 0');
$fan_02.rotate ('360 0 0');
$fan_03.rotate ('180 0 0');
$fan_04.rotate ('552 0 0');
}
void laser_ambience()
{
float numRandomWait;
numRandomWait = sys.random(2) + 1;
sys.wait (numRandomWait);
while (1)
{
sys.trigger ($e33_laser_rnd);
numRandomWait = sys.random(2) + 1;
sys.wait (numRandomWait);
}
}
void pumplight1_move()
{
$pumplight1.time(1.5);
$pumplight1.accelTime(.1);
$pumplight1.decelTime(.1);
while (1){
$pumplight1.move(DOWN,96);
sys.trigger ($pumplight1_speaker);
sys.waitFor ($pumplight1);
$pumplight1.move(UP,96);
sys.waitFor ($pumplight1);
}
}
void pumplight2_move()
{
$pumplight2.time(1.45);
$pumplight2.accelTime(.1);
$pumplight2.decelTime(.1);
while (1){
$pumplight2.move(DOWN,96);
sys.trigger ($pumplight2_speaker);
sys.waitFor ($pumplight2);
$pumplight2.move(UP,96);
sys.waitFor ($pumplight2);
}
}
void turkey_klax_on()
{
thread crossFadeEnt ($epd_light1, '0 0 0', '1 0.2 0', 2);
thread crossFadeEnt ($epd_light2, '0 0 0', '1 0.2 0', 2);
thread crossFadeEnt ($epd_light3, '0 0 0', '1 0.2 0', 2);
thread crossFadeEnt ($epd_light4, '0 0 0', '1 0.2 0', 2);
thread crossFadeEnt ($epd_emlight, '0 0 0', '1 0.2 0', 2);
}
void turkey_klax_off()
{
thread crossFadeEnt ($epd_light1, '1 0.2 0', '0 0 0', 2);
thread crossFadeEnt ($epd_light2, '1 0.2 0', '0 0 0', 2);
thread crossFadeEnt ($epd_light3, '1 0.2 0', '0 0 0', 2);
thread crossFadeEnt ($epd_light4, '1 0.2 0', '0 0 0', 2);
thread crossFadeEnt ($epd_emlight, '1 0.2 0', '0 0 0', 2);
}
// ***
// New and improved UAC Turkey Baster v2.0
// ***
void turkey_baster() {
while (1) {
sys.wait (5);
turkey_klax_on();
sys.trigger ($epd_alarm); // 8 seconds long
sys.wait (2);
sys.trigger ($epd_speaker_warmup);
sys.wait (1);
// Machine is on at this point...
sys.trigger ($epd_speaker_blast);
sys.trigger ($func_beam_1);
sys.trigger ( $ep_endEmitter );
sys.trigger ( $ep_emitter1 );
sys.trigger ($turkey_hurt_1);
sys.trigger ($tbbeam);
$tbbeamlight.fadeInLight(.5);
$ep_beam_source.fadeInLight( 0.2 );
$ep_endlight.fadeInLight(.5);
sys.wait (4);
// ... and toggle stuff off..
thread map_alphalabs1::turkey_klax_off();
sys.trigger ($func_beam_1);
sys.trigger ( $ep_endEmitter );
sys.trigger ( $ep_emitter1 );
sys.trigger ($turkey_hurt_1);
sys.trigger ($tbbeam);
$tbbeamlight.fadeOutLight(.5);
$ep_beam_source.fadeOutLight( 0.5 );
$ep_endlight.fadeOutLight(.5);
}
}
void toggle_gate() {
if (GATE_OPEN == 0) {
$gatedoor_left.open();
$gatedoor_right.open();
sys.waitFor ($gatedoor_right);
GATE_OPEN = 1;
}
else {
$gatedoor_left.close();
$gatedoor_right.close();
sys.waitFor ($gatedoor_right);
GATE_OPEN = 0;
}
}
void hc_loop()
{
//times for the can mover
$hc_can.time (1);
$hc_can.accelTime (.25);
$hc_can.decelTime (.25);
while (1) {
//can move from start hole into door 176
$hc_can.move ( NORTH, 176 );
//sys.trigger ($speaker_hc_bolt);
sys.waitFor ($hc_can);
sys.wait (.25);
//door move to down position 128
$hc_door.time (.5);
$hc_door.accelTime (.5);
$hc_door.decelTime (0);
$hc_can.bind ($hc_door);
//
sys.trigger ($speaker_hc_down);
$hc_door.move ( DOWN, 128 );
sys.waitFor ($hc_door);
sys.wait (.25);
//can move into final hole 176
$hc_can.move ( NORTH, 176 );
sys.trigger ($speaker_hc_bolt);
sys.waitFor ($hc_can);
sys.wait (.25);
//door move to up position 128
$hc_door.time (1);
$hc_door.accelTime (.25);
$hc_door.decelTime (.25);
$hc_door.move ( UP, 128 );
sys.trigger ($speaker_hc_up);
sys.waitFor ($hc_door);
sys.wait (.25);
//restore can position
$hc_can.unbind();
$hc_can.restorePosition();
sys.wait (.25);
}//end while
}
////////////////////////////////////////////////////
//
// Hydrocon1 move
//
////////////////////////////////////////////////////
void hydrocon1_move()
{
//bind ring
$hydrocon1_ring.bind ($hydrocon1_main);
//move hydrocon_main with ring up to top positioin
$hydrocon1_main.time (1.5);
$hydrocon1_main.accelTime (1);
$hydrocon1_main.decelTime (.5);
$hydrocon1_main.move ( UP, 216 );
sys.trigger ($hydrocon1_main_speaker_up);
sys.waitFor ($hydrocon1_main);
//wait at top for the whole thing to start again
sys.wait (1);
//move hydrocon_ring down 64
$hydrocon1_ring.move ( DOWN, 64 );
sys.trigger ($hydrocon1_ring_speaker_down);
sys.waitFor ($hydrocon1_ring);
sys.wait (.25);
//move hydrocon_main down with ring extended
$hydrocon1_main.time (1.5);
$hydrocon1_main.accelTime (1.5);
$hydrocon1_main.decelTime (0);
$hydrocon1_main.move ( DOWN, 216 );
sys.trigger ($hydrocon1_main_speaker_down);
sys.waitFor ($hydrocon1_main);
//unbind ring
$hydrocon1_ring.unbind();
//move hydrocon_main with ring down the remaining distance to nipple
$hydrocon1_main.time (1.5);
$hydrocon1_main.accelTime (0);
$hydrocon1_main.decelTime (1.5);
$hydrocon1_main.move ( DOWN, 64 );
sys.trigger ($hydrocon1_nipplemain_speaker_down);
sys.waitFor ($hydrocon1_main);
sys.wait (.25);
//bind nipple to hydrocon_main
$hydrocon1_nipple.bind ($hydrocon1_main);
//move hydrocon_main with nipple up to ring extended position
$hydrocon1_main.move ( UP, 64 );
sys.trigger ($hydrocon1_nipplemain_speaker_up);
sys.waitFor ($hydrocon1_main);
sys.wait (.25);
//activate effect
sys.trigger ($hydrocon1_emitter);
sys.trigger ($hydrocon1_emitter_speaker);
sys.trigger ($hydrocon1_light);
sys.wait (1);
//unbind nipple
$hydrocon1_nipple.unbind();
//move nipple back down
$hydrocon1_nipple.time (1);
$hydrocon1_nipple.accelTime (.8);
$hydrocon1_nipple.decelTime (.2);
$hydrocon1_nipple.move ( DOWN, 64 );
sys.trigger ($hydrocon1_nipple_speaker_down);
sys.waitFor ($hydrocon1_nipple);
//turn off effect
sys.trigger ($hydrocon1_emitter);
sys.trigger ($hydrocon1_emitter_speaker);
sys.trigger ($hydrocon1_light);
sys.wait (.25);
//move hydrocon_ring up 64
$hydrocon1_ring.move ( UP, 64 );
sys.trigger ($hydrocon1_ring_speaker_up);
sys.waitFor ($hydrocon1_ring);
sys.wait (.25);
}
////////////////////////////////////////////////////
//
// Hydrocon2 move
//
////////////////////////////////////////////////////
void hydrocon2_move()
{
//bind ring
$hydrocon2_ring.bind ($hydrocon2_main);
//move hydrocon_main with ring up to top positioin
$hydrocon2_main.time (1.5);
$hydrocon2_main.accelTime (1);
$hydrocon2_main.decelTime (.5);
$hydrocon2_main.move ( UP, 216 );
sys.trigger ($hydrocon2_main_speaker_up);
sys.waitFor ($hydrocon2_main);
//wait at top for the whole thing to start again
sys.wait (1);
//move hydrocon_ring down 64
$hydrocon2_ring.move ( DOWN, 64 );
sys.trigger ($hydrocon2_ring_speaker_down);
sys.waitFor ($hydrocon2_ring);
sys.wait (.25);
//move hydrocon_main down with ring extended
$hydrocon2_main.time (1.5);
$hydrocon2_main.accelTime (1.5);
$hydrocon2_main.decelTime (0);
$hydrocon2_main.move ( DOWN, 216 );
sys.trigger ($hydrocon2_main_speaker_down);
sys.waitFor ($hydrocon2_main);
//unbind ring
$hydrocon2_ring.unbind();
//move hydrocon_main with ring down the remaining distance to nipple
$hydrocon2_main.time (1.5);
$hydrocon2_main.accelTime (0);
$hydrocon2_main.decelTime (1.5);
$hydrocon2_main.move ( DOWN, 64 );
sys.trigger ($hydrocon2_nipplemain_speaker_down);
sys.waitFor ($hydrocon2_main);
sys.wait (.25);
//bind nipple to hydrocon_main
$hydrocon2_nipple.bind ($hydrocon2_main);
//move hydrocon_main with nipple up to ring extended position
$hydrocon2_main.move ( UP, 64 );
sys.trigger ($hydrocon2_nipplemain_speaker_up);
sys.waitFor ($hydrocon2_main);
sys.wait (.25);
//activate effect
sys.trigger ($hydrocon2_emitter);
sys.trigger ($hydrocon2_emitter_speaker);
sys.trigger ($hydrocon2_light);
sys.wait (1);
//unbind nipple
$hydrocon2_nipple.unbind();
//move nipple back down
$hydrocon2_nipple.time (1);
$hydrocon2_nipple.accelTime (.8);
$hydrocon2_nipple.decelTime (.2);
$hydrocon2_nipple.move ( DOWN, 64 );
sys.trigger ($hydrocon2_nipple_speaker_down);
sys.waitFor ($hydrocon2_nipple);
//turn off effect
sys.trigger ($hydrocon2_emitter);
sys.trigger ($hydrocon2_emitter_speaker);
sys.trigger ($hydrocon2_light);
sys.wait (.25);
//move hydrocon_ring up 64
$hydrocon2_ring.move ( UP, 64 );
sys.trigger ($hydrocon2_ring_speaker_up);
sys.waitFor ($hydrocon2_ring);
sys.wait (.25);
}
////////////////////////////////////////////////////
//
// Hydrocon Loop
//
////////////////////////////////////////////////////
void hydrocon_loop()
{
float hydrocon1_thread, hydrocon2_thread;
while (1){
hydrocon1_thread = thread map_alphalabs1::hydrocon1_move();
hydrocon2_thread = thread map_alphalabs1::hydrocon2_move();
sys.waitForThread( hydrocon1_thread );
sys.waitForThread( hydrocon2_thread );
}//end while
}
////////////////////////////////////////////////////
//
// Kill Hydrocon Loop
//
////////////////////////////////////////////////////
void kill_hydrocon_loop()
{
sys.killthread ("map_alphalabs1::hydrocon_loop");
sys.killthread ("map_alphalabs1::hydrocon1_move");
sys.killthread ("map_alphalabs1::hydrocon2_move");
}
//---
// Fade out the creepy sounds after the maggots all die
//---
void fade_maggot_sounds() {
$maggot_speaker_1.fadeSound (SND_CHANNEL_ANY, -60, 4);
$maggot_speaker_2.fadeSound (SND_CHANNEL_ANY, -60, 4);
$maggot_speaker_3.fadeSound (SND_CHANNEL_ANY, -60, 4);
$maggot_speaker_4.fadeSound (SND_CHANNEL_ANY, -60, 4);
}
void main ()
{
init_world();
fan_init();
//bathroom_init();
//thread laser_ambience();
thread pumplight1_move();
thread pumplight2_move();
thread hc_loop();
thread hydrocon_loop();
thread turkey_baster();
}
}