0
0
Fork 0
mirror of https://github.com/id-Software/DOOM-3-BFG.git synced 2025-03-15 23:21:35 +00:00
doom3-bfg/base/script/map_cpu.script
2022-08-27 13:19:00 +02:00

307 lines
No EOL
5.7 KiB
Text

namespace map_cpu {
float RAISE_HELL_PILLARS = 0;
float PLAYED_TRITE_STINGER = FALSE;
void init_world() {
$fixed_panel.hide();
}
void trite_stinger() {
if ( PLAYED_TRITE_STINGER == FALSE ) {
PLAYED_TRITE_STINGER = TRUE;
sys.trigger ($cpu1_monster_trite_1);
sys.trigger ($trite_stinger_2);
sys.trigger ($trite_stinger_3);
}
}
void trigger_secmon_exit() {
sys.trigger ($trigger_relay_20);
sys.wait (1.2);
sys.trigger ($trigger_relay_21);
sys.wait (2);
sys.trigger ($trigger_relay_22);
sys.wait (0.8);
sys.trigger ($trigger_relay_23);
}
/*
void haunted_cabinet() {
// sys.print ("Entering haunted_cabinet...\n");
$anchor.time (.3);
$anchor.moveTo ($hcab_p1);
sys.waitFor ($anchor);
sys.wait (.1);
$anchor.moveTo ($hcab_p2);
sys.waitFor ($anchor);
//$fc1.unbind();
$anchor.moveTo ($hcab_p3);
sys.trigger ($func_forcefield_4);
sys.wait (0.4);
//sys.waitFor ($anchor);
$fc1.unbind();
}
*/
/*
Returns a random vector from 0-maxValue for each axis
*/
vector getRandomVector(float maxX, float maxY, float maxZ) {
vector vec;
vec_x = int ( sys.random (maxX) );
vec_y = int ( sys.random (maxY) );
vec_z = int ( sys.random (maxZ) );
return vec;
}
// Open ceiling hatch area in monitoring room.
void open_cpuhatch() {
$ladder_floor_hatch.time (0.5);
$cpuladder.time (3);
$ladder_ceiling_panel.time (0.5);
$ladder_floor_hatch.move (DOWN, 8);
$ladder_ceiling_panel.move (UP, 8);
sys.waitFor ($ladder_floor_hatch);
$ladder_floor_hatch.move (SOUTH, 72);
$ladder_ceiling_panel.move (SOUTH, 72);
sys.waitFor ($ladder_floor_hatch);
$cpuladder.accelTime (1);
$cpuladder.decelTime (2);
$cpuladder.move (UP, 264);
}
// HK Lift before Lab A door
void raise_hlift() {
$hlift.speed (32);
$hlift.move (UP, 160);
sys.wait (0.2);
$mb1.remove();
$mb2.remove();
$mb3.remove();
$mb4.remove();
//sys.trigger ($mb1);
//sys.trigger ($mb2);
//sys.trigger ($mb3);
//sys.trigger ($mb4);
sys.waitFor ($hlift);
sys.print ("stopped moving\n");
}
void raise_hell_pillars() {
if (RAISE_HELL_PILLARS == 0) {
RAISE_HELL_PILLARS = 1;
$hp_01_anchor.rotateOnce ('0 90 0');
$hp_01.move (UP, 350);
sys.wait (1.5);
$hp_02_anchor.rotateOnce ('0 90 0');
$hp_02.move (UP, 350);
sys.wait (1.5);
$hp_03_anchor.rotateOnce ('0 90 0');
$hp_03.move (UP, 350);
sys.wait (1.5);
}
}
void fixed_maindoor() {
$fixed_panel.show();
$broken_panel.hide();
}
void sparks_cpubank_01() {
while (1) {
sys.trigger ($cpubank_01_sparks);
sys.wait ( sys.random (4) + 1);
}
}
void sparks_cpubank_02() {
while (1) {
sys.trigger ($cpubank_02_sparks);
sys.wait ( sys.random (3) + 1);
}
}
void move_cpubank_01() {
$cpubank_01.speed (64);
thread ( sparks_cpubank_01() );
$cpubank_01.moveTo ($cpubank_01_target);
}
void move_cpubank_02() {
$cpubank_02.speed (64);
thread ( sparks_cpubank_02() );
$cpubank_02.moveTo ($cpubank_02_target);
}
void cpu_secret_01() {
sys.trigger ($cpu_secret_01_speaker);
sys.print ("You have found a secret area !\n");
}
void drop_object(string entityname) {
entity ent, ent_anchor;
vector vec;
ent = sys.getEntity (entityname);
ent.time (4);
ent.accelTime (2);
ent_anchor = sys.getEntity (entityname + "_anchor");
//vec = getRandomVector (30, 45, 45);
vec = getRandomVector (10, 10, 10);
ent_anchor.rotate (vec);
ent.move (DOWN, 356);
sys.waitFor (ent);
ent.remove();
ent_anchor.remove();
}
void raise_object(string entityname) {
entity ent, ent_anchor;
vector vec;
ent = sys.getEntity (entityname);
ent.time (4);
ent.accelTime (2);
ent_anchor = sys.getEntity (entityname + "_anchor");
;vec = getRandomVector (30, 45, 45);
vec = getRandomVector (10, 10, 10);
ent_anchor.rotate (vec);
ent.move (UP, 356);
sys.waitFor (ent);
ent.remove();
ent_anchor.remove();
}
void dropscene1() {
float i;
entity ent;
for (i = 1; i<=2; i++) {
thread drop_object ("hpp_" + i);
sys.wait (0.3);
}
$hp_3_anchor.time (4);
$hp_5_anchor.time (4);
$hp_8_anchor.time (4);
for (i = 1; i<=12; i++) {
if (i == 3) {
//$hp_3_anchor.moveTo ($hp3_dest);
$hp_3.bob (4, 0.2, '0 0 2');
}
else if (i == 5) {
//$hp_5_anchor.moveTo ($hp5_dest);
$hp_5.bob (4, 0.6, '0 0 4');
}
else if (i == 8) {
//$hp_8_anchor.moveTo ($hp8_dest);
$hp_8.bob (4, 0.8, '0 0 3');
}
else {
thread drop_object ("hp_" + i);
}
sys.wait (0.3);
}
$hp_3_anchor.moveTo ($hp3_dest);
$hp_5_anchor.moveTo ($hp5_dest);
$hp_8_anchor.moveTo ($hp8_dest);
}
void dropscene2() {
float i;
entity ent;
for (i = 1; i<=10; i++) {
thread raise_object ("hpc_" + i);
sys.wait (0.3);
}
}
void dropscene3() {
float i;
entity ent;
for (i = 1; i<=3; i++) {
thread drop_object ("hp_wall_" + i);
sys.wait (0.3);
}
}
void battle_sounds() {
sys.wait (2);
sys.trigger ($speaker_cherubs);
sys.wait (45);
sys.trigger ($speaker_imps);
}
void dropscene() {
sys.trigger ($speaker_hallway_fall);
sys.trigger ($speaker_inf_01); // Shut some stuff off
sys.trigger ($speaker_inf_02);
sys.trigger ($speaker_inf_03);
thread dropscene1();
thread dropscene2();
thread dropscene3();
sys.wait (7);
sys.trigger ($speaker_inf_01); // Turn it back on
sys.trigger ($speaker_inf_02);
sys.trigger ($speaker_inf_03);
//$hpillar_01_anchor.rotateOnce ('0 90 0');
//$hpillar_01.move (UP, 400);
//sys.wait (1.5);
//$hpillar_02_anchor.rotateOnce ('0 -90 0');
//$hpillar_02.move (UP, 400);
}
void main() {
init_world();
}
}