All Doom 3 AI is now native.

This commit is contained in:
Justin Marshall
2026-05-23 14:19:48 -07:00
parent 654e209e95
commit 027067a122
132 changed files with 61205 additions and 240 deletions
+73
View File
@@ -0,0 +1,73 @@
//
// move types
//
#define MOVETYPE_DEAD 0 // no enemy tracking or steering. just runs physics and script.
#define MOVETYPE_ANIM 1 // movement based on animation deltas
#define MOVETYPE_SLIDE 2 // movement based on velocity. set speed using setFlySpeed.
#define MOVETYPE_FLY 3 // flying monsters.
#define MOVETYPE_STATIC 4 // no movement or gravity.
//
// move results
//
#define MOVE_STATUS_DONE 0 // move succeeded, or not moving
#define MOVE_STATUS_MOVING 1 // move in progress
#define MOVE_STATUS_WAITING 2 //
#define MOVE_STATUS_DEST_NOT_FOUND 3 // destination doesn't exist
#define MOVE_STATUS_DEST_UNREACHABLE 4 //
#define MOVE_STATUS_BLOCKED_BY_WALL 5
#define MOVE_STATUS_BLOCKED_BY_OBJECT 6
#define MOVE_STATUS_BLOCKED_BY_ENEMY 7
#define MOVE_STATUS_BLOCKED_BY_MONSTER 8
//
// talk states
//
#define TALK_NEVER 0
#define TALK_DEAD 1
#define TALK_OK 2
#define TALK_BUSY 3
// AI has been moved to native
object ai {
void init();
boolean AI_TALK;
boolean AI_DAMAGE;
boolean AI_PAIN;
float AI_SPECIAL_DAMAGE; // value of "special_damage" on projectile
boolean AI_DEAD;
boolean AI_ENEMY_VISIBLE;
boolean AI_ENEMY_IN_FOV;
boolean AI_ENEMY_DEAD;
boolean AI_MOVE_DONE;
boolean AI_ONGROUND;
boolean AI_ACTIVATED;
boolean AI_FORWARD;
boolean AI_BACKWARD;
boolean AI_STRAFE_LEFT;
boolean AI_STRAFE_RIGHT;
boolean AI_ATTACK_HELD;
boolean AI_WEAPON_FIRED;
boolean AI_JUMP;
boolean AI_CROUCH;
boolean AI_ONLADDER;
boolean AI_HARDLANDING;
boolean AI_SOFTLANDING;
boolean AI_RUN;
boolean AI_RELOAD;
boolean AI_TELEPORT;
boolean AI_TURN_LEFT;
boolean AI_TURN_RIGHT;
boolean AI_DEST_UNREACHABLE;
boolean AI_BLOCKED;
boolean AI_HIT_ENEMY;
boolean AI_OBSTACLE_IN_PATH;
boolean AI_PUSHED;
};
void ai::init() {
}
-39
View File
@@ -13,42 +13,6 @@ This is the main script that is loaded before any level scripts load.
#include "script/weapon_base.script"
#include "script/ai_base.script"
// ai
#include "script/ai_monster_base.script"
#include "script/ai_monster_zombie_base.script"
#include "script/ai_monster_demon_archvile.script"
#include "script/ai_monster_demon_cherub.script"
#include "script/ai_monster_demon_hellknight.script"
#include "script/ai_monster_demon_imp.script"
#include "script/ai_monster_demon_maggot.script"
#include "script/ai_monster_demon_mancubus.script"
#include "script/ai_monster_demon_pinky.script"
#include "script/ai_monster_demon_revenant.script"
#include "script/ai_monster_demon_trite.script"
#include "script/ai_monster_demon_wraith.script"
#include "script/ai_monster_flying_lostsoul.script"
#include "script/ai_monster_flying_cacodemon.script"
#include "script/ai_monster_zombie.script"
#include "script/ai_monster_zombie_morgue.script"
#include "script/ai_monster_zombie_sawyer.script"
#include "script/ai_monster_zombie_bernie.script"
#include "script/ai_monster_zombie_commando_cgun.script"
#include "script/ai_monster_zombie_commando_tentacle.script"
#include "script/ai_monster_zombie_security_pistol.script"
#include "script/ai_monster_turret.script"
#include "script/ai_monster_boss_vagary.script"
#include "script/ai_monster_boss_cyberdemon.script"
#include "script/ai_monster_boss_guardian.script"
#include "script/ai_monster_boss_guardian_seeker.script"
#include "script/ai_monster_boss_sabaoth.script"
#include "script/ai_character.script"
#include "script/ai_character_prone.script"
#include "script/ai_character_sentry.script"
#include "script/ai_player.script"
// map specific character scripts
#include "script/ai_alphalabs2_scientist1.script"
// map scripts
#include "script/map_admin1.script"
#include "script/map_alphalabs1.script"
@@ -78,9 +42,6 @@ This is the main script that is loaded before any level scripts load.
#include "script/map_mc_underground.script"
#include "script/map_monorail.script"
// test scripts
#include "script/ai_follower.script"
void doom_main() {
sys.print( "Entering doom_main()\n");
+389
View File
@@ -0,0 +1,389 @@
/***********************************************************************
doom_util.script
This defines utility functions for scripts
***********************************************************************/
/*
==================
setShaderTime
Frame command for setting the shader time to begin an effect.
==================
*/
void setShaderTime( entity self ) {
self.setShaderParm( 4, -sys.getTime() );
}
/*
==================
clearSmoke
Clears smoke particles on monsters
==================
*/
void clearSmoke( entity self ) {
self.setSmokeVisibility( ALL_PARTICLES, 0 );
}
/*
==================
headlook_on
Turns on Bone modification for looking.
==================
*/
void headlook_on( entity self ) {
self.setBoneMod( true );
}
/*
==================
headlook_off
Turns off Bone modification for looking.
==================
*/
void headlook_off( entity self ) {
self.setBoneMod( false );
}
/*
==================
overrideLegs
Used to make monster attack anims use the full body
==================
*/
void overrideLegs( entity self ) {
self.overrideAnim( ANIMCHANNEL_LEGS );
}
/*
==================
overrideTorso
Used to make monster attack anims use the full body
==================
*/
void overrideTorso( entity self ) {
self.overrideAnim( ANIMCHANNEL_TORSO );
}
/*
==================
waitForButtonPress
Waits for the user to press a button
==================
*/
void waitForButtonPress() {
float buttons;
do {
buttons = $player1.getButtons();
sys.wait( 0.01 );
} while( !buttons );
}
/*
==================
abs
Returns the absolute value of a number
==================
*/
float abs( float value ) {
if ( value < 0 ) {
return value * -1;
}
return value;
}
/*
==================
unpause
Utility function that works with onSignal to unpause a script
==================
*/
void unpause() {
}
/*
==================
anglemod360
Puts angles into the range of 0 to 360
==================
*/
vector anglemod360( vector ang ) {
while( ang_x < 0 ) {
ang_x += 360;
}
while( ang_x >= 360 ) {
ang_x -= 360;
}
while( ang_y < 0 ) {
ang_y += 360;
}
while( ang_y >= 360 ) {
ang_y -= 360;
}
while( ang_z < 0 ) {
ang_z += 360;
}
while( ang_z >= 360 ) {
ang_z -= 360;
}
return ang;
}
/*
==================
anglemod180
Puts angles into the range of -180 to 180
==================
*/
vector anglemod180( vector ang ) {
while( ang_x < -180 ) {
ang_x += 360;
}
while( ang_x >= 180 ) {
ang_x -= 360;
}
while( ang_y < -180 ) {
ang_y += 360;
}
while( ang_y >= 180 ) {
ang_y -= 360;
}
while( ang_z < -180 ) {
ang_z += 360;
}
while( ang_z >= 180 ) {
ang_z -= 360;
}
return ang;
}
/*
==================
delayRemoveThread
Service thread for delayRemove.
==================
*/
void delayRemoveThread( entity ent, float mytime ) {
sys.wait( mytime );
ent.remove();
}
/*
==================
delayRemove
Causes an entity to be removed after a specified amount of time.
==================
*/
void delayRemove( entity ent, float mytime ) {
thread delayRemoveThread( ent, mytime );
}
/*
==================
fadeOutEnt
Causes a entity to fade to black
==================
*/
void fadeOutEnt( entity ent, vector color, float totalTime ) {
float i;
vector c;
float frac;
float numTics;
// convert to the total number of game tics
numTics = totalTime * sys.getTicsPerSecond();
for( i = 0; i < numTics; i++ ) {
frac = ( numTics - i ) / numTics;
c = color * frac;
ent.setColor( c_x, c_y, c_z );
// wait one game frame
sys.waitFrame();
}
// make sure we are set to exactly black
ent.setColor( 0, 0, 0 );
}
/*
==================
fadeInEnt
Causes a entity to from black to color
==================
*/
void fadeInEnt( entity ent, vector color, float totalTime ) {
float i;
vector c;
float frac;
float numTics;
// convert to the total number of game tics
numTics = totalTime * sys.getTicsPerSecond();
for( i = 0; i < numTics; i++ ) {
frac = i / numTics;
c = color * frac;
ent.setColor( c_x, c_y, c_z );
// wait one game frame
sys.waitFrame();
}
// make sure we are set to exactly the color
ent.setColor( color_x, color_y, color_z );
}
/*
==================
crossFadeEnt
Causes a entity to from one color to another
==================
*/
void crossFadeEnt( entity ent, vector source, vector dest, float totalTime ) {
float i;
vector c;
float frac;
float numTics;
// convert to the total number of game tics
numTics = totalTime * sys.getTicsPerSecond();
for( i = 0; i < numTics; i++ ) {
frac = i / numTics;
c = dest * frac + source * ( 1 - frac );
ent.setColor( c_x, c_y, c_z );
// wait one game frame
sys.waitFrame();
}
// make sure we are set to exactly the destination color
ent.setColor( dest_x, dest_y, dest_z );
}
/*
==================
interpolateShaderParm
Interpolates a single shader parm on an entity over a specified amount of time
==================
*/
void interpolateShaderParm( entity ent, float parm, float fromValue, float toValue, float totalTime ) {
float i;
float value;
float frac;
float numTics;
// convert to the total number of game tics
numTics = totalTime * sys.getTicsPerSecond();
for( i = 0; i < numTics; i++ ) {
frac = i / numTics;
value = toValue * frac + fromValue * ( 1 - frac );
ent.setShaderParm( parm, value );
ent.setLightParm( parm, value );
// wait one game frame
sys.waitFrame();
}
// make sure we are set to exactly the destination value
ent.setShaderParm( parm, toValue );
ent.setLightParm( parm, toValue );
}
/*
==================
CalcTimeForRotationAroundEntity
Calculates the time to perform a rotation of an entity around an entity it is bound to given
the angles to rotate and the desired speed.
==================
*/
float CalcTimeForRotationAroundEntity( float distanceFromCenter, float angles, float desiredSpeed ) {
float distance;
if ( desiredSpeed <= 0 ) {
return 0;
}
distance = DEG2RAD( angles ) * distanceFromCenter;
return distance / desiredSpeed;
}
/*
==================
func_clipmodel spawn function
==================
*/
void func_clipmodel() {
// do nothing
}
/*
==================
RandomDelay
==================
*/
float RandomDelay( float min, float max ) {
float t;
t = sys.getTime();
t += min + sys.random( max - min );
return t;
}
/*
==================
RandomTime
==================
*/
float RandomTime( float delay ) {
float t;
t = sys.getTime();
t += sys.random( delay );
return t;
}
/*
==================
DelayTime
==================
*/
float DelayTime( float delay ) {
float t;
t = sys.getTime();
t += delay;
t += sys.random( 2 ) - 1;
return t;
}
+449
View File
@@ -0,0 +1,449 @@
namespace map_admin1
{
void archiver2_cycle( entity capsule )
{
capsule.time( 1.0 );
capsule.decelTime( 0.25 );
capsule.moveTo( $capsule_staging );
//staging speaker - 1sec
//capsule slides out to loading position
sys.trigger ($speaker_archiver_staging);
sys.waitFor( capsule );
// receive a new capsule
$archiver2_joint.time( 0.5 );
$archiver2_joint.move( FORWARD, 24 );
//loading speaker #1 - .5sec
//carrier moves a bit to accept capsule
sys.trigger ($speaker_archiver_loading1);
sys.waitFor( $archiver2_joint );
capsule.accelTime( 0.1 );
capsule.time( 0.5 );
capsule.decelTime( 0.1 );
capsule.moveTo( $archiver2_carrier );
//loading speaker #2 - .5sec
//capsule moves into carrier
sys.trigger ($speaker_archiver_loading2);
sys.waitFor( capsule );
capsule.bind( $archiver2_carrier );
sys.wait( 0.5 );
$archiver2_joint.time( 0.5 );
$archiver2_joint.move( BACK, 24 );
//loading speaker #1 - .5sec
//carrier moves back after accepting capsule
sys.trigger ($speaker_archiver_loading1);
sys.waitFor( $archiver2_joint );
// 3.0s
// rotate over to depository2
$archiver2_arm.accelTime( 0.25 );
$archiver2_arm.time( 0.5 );
$archiver2_arm.decelTime( 0.25 );
$archiver2_arm.rotateDownTo( Y_AXIS, 315 );
//Arm2 short speaker - .5sec
//Arm2 moves
sys.trigger ($speaker_archiver_arm2_short);
sys.waitFor( $archiver2_arm );
// place the capsule into the archiver
$archiver2_carrier.time( 0.5 );
$archiver2_carrier.rotateUpTo( X_AXIS, 75 );
//depository2 speaker #1 - .5sec
//carrier turns
sys.trigger ($speaker_archiver_depository2_1);
sys.waitFor( $archiver2_carrier );
$archiver2_carrier.time( 0.5 );
$archiver2_carrier.move( REL_FORWARD, 16 );
//depository2 speaker #2 - .5sec
//carrier moves a bit
sys.trigger ($speaker_archiver_depository2_2);
sys.waitFor( $archiver2_carrier );
// time = 0.5
capsule.move( LEFT, 44 );
//depository2 speaker #3 - .5sec
//capsule moves into/outof depository
sys.trigger ($speaker_archiver_depository2_3);
sys.waitFor( capsule );
// trigger GUI to animate
$func_static_2764.setGuiParm( "gui_parm1", 1 );
sys.wait( 2.5 );
$func_static_2764.setGuiParm( "gui_parm1", 0 );
// time = 0.5
capsule.move( RIGHT, 44 );
//depository2 speaker #3 - .5sec
//capsule moves into/outof depository
sys.trigger ($speaker_archiver_depository2_3);
sys.waitFor( capsule );
// 8.0s
$archiver2_carrier.time( 0.5 );
$archiver2_carrier.move( REL_BACK, 16 );
//depository2 speaker #2 - .5sec
//carrier moves a bit
sys.trigger ($speaker_archiver_depository2_2);
sys.waitFor( $archiver2_carrier );
$archiver2_carrier.time( 0.5 );
$archiver2_carrier.rotateDownTo( X_AXIS, 0 );
//depository2 speaker #1 - .5sec
//carrier turns
sys.trigger ($speaker_archiver_depository2_1);
sys.waitFor( $archiver2_carrier );
// rotate over to dump2
$archiver2_arm.time( 1.5 );
$archiver2_arm.rotateDownTo( Y_AXIS, 180 );
//Arm2 long speaker - 1.5sec
//Arm2 moves
sys.trigger ($speaker_archiver_arm2_long);
sys.waitFor( $archiver2_arm );
// dispose of the capsule
$archiver2_carrier.time( 0.5 );
$archiver2_carrier.rotateUpTo( X_AXIS, 30 );
//dump2 speaker #1 - .5sec
//carrier turns
sys.trigger ($speaker_archiver_dump2_1);
sys.waitFor( $archiver2_carrier );
$archiver2_carrier.time( 0.5 );
$archiver2_carrier.move( REL_FORWARD, 16 );
//dump2 speaker #2 - .5sec
//carrier moves a bit
sys.trigger ($speaker_archiver_dump2_2);
sys.waitFor( $archiver2_carrier );
// 11.5s
capsule.unbind();
capsule.accelTime( 0.1 );
capsule.time( 0.5 );
capsule.decelTime( 0.1 );
capsule.move( REL_LEFT, 128 );
//dump1 speaker #3 - .5sec
//capsule moves into dump
sys.trigger ($speaker_archiver_dump2_3);
sys.waitFor( capsule );
$archiver2_carrier.time( 0.5 );
$archiver2_carrier.move( REL_BACK, 16 );
//dump2 speaker #2 - .5sec
//carrier moves a bit
sys.trigger ($speaker_archiver_dump2_2);
sys.waitFor( $archiver2_carrier );
$archiver2_carrier.time( 0.5 );
$archiver2_carrier.rotateDownTo( X_AXIS, 0 );
//dump2 speaker #1 - .5sec
//carrier turns
sys.trigger ($speaker_archiver_dump2_1);
sys.waitFor( $archiver2_carrier );
// rotate over to incomming capsules
$archiver2_arm.time( 2.0 );
$archiver2_arm.rotateDownTo( Y_AXIS, 0 );
//Arm2 longer speaker - 2sec
//Arm2 moves
sys.trigger ($speaker_archiver_arm2_longer);
sys.waitFor( $archiver2_arm );
// 15.0s
// reset the capsule
capsule.restorePosition();
}
void archiver1_cycle( entity capsule )
{
while( true )
{
capsule.time( 1.0 );
capsule.decelTime( 0.25 );
capsule.moveTo( $capsule_staging );
//staging speaker - 1sec
//capsule slides out to loading position
sys.trigger ($speaker_archiver_staging);
sys.waitFor( capsule );
// receive a new capsule
$archiver1_joint.time( 0.5 );
$archiver1_joint.move( FORWARD, 24 );
//loading speaker #1 - .5sec
//carrier moves a bit to accept capsule
sys.trigger ($speaker_archiver_loading1);
sys.waitFor( $archiver1_joint );
capsule.accelTime( 0.1 );
capsule.time( 0.5 );
capsule.decelTime( 0.1 );
capsule.moveTo( $archiver1_carrier );
//loading speaker #2 - .5sec
//capsule moves into carrier
sys.trigger ($speaker_archiver_loading2);
sys.waitFor( capsule );
capsule.bind( $archiver1_carrier );
sys.wait( 0.5 );
$archiver1_joint.time( 0.5 );
$archiver1_joint.move( BACK, 24 );
//loading speaker #1 - .5sec
//carrier moves back after accepting capsule
sys.trigger ($speaker_archiver_loading1);
sys.waitFor( $archiver1_joint );
// 3.0s
// rotate over to depository1
$archiver1_arm.accelTime( 0.25 );
$archiver1_arm.time( 1.5 );
$archiver1_arm.decelTime( 0.25 );
$archiver1_arm.rotateDownTo( Y_AXIS, 45 );
//Arm1 long speaker - 1.5sec
//Arm1 moves
sys.trigger ($speaker_archiver_arm1_long);
sys.waitFor( $archiver1_arm );
// place the capsule into the archiver
$archiver1_carrier.time( 0.5 );
$archiver1_carrier.rotateUpTo( X_AXIS, 75 );
//depository1 speaker #1 - .5sec
//carrier turns
sys.trigger ($speaker_archiver_depository1_1);
sys.waitFor( $archiver1_carrier );
$archiver1_carrier.time( 0.5 );
$archiver1_carrier.move( REL_FORWARD, 16 );
//depository1 speaker #2 - .5sec
//carrier moves a bit
sys.trigger ($speaker_archiver_depository1_2);
sys.waitFor( $archiver1_carrier );
// time = 0.5
capsule.move( LEFT, 40 );
//depository1 speaker #3 - .5sec
//capsule moves into/outof depository
sys.trigger ($speaker_archiver_depository1_3);
sys.waitFor( capsule );
//start the second arm mechanism
thread archiver2_cycle( $capsule2 );
// trigger GUI to animate
$func_static_2767.setGuiParm( "gui_parm1", 1 );
sys.wait( 2.5 );
$func_static_2767.setGuiParm( "gui_parm1", 0 );
// time = 0.5
capsule.move( RIGHT, 40 );
//depository1 speaker #3 - .5sec
//capsule moves into/outof depository
sys.trigger ($speaker_archiver_depository1_3);
sys.waitFor( capsule );
// 9.0s
$archiver1_carrier.time( 0.5 );
$archiver1_carrier.move( REL_BACK, 16 );
//depository1 speaker #2 - .5sec
//carrier moves a bit
sys.trigger ($speaker_archiver_depository1_2);
sys.waitFor( $archiver1_carrier );
$archiver1_carrier.time( 0.5 );
$archiver1_carrier.rotateDownTo( X_AXIS, 0 );
//depository1 speaker #1 - .5sec
//carrier turns
sys.trigger ($speaker_archiver_depository1_1);
sys.waitFor( $archiver1_carrier );
// rotate over to dump1
$archiver1_arm.time( 1.5 );
$archiver1_arm.rotateDownTo( Y_AXIS, 270 );
//Arm1 long speaker - 1.5sec
//Arm1 moves
sys.trigger ($speaker_archiver_arm1_long);
sys.waitFor( $archiver1_arm );
// dispose of the capsule
$archiver1_carrier.time( 0.5 );
$archiver1_carrier.rotateUpTo( X_AXIS, 30 );
//dump1 speaker #1 - .5sec
//carrier turns
sys.trigger ($speaker_archiver_dump1_1);
sys.waitFor( $archiver1_carrier );
$archiver1_carrier.time( 0.5 );
$archiver1_carrier.move( REL_FORWARD, 16 );
//dump1 speaker #2 - .5sec
//carrier moves a bit
sys.trigger ($speaker_archiver_dump1_2);
sys.waitFor( $archiver1_carrier );
// 12.5s
capsule.unbind();
capsule.accelTime( 0.1 );
capsule.time( 0.5 );
capsule.decelTime( 0.1 );
capsule.move( REL_LEFT, 128 );
//dump1 speaker #3 - .5sec
//capsule moves into dump
sys.trigger ($speaker_archiver_dump1_3);
sys.waitFor( capsule );
$archiver1_carrier.time( 0.5 );
$archiver1_carrier.move( REL_BACK, 16 );
//dump1 speaker #2 - .5sec
//carrier moves a bit
sys.trigger ($speaker_archiver_dump1_2);
sys.waitFor( $archiver1_carrier );
$archiver1_carrier.time( 0.5 );
$archiver1_carrier.rotateDownTo( X_AXIS, 0 );
//dump1 speaker #1 - .5sec
//carrier turns
sys.trigger ($speaker_archiver_dump1_1);
sys.waitFor( $archiver1_carrier );
// rotate over to incomming capsules
$archiver1_arm.time( 1.0 );
$archiver1_arm.rotateDownTo( Y_AXIS, 180 );
//Arm1 short speaker - 1sec
//Arm1 moves
sys.trigger ($speaker_archiver_arm1_short);
sys.waitFor( $archiver1_arm );
// 15.0s
// reset the capsule
capsule.restorePosition();
}
}
void archivers_setup()
{
// setup archiving unit 1
$archiver1_carrier.bind( $archiver1_joint );
$archiver1_joint.time( 0.1 );
$archiver1_joint.rotateUpTo( Y_AXIS, 90 );
sys.waitFor( $archiver1_joint );
$archiver1_arm.time( 0.1 );
$archiver1_arm.rotateUpTo( Y_AXIS, 180 );
sys.waitFor( $archiver1_arm );
$archiver1_joint.bind( $archiver1_arm );
// bind the arm so that both arms stop when one is blocked
$archiver1_arm.bind( $func_static_2683 );
// setup archiving unit 2
$archiver2_carrier.bind( $archiver2_joint );
$archiver2_joint.time( 0.1 );
$archiver2_joint.rotateUpTo( Y_AXIS, 90 );
sys.waitFor( $archiver2_joint );
$archiver2_arm.time( 0.1 );
$archiver2_arm.rotateUpTo( Y_AXIS, 0 );
sys.waitFor( $archiver2_arm );
$archiver2_joint.bind( $archiver2_arm );
// bind the arm so that both arms stop when one is blocked
$archiver2_arm.bind( $func_static_2683 );
// setup reader tube 1
$archiver1_reader.bind( $archiver_reader_parent );
$archiver_reader_parent.time( 0.1 );
$archiver_reader_parent.rotateUpTo( Y_AXIS, 45 );
sys.waitFor( $archiver_reader_parent );
$archiver1_reader.time( 0.1 );
$archiver1_reader.rotateUpTo( X_AXIS, 75 );
sys.waitFor( $archiver1_reader );
$archiver1_reader.move( REL_FORWARD, 64 );
sys.waitFor( $archiver1_reader );
$archiver1_reader.unbind();
$archiver_reader_parent.restorePosition();
// setup reader tube 2
$archiver2_reader.bind( $archiver_reader_parent );
$archiver_reader_parent.time( 0.1 );
$archiver_reader_parent.rotateDownTo( Y_AXIS, 315 );
sys.waitFor( $archiver_reader_parent );
$archiver2_reader.time( 0.1 );
$archiver2_reader.rotateUpTo( X_AXIS, 75 );
sys.waitFor( $archiver2_reader );
$archiver2_reader.move( REL_FORWARD, 64 );
sys.waitFor( $archiver2_reader );
$archiver2_reader.unbind();
$archiver_reader_parent.restorePosition();
// setup dump tube 1
$archiver1_dump.bind( $archiver_reader_parent );
$archiver_reader_parent.time( 0.1 );
$archiver_reader_parent.rotateUpTo( Y_AXIS, 180 );
sys.waitFor( $archiver_reader_parent );
$archiver1_dump.time( 0.1 );
$archiver1_dump.rotateUpTo( X_AXIS, 30 );
sys.waitFor( $archiver1_dump );
$archiver1_dump.move( REL_FORWARD, 64 );
sys.waitFor( $archiver1_dump );
$archiver1_dump.unbind();
$archiver_reader_parent.restorePosition();
// setup dump tube 2
$archiver2_dump.bind( $archiver_reader_parent );
$archiver_reader_parent.time( 0.1 );
$archiver_reader_parent.rotateUpTo( Y_AXIS, 270 );
sys.waitFor( $archiver_reader_parent );
$archiver2_dump.time( 0.1 );
$archiver2_dump.rotateUpTo( X_AXIS, 30 );
sys.waitFor( $archiver2_dump );
$archiver2_dump.move( REL_FORWARD, 64 );
sys.waitFor( $archiver2_dump );
$archiver2_dump.unbind();
$archiver_reader_parent.remove();
// run the loops
thread archiver1_cycle( $capsule1 );
}
void kill_wounded_marine()
{
$tim_admin_wounded_marine_1.kill();
}
void main()
{
//$swinglight_mover.sway( 2, 0, '40 15 0' );
$swinglight_mover.sway( 50, 0, '20 0 0' );
$library_lamp1_swing_anchor.sway( 3, 0, '15 10 0' );
$library_lamp1_swing_anchor2.sway( 3.5, 0, '7 5 5' );
archivers_setup();
}
}
+480
View File
@@ -0,0 +1,480 @@
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();
}
}
+587
View File
@@ -0,0 +1,587 @@
namespace map_alphalabs2 {
#define XMACH_BASE_SPEED 2
#define XMACH_JOINT_SPEED 2
//#define DEBUG 1
//#define VERBOSE 1
//#define ENABLE_BEAM 1
float spawn_start_imp = 0; // Is it ok to spawn in the first imp ?
float surprise_pinky_spawn = 0; // Did we kill the imp, to spawn in the surprise pinky at the CP ?
float surprise_pinky_dead = 0; // Did we kill the surprise pinky ? (Used to prevent retriggers)
float xmach_current = 0; // Current rotation angle it's at
float xmach_value = 0; // What is the current location of the machine ? (1-12)
void bathroom_init()
{
$bathroom_swinglamp_anchor.sway( 2.5, 1, '0 0 15' );
}
void entrance_door()
{
$start_light1.Off();
$start_light2.Off();
sys.trigger ($start_light3);
sys.trigger ($start_particle);
sys.wait (1);
$start_light2.On();
}
////////////////////////////////////////////////////
// Setup binds and times and initial movements etc...
////////////////////////////////////////////////////
void setup_objects()
{
vector beam_dst;
$mazelight_red_1.fadeOutLight (0.1);
$mazelight_red_2.fadeOutLight (0.1);
$mazelight_red_3.fadeOutLight (0.1);
//$mfs_redlight1.fadeOutLight (0.1);
//$mfs_redlight2.fadeOutLight (0.1);
//$mfs_redlight3.fadeOutLight (0.1);
$claw_arm_lower.time (0.75);
$claw_arm_lower.accelTime (0.25);
$claw_arm_lower.decelTime (0.25);
$claw_arm_upper.time (0.75);
$claw_arm_upper.accelTime (0.25);
$claw_arm_upper.decelTime (0.25);
$claw_arm_wrist.time (0.75);
$claw_arm_wrist.accelTime (0.25);
$claw_arm_wrist.decelTime (0.25);
$claw_revolver.time (2);
$claw_tooth_1.time (0.5);
$claw_tooth_2.time (0.5);
$claw_arm_upper.rotateOnce ('-40 0 0');
$claw_arm_lower.rotateOnce ('50 0 0');
$claw_arm_wrist.rotateOnce ('180 0 0');
$ddoor_1_anchor.time (1);
$ddoor_2_anchor.time (1);
$ddoor_1_anchor.accelTime (0.25);
$ddoor_2_anchor.accelTime (0.25);
$ddoor_1_anchor.decelTime (0.25);
$ddoor_2_anchor.decelTime (0.25);
$lobby1left.disable();
$lobby1right.disable();
$mal_func_door_55.disable();
$mal_func_door_56.disable();
sys.wait( 1 );
thread entrance_door();
//$br_secretdoor.speed (96);
$secret_door2.time (1.5);
$secret_ladder.time (3);
$secret_ladder.move (DOWN, 106);
$exit_ladder.move(DOWN, 126);
$elight.rotate ('0 -400 0');
$deadmarine_mover.speed (128);
$deadmarine_mover.moveTo ($deadmarine_path1);
//break lights in machine room
sys.trigger($light_4678);
sys.trigger($light_4679);
sys.trigger($light_4683);
sys.trigger($light_4684);
}
void br_move_secret_door()
{
$br_secretdoor.time(.5);
$br_secretdoor.accelTime(.25);
$br_secretdoor.decelTime(.25);
$br_secretdoor.moveTo ($br_secretdoor_path1);
sys.waitFor ($br_secretdoor);
sys.wait (0.5);
$br_secretdoor.time(1.0);
$br_secretdoor.accelTime(.5);
$br_secretdoor.decelTime(.5);
$br_secretdoor.moveTo ($br_secretdoor_path2);
sys.waitFor ($br_secretdoor);
}
void emp_blast()
{
float i;
entity emplight, empspeaker;
for (i=1; i<=10; i++)
{
emplight = sys.getEntity ("emplight_" + i);
emplight.On();
empspeaker = sys.getEntity ("empspeaker_" + i);
sys.trigger (empspeaker);
sys.wait (0.1);
emplight.Off();
}
}
void open_secrethatch()
{
sys.trigger ($mfs_secretdoor_open);
$secret_door2.moveTo ($secret2_path1);
sys.waitFor ($secret_door2);
$secret_door2.moveTo ($secret2_path2);
sys.waitFor ($secret_door2);
$secret_ladder_door.open();
sys.waitFor ($secret_ladder_door);
sys.trigger ($mfs_speaker_secretladder);
$secret_ladder.move (UP, 106);
}
///////////////////////
// Mal's machine
///////////////////////
void spinner()
{
while (1)
{
$slidearm.bind ($slidearm_anchor);
$can1.bind ($slidearm);
$can2.bind ($maindrum);
$slidearm_anchor.time (2);
$slidearm.time (2);
$can1.time (1);
$can2.time (1);
$maindrum.time (1);
$plunger.time (1);
//canister1 feed from main drum
sys.trigger ($mfs_roller_speaker_in);
$slidearm_anchor.moveTo ($slidearm_p2);
sys.wait (.1);
$slidearm.rotateOnce (' 0 0 -90 ');
sys.waitFor ($slidearm_anchor);
//canister1 feed into machine
sys.wait (1.5);
$can1.unbind();
$can1.bind ($plunger);
sys.trigger ($mfs_plunger_in);
$plunger.move (FORWARD,96);
sys.waitFor ($plunger); // was $can1
$can1.unbind();
sys.trigger ($mfs_can1_speaker);
$can1.moveTo ($can_target);
sys.waitFor ($can1);
//canister1 teleport
$can1.time (.01);
$can1.moveTo ($canspawn);
sys.waitFor ($can1);
$can1.bind ($maindrum);
//slidearm reset
sys.trigger ($mfs_roller_speaker_out);
$slidearm_anchor.moveTo ($slidearm_p1);
$slidearm.rotateOnce (' 0 0 90 ');
sys.trigger ($mfs_plunger_out);
$plunger.move (BACK,96);
sys.waitFor ($slidearm_anchor);
//main drum rotation
sys.trigger ($mfs_drum_speaker);
$maindrum.rotateOnce (' 0 0 -90 ');
sys.waitFor ($maindrum);
$can2.unbind();
sys.wait (.1);
//canister2 feed from main drum
$can2.bind ($slidearm);
sys.trigger ($mfs_roller_speaker_in);
sys.trigger ($mfs_can2_speaker);
$slidearm_anchor.moveTo ($slidearm_p2);
sys.wait (.1);
$slidearm.rotateOnce (' 0 0 -90 ');
sys.waitFor ($slidearm_anchor);
//canister2 feed into machine
sys.wait (1.5);
$can2.unbind();
$can2.bind ($plunger);
//$can2.move (FORWARD,232);
sys.trigger ($mfs_plunger_in);
$plunger.move (FORWARD,96);
sys.waitFor ($plunger);
$can2.unbind();
sys.trigger ($mfs_can2_speaker);
$can2.moveTo ($can_target);
sys.waitFor ($can2);
//canister2 teleport
$can2.time (.01);
$can2.moveTo ($canspawn);
sys.waitFor ($can2);
$can2.bind ($maindrum);
//slidearm reset
sys.trigger ($mfs_roller_speaker_out);
$slidearm_anchor.moveTo ($slidearm_p1);
$slidearm.rotateOnce (' 0 0 90 ');
sys.trigger ($mfs_plunger_out);
$plunger.move (BACK,96);
sys.waitFor ($slidearm_anchor);
//main drum rotation
sys.trigger ($mfs_drum_speaker);
$maindrum.rotateOnce (' 0 0 -90 ');
sys.waitFor ($maindrum);
$can1.unbind();
sys.wait (.1);
}
}
// The other half of the rotating tube-thingy machine...
void mach2()
{
entity ent, ent2;
vector bm_origin, bm_origin2;
bm_origin = $mach2_path1.getOrigin();
while (1)
{
$mach2_tube.time (2);
$mach2_tube.setOrigin (bm_origin);
sys.trigger ($mfs_speaker_tube);
$mach2_tube.moveTo ($mach2_path2);
sys.waitFor ($mach2_tube);
sys.wait (1);
$mach2_flap_left_anchor.time (1);
$mach2_flap_right_anchor.time (1);
sys.trigger ($mfs_speaker_flap_close);
$mach2_flap_left_anchor.rotateOnce ('0 0 -90');
$mach2_flap_right_anchor.rotateOnce ('0 0 90');
sys.waitFor ($mach2_flap_right_anchor);
sys.trigger ($mfs_speaker_decent);
$mach2_tube.moveTo ($mach2_path3);
sys.waitFor ($mach2_tube);
sys.trigger ($mfs_speaker_flap_open);
$mach2_flap_left_anchor.rotateOnce ('0 0 90');
$mach2_flap_right_anchor.rotateOnce ('0 0 -90');
sys.waitFor ($mach2_flap_right_anchor);
sys.wait (0.2);
}
}
///////////////////////
// Jerry's machine
///////////////////////
void spawn_canister()
{
vector startlocation;
startlocation = $canister1.getWorldOrigin();
$spinner1.time (1.5);
$spinner1.accelTime (.75);
$spinner1.decelTime (.75);
$spinner2.time (1.5);
$spinner2.accelTime (.75);
$spinner2.decelTime (.75);
$pivot_point.time (1.75);
$pivot_point.accelTime (.75);
$pivot_point.decelTime (.75);
$body.time (1);
$body.accelTime (.75);
$body.decelTime (.25);
$middle_arm.time (1.5);
$middle_arm.accelTime (.75);
$middle_arm.decelTime (.75);
$clamp_arm.time (1.5);
$clamp_arm.accelTime (.75);
$clamp_arm.decelTime (.75);
$can_door1.time (1);
$can_door1.accelTime (.75);
$can_door1.decelTime (.25);
$can_door2.time (1);
$can_door2.accelTime (.75);
$can_door2.decelTime (.25);
while (1)
{
//NOTE - machine starts in lowered position
$canister1.bind ($clamp_arm);
//move arms up
$spinner1.rotateOnce ('0 720 0');
$spinner2.rotateOnce ('0 720 0');
$clamp_arm.move (UP, 40 );
$middle_arm.move (UP, 60);
$pivot_point.moveTo ($p2);
sys.waitFor ($pivot_point);
//close doors
$can_door1.rotateOnce ('0 0 90');
$can_door2.rotateOnce ('0 0 90');
//rotate machine
$body.rotateOnce (' 0 0 90 ');
sys.waitFor ($body);
//move arms in
$spinner1.rotateOnce ('0 -720 0');
$spinner2.rotateOnce ('0 -720 0');
$middle_arm.move (-90, 60);
$clamp_arm.move (-90, 40 );
sys.waitFor ($clamp_arm);
//release canister
$canister1.unbind();
//move arms out
$spinner1.rotateOnce ('0 720 0');
$spinner2.rotateOnce ('0 720 0');
$middle_arm.move (90, 60);
$clamp_arm.move (90, 40 );
sys.waitFor ($clamp_arm);
$body.rotateOnce (' 0 0 -90 ');
sys.waitFor ($body);
//move canister back to start position
$canister1.setWorldOrigin (startlocation);
//move arms down
$can_door1.rotateOnce ('0 0 -90');
$can_door2.rotateOnce ('0 0 -90');
$spinner1.rotateOnce ('0 -720 0');
$spinner2.rotateOnce ('0 -720 0');
$pivot_point.moveTo ($p1);
$middle_arm.move (DOWN, 60);
$clamp_arm.move (DOWN, 40 );
sys.waitFor ($clamp_arm);
}
}
void xmachroom()
{
while (1)
{
thread spawn_canister();
sys.wait (2);
}
}
void sci_kill_lights()
{
$mazelight_1.Off();
$mazelight_2.Off();
sys.wait (.75);
//sys.trigger ($mazeimp_1);
//sys.trigger ($mazeimp_2);
//sys.trigger ($mazeimp_3);
sys.trigger ($open_impdoors);
sys.trigger ($imp_maze_wakeup);
//simulate lantern flash
sys.wait ( .40 );
$lantern_flash.On();
sys.wait (.15);
$lantern_flash.Off();
sys.trigger ($maze_bloodpool);
sys.trigger ($maze_bloodpool_1);
sys.trigger ($maze_bloodpool_2);
sys.trigger ($maze_bloodpool_3);
sys.trigger ($maze_bloodpool_4);
$mazelight_red_1.fadeInLight (4);
$mazelight_red_2.fadeInLight (4);
$mazelight_red_3.fadeInLight (4);
sys.wait (4);
$mazelight_1.fadeInLight (4);
$mazelight_2.fadeInLight (4);
}
/*
void mfs_redlights()
{
$mfs_redlight1.fadeInLight (4);
$mfs_redlight2.fadeInLight (4);
$mfs_redlight3.fadeInLight (4);
}
*/
// First posessed guy...
void move_soldier()
{
float i;
entity ent;
$wrist_mover.speed (128);
sys.trigger ($start_fadeout_blue);
sys.trigger ($start_fadeout_white);
//sys.trigger ($start_fadeout_sky);
for (i=1; i<=7; i++)
{
ent = sys.getEntity ("soldier_path" + i);
$wrist_mover.moveTo (ent);
sys.waitFor ($wrist_mover);
if (i == 1)
{
sys.trigger ($explodinglight_trigger_1);
sys.trigger ($explodinglight_trigger_1a);
sys.trigger ($explodinglight_trigger_1b);
sys.trigger ($explodinglight_trigger_1c);
//$body_spinner.rotate ('-10 20 -25');
sys.wait (1);
$wrist_mover.speed (200);
}
if (i == 2)
{
sys.trigger ($explodinglight_trigger_2);
sys.trigger ($explodinglight_trigger_2a);
sys.trigger ($explodinglight_trigger_2b);
sys.trigger ($explodinglight_trigger_2c);
}
if (i == 3)
{
sys.trigger ($explodinglight_trigger_3);
sys.trigger ($explodinglight_trigger_3a);
sys.trigger ($explodinglight_trigger_3b);
sys.trigger ($explodinglight_trigger_3c);
$tim_func_door_202.open();
$tim_func_door_203.open();
}
if ( i == 4)
{
$tim_func_door_202.close();
$tim_func_door_203.close();
$tim_func_door_203.lock(1);
$tim_func_door_202.lock(1);
//disable player forcefield
$trigger_once_56.disable();
$env_ragdoll_marine1_1.unbind();
sys.trigger ($start_fadein_blue);
sys.trigger ($start_fadein_white);
//sys.trigger ($start_fadein_sky);
spawn_start_imp = 1;
}
}
$wrist_mover.remove();
$env_ragdoll_marine1_1.remove();
}
void spawn_imp_entrance()
{
while (1)
{
if (spawn_start_imp == 1)
{
sys.trigger ($entrance_relay);
sys.trigger ($trigger_relay_45);
sys.trigger ($trigger_relay_47);
sys.trigger ($impstart_influence);
sys.wait (1);
sys.trigger ($start_imp_forcefield);
sys.trigger ($blowout_window);
sys.wait (1);
//sys.trigger ($surprise_imp_1);
return;
}
sys.wait (1);
}
}
// Called when the first imp dies
void unlock_start_door()
{
$tim_func_door_202.lock(0);
$tim_func_door_203.lock(0);
}
// Guy getting pulled into the ceiling @ start of the map
void gank_deadsoldier()
{
sys.trigger ($impscream);
sys.wait (1);
$deadmarine_mover.moveTo ($deadmarine_path2);
sys.trigger ($impscream_crunch_speaker);
sys.wait (1.5);
$deadmarine_mover.moveTo ($deadmarine_path3);
sys.wait (1.75);
$xenv_ragdoll_marine1_0.remove();
//sys.trigger ($imp_scream);
//sys.wait (1);
sys.trigger ($bodypart_1);
sys.wait (1);
sys.trigger ($bodypart_2);
sys.wait (1.25);
sys.trigger ($bodypart_3);
sys.wait (0.75);
sys.trigger ($bodypart_4);
sys.wait (1);
sys.trigger ($bodypart_5);
sys.wait (1.5);
sys.trigger ($bodypart_6);
sys.wait (5);
sys.trigger ($bodypart_7);
}
// Trap door in ceiling that a dead scientist drops out of
void open_cp_trapdoor()
{
$trapdoor_1_anchor.time (0.5);
$trapdoor_1_anchor.rotateOnce ('0 0 45');
}
void exit_ladder_move()
{
$exit_ladder.time(2);
$exit_ladder.accelTime(.5);
$exit_ladder.decelTime(1.5);
sys.trigger ($speaker_up_2seconds);
$exit_ladder.move(UP, 48);
sys.waitFor($exit_ladder);
sys.wait(4);
$exit_ladder.time(2);
$exit_ladder.accelTime(.5);
$exit_ladder.decelTime(1.5);
sys.trigger ($speaker_down_2seconds);
$exit_ladder.move(DOWN, 48);
sys.waitFor($exit_ladder);
sys.wait(5);
$exit_ladder.time(3);
$exit_ladder.accelTime(1);
$exit_ladder.decelTime(2);
sys.trigger ($speaker_up_3seconds);
$exit_ladder.move(UP, 64);
sys.waitFor($exit_ladder);
sys.wait(4);
$exit_ladder.time(2);
$exit_ladder.accelTime(.5);
$exit_ladder.decelTime(1.5);
sys.trigger ($speaker_down_2seconds);
$exit_ladder.move(DOWN, 64);
sys.waitFor($exit_ladder);
sys.wait(20);
$exit_ladder.time(4);
$exit_ladder.accelTime(1);
$exit_ladder.decelTime(3);
sys.trigger ($speaker_up_4seconds);
$exit_ladder.move(UP, 126);
sys.waitFor($exit_ladder);
$exit_ladder_clip.remove();
//trigger gui
sys.trigger( $func_static_5089);
$func_static_5089.setShaderParm (7, 1);
//turn on ladder lights
sys.trigger( $ladder_lights_relay);
}
////////////////////////////////////////////////////
// Main
////////////////////////////////////////////////////
void main()
{
setup_objects();
thread bathroom_init();
thread spinner();
thread mach2();
thread spawn_canister();
}
}
+119
View File
@@ -0,0 +1,119 @@
#include "script/map_alphalabs3_crane.script"
namespace map_alphalabs3 {
void fade_combat_speaker() {
$xspeaker_1.fadeSound ( SND_CHANNEL_ANY, -60, 10 );
$speaker_8.fadeSound ( SND_CHANNEL_ANY, -60, 10 );
}
////////////////////////////////////////////////////
//
// activate waste lift
//
////////////////////////////////////////////////////
void waste_lift_up()
{
//spawner
sys.trigger ($deathsquad_spawn);
//raises waste lift
$waste_lift.time (3);
$waste_lift.accelTime (.1);
$waste_lift.decelTime (.1);
$waste_lift.move (UP, 256);
//opens waste lift doors
sys.wait (1);
sys.trigger ($waste_lift_door_l);
}
////////////////////////////////////////////////////
//
// break the little al3_platform
//
////////////////////////////////////////////////////
void al3_platform_break()
{
//set the bottom call gui to malfunction
//so it can't be called twice
$func_static_4685.setGuiParm("gui_parm5" , 2);
$func_static_3921.setGuiParm("gui_parm5" , 2);
$func_static_4685.setShaderParm(7 , 0);
$func_static_3921.setShaderParm(7 , 0);
//first move down
$al3_platform_break.time ( 2.5 );
$al3_platform_break.accelTime ( .5 );
$al3_platform_break.decelTime ( 0 );
sys.trigger ($lspeaker_1);
$al3_platform.startSoundShader ("broken_plat_2_5s", SND_CHANNEL_VOICE2 );
$al3_platform_break.move ( DOWN, 190 );
sys.waitFor ($al3_platform_break);
//bounce a bit or something
sys.trigger ($broke_spark);
$al3_platform_break.time ( .2 );
$al3_platform_break.accelTime ( .2 );
$al3_platform_break.decelTime ( 0 );
$al3_platform_break.move ( UP, 6 );
sys.waitFor ($al3_platform_break);
$al3_platform_break.time ( .2 );
$al3_platform_break.accelTime ( 0 );
$al3_platform_break.decelTime ( .2 );
$al3_platform_break.move ( DOWN, 8 );
//rotate a about 24 degrees
$al3_platform_break.time ( .6 );
$al3_platform_break.accelTime ( .6 );
$al3_platform_break.decelTime ( 0 );
$al3_platform_break.startSoundShader ("platbreak_01", SND_CHANNEL_VOICE );
$al3_platform_break.rotateOnce ( '-24 5 0' );
sys.waitFor ($al3_platform_break);
$al3_platform_break.time ( .1 );
$al3_platform_break.accelTime ( .1 );
$al3_platform_break.decelTime ( 0 );
$al3_platform_break.startSoundShader ("platbreak_02", SND_CHANNEL_BODY );
$al3_platform_break.rotateOnce ( '1 0 0' );
sys.waitFor ($al3_platform_break);
$al3_platform_break.rotateOnce ( '-1 0 0' );
}
void cache_sounds() {
sys.cacheSoundShader ("broken_plat_2_5s");
sys.cacheSoundShader ("platbreak_01");
sys.cacheSoundShader ("platbreak_02");
}
//////////////////////////////////////////////////////////
//
// Vent cover opener
//
//////////////////////////////////////////////////////////
void open_vent_cover() {
$ventcover1.rotateOnce('0 0 -120');
}
void main() {
cache_sounds();
init_crane();
}
}
+510
View File
@@ -0,0 +1,510 @@
namespace map_alphalabs3 {
#define CRANE_NONE 0
#define CRANE_FORWARD 1
#define CRANE_BACK 2
#define CRANE_LEFT 3
#define CRANE_RIGHT 4
#define CRANE_UP 5
#define CRANE_DOWN 6
#define CRANE_DROP 7
#define CRANE_PICKUP 8
#define CRANE_TRANSFER 9
vector crane_mins = '2072 -56 -184';
vector crane_maxs = '2352 296 -48';
vector crane_pos;
float command = CRANE_NONE;
float bad_object_count = 0; // How many bad objects have we disposed of so far ?
float crane_have_object = false; // Is the crane currently holding an object ?
float crane_light_state = false;
entity bindEntity;
entity laserEntity;
entity tracestopEntity;
/***********************************************************************
Sounds
***********************************************************************/
void cache_crane_sounds() {
sys.cacheSoundShader( "al3_crane_fingers_open" );
sys.cacheSoundShader( "al3_crane_fingers_close" );
sys.cacheSoundShader( "al3_crane_loop" );
sys.cacheSoundShader( "al3_crane_end" );
sys.cacheSoundShader( "al3_crane_updown_loop" );
sys.cacheSoundShader( "al3_crane_updown_end" );
}
void sound_crane_fingers_open() {
$crane.startSoundShader ("al3_crane_fingers_open", SND_CHANNEL_VOICE2 );
}
void sound_crane_fingers_close() {
$crane.startSoundShader ("al3_crane_fingers_close", SND_CHANNEL_VOICE2 );
}
void sound_crane_loop() {
$crane_carrier.startSoundShader ("al3_crane_loop", SND_CHANNEL_VOICE2 );
}
void sound_crane_stop() {
$crane_carrier.startSoundShader ("al3_crane_end", SND_CHANNEL_VOICE2 );
}
void sound_crane_updown_loop() {
$crane_carrier.startSoundShader ("al3_crane_updown_loop", SND_CHANNEL_VOICE2 );
}
void sound_crane_updown_end() {
$crane_carrier.startSoundShader ("al3_crane_updown_end", SND_CHANNEL_VOICE2 );
}
/***********************************************************************
Crane
***********************************************************************/
/*
============
update_laser
updates laser color and checks if we can pick up an object
============
*/
void update_laser() {
vector begin = $crane_trace_start.getWorldOrigin();
vector send = $crane_stoptrace_end.getWorldOrigin();
vector lend = $laser_trace_end.getWorldOrigin();
sys.trace( begin, send, '0 0 0', '0 0 0', MASK_SOLID|CONTENTS_RENDERMODEL, $crane_hang );
tracestopEntity = sys.getTraceEntity();
sys.trace( begin, lend, '0 0 0', '0 0 0', MASK_SOLID|CONTENTS_RENDERMODEL, $crane_hang );
laserEntity = sys.getTraceEntity();
if ( !( !laserEntity ) && ( laserEntity != $world ) ) {
// can't move down further once the laser detects an object
if ( !( !tracestopEntity ) && ( tracestopEntity != $world ) && ( command == CRANE_DOWN ) ) {
command = CRANE_NONE;
}
if ( !crane_light_state ) {
$crane_light.setColor( .9, .25, .25 );
$cg_right.setGuiParm ( "gui_parm1" , 1);
$cg_left.setGuiParm ( "gui_parm1" , 1);
sys.trigger( $crane_speaker );
crane_light_state = true;
}
} else if ( crane_light_state ) {
$crane_light.setColor( .2, .8, .9 );
$cg_right.setGuiParm ( "gui_parm1" , 0);
$cg_left.setGuiParm ( "gui_parm1" , 0);
sys.trigger( $crane_speaker );
crane_light_state = false;
}
}
/*
============
crane_move
============
*/
void crane_move( entity part, float dir, float amount, float stopOnCommand ) {
float cmd;
if ( amount < 0.01 ) {
return;
}
if ( ( dir == UP ) || ( dir == DOWN ) ) {
sound_crane_updown_loop();
} else {
sound_crane_loop();
}
part.move( dir, amount );
if ( !stopOnCommand ) {
sys.waitFor( part );
} else {
cmd = command;
while( command == cmd ) {
sys.waitFrame();
update_laser();
if ( !part.isMoving() ) {
break;
}
}
part.stopMoving();
}
if ( ( dir == UP ) || ( dir == DOWN ) ) {
sound_crane_updown_end();
} else {
sound_crane_stop();
}
crane_pos = $crane_position.getWorldOrigin();
}
/*
============
crane_cmd_drop
unbind and open the claw
============
*/
void crane_cmd_drop() {
sound_crane_fingers_open();
$crane.setFingerAngle( -60 );
bindEntity.unbind();
bindEntity = $null_entity;
crane_have_object = false;
update_laser();
$main_control_gui.setGuiParm ( "gui_parm1" , 0);
}
/*
============
crane_pickup
close the claw and bind
============
*/
void crane_cmd_pickup() {
vector begin, end;
string bindJoint, bindBody;
if ( !( !bindEntity ) ) {
return;
}
crane_have_object = false;
bindJoint = bindBody = "";
sound_crane_fingers_close();
$crane.setFingerAngle( 20 );
sys.wait( 2.0f );
$crane.stopFingers();
begin = $crane_trace_start.getWorldOrigin();
end = $crane_trace_end.getWorldOrigin();
sys.trace( begin, end, '0 0 0', '0 0 0', MASK_SOLID|CONTENTS_RENDERMODEL, $crane_hang );
bindEntity = sys.getTraceEntity();
if ( !( !bindEntity ) && ( bindEntity != $world ) ) {
bindJoint = sys.getTraceJoint();
if ( bindJoint ) {
bindBody = sys.getTraceBody();
if ( bindBody ) {
bindEntity.setKey( "bindConstraint bind1", "fixed " + bindBody + " " + bindJoint );
bindEntity.bindToJoint( $crane, "crane", 1 );
crane_have_object = true;
}
} else {
bindEntity.bindToJoint( $crane, "crane", 1 );
crane_have_object = true;
}
}
// automatically move up
crane_move( $crane_hang, UP, crane_maxs_z - crane_pos_z, false );
if ( !crane_have_object ) {
sound_crane_fingers_open();
$crane.setFingerAngle( -60 );
bindEntity = $null_entity;
} else {
$main_control_gui.setGuiParm ( "gui_parm1" , 1);
}
}
/*
============
kill_lastobject
============
*/
void kill_lastobject( entity lastobject ) {
$main_control_gui.setGuiParm( "gui_parm1" , 1 );
//sys.print( "kill_lastobject: " + lastobject.getName() + "\n" );
if ( ( lastobject != $bad_object_1 ) && ( lastobject != $bad_object_2 ) ) {
// deleting the player != smart
if ( lastobject.getKey( "spawnclass" ) != "idPlayer" ) {
lastobject.remove();
}
return;
}
lastobject.remove();
bad_object_count++;
if ( bad_object_count == 1 ) {
thread crossFadeEnt ($puke_light, '0 0.52 0.07', '0 0.26 0.035', 5.0);
sys.wait (5);
sys.trigger ($cranewarning_2);
} else if ( bad_object_count == 2 ) {
sys.trigger ($crane_fog);
thread crossFadeEnt ($puke_light, '0 0.26 0.035', '0 0 0', 5.0);
sys.wait (5);
sys.trigger ($cranewarning_3);
// Get rid of the trigger_once for the computer voice, if they
// haven't triggered it yet.
$toxin_trigger.remove();
sys.trigger ($disposal_door);
sys.trigger ($disposal_setshaderparm);
sys.trigger ($cgdoors_setshaderparm);
sys.trigger ($clear_colorchange);
$disposal_outer_gui.setGuiParm( "gui_parm1", 1 );
$disposal_inner_gui.setGuiParm( "gui_parm1", 1 );
$dd_light1.setColor (0.0, 0.5, 0.0);
$dd_light2.setColor (0.0, 0.5, 0.0);
$dd_green_dec.show ();
$dd_red_dec.hide ();
sys.trigger ($trigger_relay_262);
sys.wait (5);
sys.trigger ($alpha3_sarge1);
sys.wait (7);
sys.trigger ($trigger_relay_264);
}
}
/*
============
crane_cmd_transfer
move crane to the drop off point
only if it has an object bound
drop the bound object
eventually this will send the object to the new area
============
*/
void crane_cmd_transfer() {
float move_x, move_y, move_z;
float xdir, ydir, zdir;
float xrdir, yrdir, zrdir;
vector drop_point;
if ( !crane_have_object ) {
return;
}
$crane_carrier.speed( 40 );
$crane_top.speed( 40 );
//
// How are we going to get to the receptible ?
//
drop_point = $crane_drop.getWorldOrigin();
// Calculate X movement
if ( crane_pos_x >= drop_point_x ) {
move_x = crane_pos_x - drop_point_x;
xdir = WEST;
xrdir = EAST;
} else {
move_x = drop_point_x - crane_pos_x;
xdir = EAST;
xrdir = WEST;
}
// Calculate Y movement
if ( crane_pos_y >= drop_point_y ) {
move_y = crane_pos_y - drop_point_y;
ydir = SOUTH;
yrdir = NORTH;
} else {
move_y = drop_point_y - crane_pos_y;
ydir = NORTH;
yrdir = SOUTH;
}
sound_crane_loop();
$crane_carrier.move( ydir, move_y );
sys.waitFor( $crane_carrier );
sound_crane_stop();
sound_crane_loop();
$crane_top.move( xdir, move_x );
sys.waitFor( $crane_top );
sound_crane_stop();
sys.wait( 1 );
crane_cmd_drop();
sys.wait( 0.5 );
sound_crane_loop();
$crane_top.move( xrdir, move_x );
sys.waitFor( $crane_top );
sound_crane_stop();
sound_crane_loop();
$crane_carrier.move( yrdir, move_y );
sys.waitFor( $crane_carrier );
sound_crane_stop();
$crane_top.speed( 30 );
$crane_carrier.speed( 30 );
}
/*
============
crane_update_loop
============
*/
void crane_update_loop() {
while( 1 ) {
command = CRANE_NONE;
while( command == CRANE_NONE ) {
update_laser();
sys.waitFrame();
}
if ( command == CRANE_FORWARD ) {
if ( crane_pos_x > crane_mins_x ) {
crane_move( $crane_top, WEST, crane_pos_x - crane_mins_x, true );
}
} else if ( command == CRANE_BACK ) {
if ( crane_pos_x < crane_maxs_x ) {
crane_move( $crane_top, EAST, crane_maxs_x - crane_pos_x, true );
}
} else if ( command == CRANE_LEFT ) {
if ( crane_pos_y > crane_mins_y ) {
crane_move( $crane_carrier, SOUTH, crane_pos_y - crane_mins_y, true );
}
} else if ( command == CRANE_RIGHT ) {
if ( crane_pos_y < crane_maxs_y ) {
crane_move( $crane_carrier, NORTH, crane_maxs_y - crane_pos_y, true );
}
} else if ( command == CRANE_UP ) {
if ( crane_pos_z < crane_maxs_y ) {
crane_move( $crane_hang, UP, crane_maxs_z - crane_pos_z, true );
}
} else if ( command == CRANE_DOWN ) {
if ( ( crane_pos_z > crane_mins_z ) && !bindEntity && ( !tracestopEntity || ( tracestopEntity == $world ) ) ) {
crane_move( $crane_hang, DOWN, crane_pos_z - crane_mins_z, true );
}
} else if ( command == CRANE_DROP ) {
crane_cmd_drop();
} else if ( command == CRANE_PICKUP ) {
crane_cmd_pickup();
} else if ( command == CRANE_TRANSFER ) {
crane_cmd_transfer();
}
}
}
/***********************************************************************
User interface
***********************************************************************/
void crane_forward() {
command = CRANE_FORWARD;
}
void crane_back() {
command = CRANE_BACK;
}
void crane_left() {
command = CRANE_LEFT;
}
void crane_right() {
command = CRANE_RIGHT;
}
void crane_up() {
command = CRANE_UP;
}
void crane_down() {
command = CRANE_DOWN;
}
void crane_stop() {
command = CRANE_NONE;
}
void crane_drop() {
command = CRANE_DROP;
}
void crane_pickup() {
command = CRANE_PICKUP;
}
void crane_transfer() {
command = CRANE_TRANSFER;
}
/***********************************************************************
initialization
***********************************************************************/
/*
============
init_crane
============
*/
void init_crane() {
cache_crane_sounds();
crane_pos = $crane_position.getWorldOrigin();
$crane_light.bindToJoint( $crane, "crane", 1 );
// crane_position
$crane_trace_start.bindToJoint( $crane, "crane", 1 );
$crane_trace_end.bindToJoint( $crane, "crane", 1 );
$crane_stoptrace_end.bindToJoint( $crane, "crane", 1 );
$laser_trace_end.bindToJoint( $crane, "crane", 1 );
$crane_carrier.speed( 30 );
$crane_top.speed( 30 );
$crane_hang.speed( 45 );
$crane_top.bind( $crane_carrier );
$crane_hang.bind( $crane_top );
$crane.bind( $crane_hang );
$crane.setFingerAngle( -60 );
thread crane_update_loop();
}
/* namespace map_alphalabs3 */ }
File diff suppressed because it is too large Load Diff
+203
View File
@@ -0,0 +1,203 @@
namespace map_caves {
void toggle_light(entity ent, vector srcColor, vector dstColor) {
vector tempVector;
tempVector = ent.getColor();
if ( ( tempVector_x == srcColor_x ) && ( tempVector_y == srcColor_y ) && (tempVector_z == srcColor_z) )
{
ent.setColor ( dstColor_x, dstColor_y, dstColor_z );
return;
}
if ( ( tempVector_x == dstColor_x ) && ( tempVector_y == dstColor_y ) && (tempVector_z == dstColor_z) )
ent.setColor ( srcColor_x, srcColor_y, srcColor_z );
}
void room1_toggle() {
vector srcRGB;
vector dstRGB;
srcRGB_x = 1;
srcRGB_y = 0.83;
srcRGB_z = 0.58;
dstRGB_x = 1;
dstRGB_y = 0;
dstRGB_z = 0;
toggle_light ($r1l1, srcRGB, dstRGB);
toggle_light ($r1l2, srcRGB, dstRGB);
toggle_light ($r1l3, srcRGB, dstRGB);
toggle_light ($r1l4, srcRGB, dstRGB);
toggle_light ($r1l5, srcRGB, dstRGB);
toggle_light ($r1l6, srcRGB, dstRGB);
toggle_light ($r1l7, srcRGB, dstRGB);
toggle_light ($r1l8, srcRGB, dstRGB);
}
void room2_toggle () {
vector srcRGB;
vector dstRGB;
srcRGB_x = 1;
srcRGB_y = 0.83;
srcRGB_z = 0.58;
dstRGB_x = 1;
dstRGB_y = 0;
dstRGB_z = 0;
toggle_light ($r2l1, srcRGB, dstRGB);
toggle_light ($r2l2, srcRGB, dstRGB);
toggle_light ($r2l3, srcRGB, dstRGB);
toggle_light ($r2l4, srcRGB, dstRGB);
}
void room3_toggle() {
vector srcRGB;
vector dstRGB;
srcRGB_x = 1;
srcRGB_y = 0.83;
srcRGB_z = 0.58;
dstRGB_x = 1;
dstRGB_y = 0;
dstRGB_z = 0;
toggle_light ($r3l1, srcRGB, dstRGB);
toggle_light ($r3l2, srcRGB, dstRGB);
toggle_light ($r3l3, srcRGB, dstRGB);
toggle_light ($r3l4, srcRGB, dstRGB);
toggle_light ($r3l5, srcRGB, dstRGB);
toggle_light ($r3l6, srcRGB, dstRGB);
}
void room4_toggle () {
vector srcRGB;
vector dstRGB;
srcRGB_x = 1;
srcRGB_y = 0.83;
srcRGB_z = 0.58;
dstRGB_x = 1;
dstRGB_y = 0;
dstRGB_z = 0;
sys.print ("Processing room4_toggle\n");
toggle_light ($r4l1, srcRGB, dstRGB);
toggle_light ($r4l2, srcRGB, dstRGB);
}
void lifter1() {
$endlift1.time (5);
$endlift1.moveTo ($endlift_top);
}
void lifter2() {
$endlift1.time (5);
$endlift1.moveTo ($endlift_bottom);
}
////////////////////////////////////////////////////
//
// Light Group1 on - Group2 & Group3 off
//
////////////////////////////////////////////////////
void light_group_1()
{
float i;
float rate;
rate = GAME_FRAMETIME * 0.25;
// start generator
$gen_rot.rotate ('120 0 0');
// force all other group lights to 0,0,0
sys.setShaderParm(1,0);
sys.setShaderParm(2,0);
for( i = 0; i <= 1; i += rate ) {
sys.setShaderParm(0,i);
sys.wait ( GAME_FRAMETIME );
}
}
////////////////////////////////////////////////////
//
// Light Group2 on - Group1 & Group3 off
//
////////////////////////////////////////////////////
void light_group_2()
{
float i;
float rate;
rate = GAME_FRAMETIME * 0.25;
// force all other group lights to 0,0,0
sys.setShaderParm(0,0);
sys.setShaderParm(2,0);
for( i = 0; i <= 1; i += rate ) {
sys.setShaderParm(1,i);
sys.wait (GAME_FRAMETIME);
}
}
////////////////////////////////////////////////////
//
// Light Group3 on - Group1 & Group2 off
//
////////////////////////////////////////////////////
void light_group_3()
{
float i;
float rate;
rate = GAME_FRAMETIME * 0.25;
// force all other group lights to 0,0,0
sys.setShaderParm(0,0);
sys.setShaderParm(1,0);
for( i = 0; i <= 1; i += rate ) {
sys.setShaderParm(2,i);
sys.wait (GAME_FRAMETIME);
}
}
////////////////////////////////////////////////////
//
// Generator Monitor comes out
//
////////////////////////////////////////////////////
void gen_mon_out()
{
//rotate door up 60degs
$gen_mon_door.rotateOnce (' 60 0 0 ');
sys.wait(.2);
$gen_mon_light.On();
sys.waitFor ($gen_mon_door);
//move monitor up and out
$gen_mon.moveTo ($gen_mon_spot1);
sys.waitFor ($gen_mon);
$gen_mon.moveTo ($gen_mon_spot2);
sys.waitFor ($gen_mon);
}
////////////////////////////////////////////////////
//
// Caverns 1 Main
//
////////////////////////////////////////////////////
void main()
{
sys.setShaderParm(0,1);
}
}
+740
View File
@@ -0,0 +1,740 @@
namespace map_caves2 {
// variable to track the open close state of caves2_shutters
float cave2_shutter_state = 0;
float cave2_ladder_state = 0;
// variables to track crane movement states
float crane_main_state = 15;
float crane_carrier_state = 210;
float crane_carrier_load_state = 0;
float generator_on = FALSE;
////////////////////////////////////////////////////
//
// Setup objects
//
////////////////////////////////////////////////////
void setup_objects()
{
//move super_ladder down for keycard puzzle
$super_ladder.time(1);
$super_ladder.move ( DOWN, 632 );
$crane_carrier.bind ($crane_main);
$crane_carrier_load.bind ($crane_carrier);
$crane_main.setGuiParm ( "gui_parm3" , (crane_carrier_state / 4));
$crane_main.setGuiParm ( "gui_parm2" , crane_main_state);
$crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state);
$crane_main.time (.05);
$crane_carrier.time (.01);
$crane_carrier_load.time (.02);
}
// Sound stuff for generator startup
void toggle_generator() {
if (generator_on) {
sys.trigger ($speaker_generator_stop); // Play Stop Sound
sys.trigger ($speaker_generator_loop); // Turn the loop off
generator_on = FALSE;
}
else {
sys.trigger ($speaker_generator_start);
sys.wait (1);
sys.trigger ($speaker_generator_loop);
generator_on = TRUE;
}
}
// This is so that we don't need one long 40 second looping sound for the ride down
void lift_sound_thread() {
sys.trigger ($lift_speaker_start);
sys.wait (4.75);
sys.trigger ($lift_speaker_loop); // Turn on the loop
sys.wait (35);
sys.trigger ($lift_speaker_end);
sys.wait (0.2);
sys.trigger ($lift_speaker_loop); // Turn off the loop
}
////////////////////////////////////////////////////
//
// Cave2 Small ladder at the lift
//
////////////////////////////////////////////////////
void lower_smallcave_ladder()
{
sys.wait( .5 );
sys.trigger( $snd_ladder_move );
$smallcave_ladder.move( DOWN, 120 );
}
void raise_smallcave_ladder()
{
sys.wait( .5 );
sys.trigger( $snd_ladder_move );
$smallcave_ladder.move( UP, 120 );
}
////////////////////////////////////////////////////
//
// Cave2 1st Elevator
//
////////////////////////////////////////////////////
void big_broke_start()
{
// times for big_broke mover
$big_broke.time (40);
$big_broke.accelTime (5);
$big_broke.decelTime (.5);
$big_broke.setKey ("snd_accel", "cav1_lift_start");
$big_broke.setKey ("snd_move", "cav1_lift_loop");
$big_broke.setKey ("snd_decel", "cav1_lift_stop");
// move the big_broke
//thread lift_sound_thread();
$big_broke.moveTo ($big_broke_start);
sys.waitFor ($big_broke);
sys.trigger ($big_broke);
sys.trigger ($func_aas_obstacle_1);
}
void big_broke_end()
{
// times for big_broke mover
$big_broke.setKey ("snd_accel", "cav1_lift_start");
$big_broke.setKey ("snd_move", "cav1_lift_loop");
$big_broke.setKey ("snd_decel", "cav1_lift_stop");
$big_broke.time (40);
$big_broke.accelTime (5);
$big_broke.decelTime (.2);
// move the big_broke
// thread lift_sound_thread();
$big_broke.moveTo ($big_broke_end);
sys.trigger ($func_aas_obstacle_1);
}
////////////////////////////////////////////////////
// Cave2 key card objective call
////////////////////////////////////////////////////
void callcavekey1()
{
sys.trigger ($caverns2_obj1);
}
////////////////////////////////////////////////////
// Caverns2 Piston machine1 sream
////////////////////////////////////////////////////
void piston1steam()
{
sys.trigger ($piston_1_steamspeaker);
sys.trigger ($pm1_steam1);
sys.wait (1);
sys.trigger ($pm1_steam1);
}
////////////////////////////////////////////////////
// Caverns2 Piston machine2 sream
////////////////////////////////////////////////////
void piston2steam()
{
sys.trigger ($piston_2_steamspeaker);
sys.trigger ($pm2_steam1);
sys.wait (1);
sys.trigger ($pm2_steam1);
}
////////////////////////////////////////////////////
// Caverns2 Piston machine1
////////////////////////////////////////////////////
void cavepiston1()
{
while(1){
$cave_piston1.accelTime (.2);
$cave_piston1.decelTime (.2);
$cave_piston1.time (6);
sys.trigger ($cave_piston_1_speaker_start);
sys.trigger ($cave_piston_1_speaker_loop); // Turn loop on
$cave_piston1.move (SOUTH,64);
sys.waitFor ($cave_piston1);
sys.trigger ($cave_piston_1_speaker_loop); // Turn loop off
sys.trigger ($cave_piston_1_speaker_endclack);
thread piston1steam();
sys.wait (0.75);
$cave_piston1.time (.5);
sys.trigger ($cave_piston_1_speaker_back);
$cave_piston1.move (NORTH,64);
sys.wait (1.5);
}
}
////////////////////////////////////////////////////
// Caverns2 Piston machine2
////////////////////////////////////////////////////
void cavepiston2()
{
while(1){
$cave_piston2.accelTime (.2);
$cave_piston2.decelTime (.2);
$cave_piston2.time (5.5);
sys.trigger ($cave_piston_2_speaker_start);
sys.trigger ($cave_piston_2_speaker_loop); // Turn loop on
$cave_piston2.move (SOUTH,64);
sys.waitFor ($cave_piston2);
sys.trigger ($cave_piston_2_speaker_loop); // Turn loop off
sys.trigger ($cave_piston_2_speaker_endclack);
thread piston2steam();
sys.wait (1);
$cave_piston2.time (.5);
sys.trigger ($cave_piston_2_speaker_back);
$cave_piston2.move (NORTH,64);
sys.wait (1.5);
}
}
////////////////////////////////////////////////////
//
// Cave2 v81 rumble
//
////////////////////////////////////////////////////
void cave2_v81_rumble()
{
$c2_v81.time (.1);
while(1){
$c2_v81.rotateOnce ( '2 0 0' );
sys.waitFor ($c2_v81);
$c2_v81.rotateOnce ( '-2 0 0' );
sys.waitFor ($c2_v81);
}
}
////////////////////////////////////////////////////
//
// Cave2 v82 rumble
//
////////////////////////////////////////////////////
void cave2_v82_rumble()
{
$c2_v82.time (.1);
while(1){
$c2_v82.rotateOnce ( '2 0 0' );
sys.waitFor ($c2_v82);
$c2_v82.rotateOnce ( '-2 0 0' );
sys.waitFor ($c2_v82);
}
}
////////////////////////////////////////////////////
//
// Cave2 cave eggs
//
////////////////////////////////////////////////////
// void cave_egg1_bob()
// {
// $cave_egg1.rotate ( '0 15 0' );
//
// $cave_egg1.time (.5);
// $cave_egg1.accelTime (.25);
// $cave_egg1.decelTime (.25);
//
// while(1){
// $cave_egg1.move ( DOWN, 2 );
// sys.waitFor ($cave_egg1);
// $cave_egg1.move ( UP, 2 );
// sys.waitFor ($cave_egg1);
//
// }
// }
//
// void cave_egg2_bob()
// {
// $cave_egg2.rotate ( '0 16 0' );
//
// $cave_egg2.time (.8);
// $cave_egg2.accelTime (.25);
// $cave_egg2.decelTime (.25);
//
// while(1){
// $cave_egg2.move ( DOWN, 2 );
// sys.waitFor ($cave_egg2);
// $cave_egg2.move ( UP, 2 );
// sys.waitFor ($cave_egg2);
//
// }
// }
//
//
// void cave_egg3_bob()
// {
// $cave_egg3.rotate ( '0 15 0' );
//
// $cave_egg3.time (.6);
// $cave_egg3.accelTime (.25);
// $cave_egg3.decelTime (.25);
//
// while(1){
// $cave_egg3.move ( DOWN, 2 );
// sys.waitFor ($cave_egg3);
// $cave_egg3.move ( UP, 2 );
// sys.waitFor ($cave_egg3);
//
// }
// }
////////////////////////////////////////////////////
//
// Cave2 shutter open close
//
////////////////////////////////////////////////////
void cave2_shutter_openclose()
{
if (cave2_shutter_state==0){
sys.trigger ($shutter_speaker);
sys.trigger ($cave2_shutter_door);
$cave2_shutter1.rotateOnce ( '0 0 -75' );
$cave2_shutter2.rotateOnce ( '0 0 -75' );
$cave2_shutter3.rotateOnce ( '0 0 -75' );
sys.waitFor ($cave2_shutter1);
cave2_shutter_state = 1;
} else {
sys.trigger ($shutter_speaker);
sys.trigger ($cave2_shutter_door);
$cave2_shutter1.rotateOnce ( '0 0 75' );
$cave2_shutter2.rotateOnce ( '0 0 75' );
$cave2_shutter3.rotateOnce ( '0 0 75' );
sys.waitFor ($cave2_shutter1);
cave2_shutter_state = 0;
}
}
////////////////////////////////////////////////////
//
// Cave2 ladder open close
//
////////////////////////////////////////////////////
void cave2_ladder_openclose()
{
if (cave2_ladder_state==0){
$cave2_dropladder.time (0.5);
sys.trigger ($cave2_ladder_door);
sys.trigger ($ladder_hinge_speaker);
$cave2_dropladder.rotateOnce ( '0 0 -90' );
sys.waitFor ($cave2_dropladder);
$ladder_rotate_gui.setShaderParm ( 7 , 1 );
cave2_ladder_state = 1;
} else {
sys.trigger ($cave2_ladder_door);
sys.trigger ($ladder_hinge_speaker);
$cave2_dropladder.time (0.5);
$cave2_dropladder.rotateOnce ( '0 0 90' );
sys.waitFor ($cave2_dropladder);
$ladder_rotate_gui.setShaderParm ( 7 , 0 );
cave2_ladder_state = 0;
}
}
void crane_start_thread() {
sys.trigger ($crane_start_speaker);
sys.wait (1);
$crane_main_speaker.On();
}
////////////////////////////////////////////////////
//
// Crane Main Move Right
//
////////////////////////////////////////////////////
void crane_main_right()
{
sys.killthread ( "map_caves2::crane_main_left" );
sys.killthread ( "map_caves2::crane_carrier_forward" );
sys.killthread ( "map_caves2::crane_carrier_back" );
//start the sound
// sys.trigger ($crane_start_speaker);
// $crane_main_speaker.On();
thread crane_start_thread();
while ( crane_main_state < 105 ) {
$crane_main.rotateOnce ( '0 -1 0' );
sys.waitFor ($crane_main);
crane_main_state = crane_main_state + 1;
sys.print ("crane_main_state = " + crane_main_state + " \n");
$crane_main.setGuiParm ( "gui_parm2" , crane_main_state);
$crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state);
sys.wait (.01);
}
sys.trigger ($crane_end_speaker);
//stop the sound
$crane_main_speaker.Off();
}
////////////////////////////////////////////////////
//
// Crane Main Move Left
//
////////////////////////////////////////////////////
void crane_main_left()
{
sys.killthread ( "map_caves2::crane_main_right" );
sys.killthread ( "map_caves2::crane_carrier_forward" );
sys.killthread ( "map_caves2::crane_carrier_back" );
//start the sound
//sys.trigger ($crane_start_speaker);
//$crane_main_speaker.On();
thread crane_start_thread();
while ( crane_main_state > 15 ) {
$crane_main.rotateOnce ( '0 1 0' );
sys.waitFor ($crane_main);
crane_main_state = crane_main_state - 1;
sys.print ("crane_main_state = " + crane_main_state + " \n");
$crane_main.setGuiParm ( "gui_parm2" , crane_main_state);
$crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state);
sys.wait (.01);
}
//stop the sound
$crane_main_speaker.Off();
sys.trigger ($crane_end_speaker);
}
////////////////////////////////////////////////////
//
// Crane Reset
//
////////////////////////////////////////////////////
void crane_main_reset()
{
sys.killthread ( "map_caves2::crane_main_left" );
sys.killthread ( "map_caves2::crane_main_right" );
sys.killthread ( "map_caves2::crane_carrier_forward" );
sys.killthread ( "map_caves2::crane_carrier_back" );
//start the sound
$crane_main_speaker.On();
if (crane_main_state > 15) {
while ( crane_main_state > 15 ) {
$crane_main.rotateOnce ( '0 1 0' );
sys.waitFor ($crane_main);
crane_main_state = crane_main_state - 1;
sys.print ("crane_main_state = " + crane_main_state + " \n");
$crane_main.setGuiParm ( "gui_parm2" , crane_main_state);
$crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state);
sys.wait (.01);
}
} else if (crane_main_state < 15) {
while ( crane_main_state < 15 ) {
$crane_main.rotateOnce ( '0 -1 0' );
sys.waitFor ($crane_main);
crane_main_state = crane_main_state + 1;
sys.print ("crane_main_state = " + crane_main_state + " \n");
$crane_main.setGuiParm ( "gui_parm2" , crane_main_state);
$crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state);
sys.wait (.01);
}
}
//stop the sound
$crane_main_speaker.Off();
}
////////////////////////////////////////////////////
//
// Crane Carrier Move Forward
//
////////////////////////////////////////////////////
void crane_carrier_forward()
{
sys.killthread ( "map_caves2::crane_main_left" );
sys.killthread ( "map_caves2::crane_main_right" );
sys.killthread ( "map_caves2::crane_carrier_back" );
//start the sound
$crane_carrier_speaker.On();
while ( crane_carrier_state > 0 ) {
$crane_carrier.move ( FORWARD, -1 );
sys.waitFor ($crane_carrier);
crane_carrier_state = crane_carrier_state - 1;
sys.print ("crane_carrier_state = " + (crane_carrier_state / 4) + " \n");
$crane_main.setGuiParm ( "gui_parm3" , (crane_carrier_state / 4));
sys.wait (.01);
}
//stop the sound
$crane_carrier_speaker.Off();
}
////////////////////////////////////////////////////
//
// Crane Carrier Move Back
//
////////////////////////////////////////////////////
void crane_carrier_back()
{
sys.killthread ( "map_caves2::crane_main_left" );
sys.killthread ( "map_caves2::crane_main_right" );
sys.killthread ( "map_caves2::crane_carrier_foward" );
//start the sound
$crane_carrier_speaker.On();
while ( crane_carrier_state < 360 ) {
$crane_carrier.move ( FORWARD, 1 );
sys.waitFor ($crane_carrier);
crane_carrier_state = crane_carrier_state + 1;
sys.print ("crane_carrier_state = " + (crane_carrier_state / 4) + " \n");
$crane_main.setGuiParm ( "gui_parm3" , (crane_carrier_state / 4));
sys.wait (.01);
}
//stop the sound
$crane_carrier_speaker.Off();
}
////////////////////////////////////////////////////
//
// Crane Carrier Load Move UP
//
////////////////////////////////////////////////////
void crane_carrier_load_up()
{
sys.killthread ( "map_caves2::crane_main_left" );
sys.killthread ( "map_caves2::crane_main_right" );
sys.killthread ( "map_caves2::crane_carrier_foward" );
sys.killthread ( "map_caves2::crane_carrier_back" );
sys.killthread ( "map_caves2::crane_carrier_load_down" );
while ( crane_carrier_load_state < 72 ) {
$crane_carrier_load.move ( UP, 1 );
sys.waitFor ($crane_carrier_load);
crane_carrier_load_state = crane_carrier_load_state + 1;
sys.print ("crane_carrier_load_state = " + crane_carrier_load_state + " \n");
sys.wait (.01);
}
}
////////////////////////////////////////////////////
//
// Crane Carrier Load Move DOWN
//
////////////////////////////////////////////////////
void crane_carrier_load_down()
{
sys.killthread ( "map_caves2::crane_main_left" );
sys.killthread ( "map_caves2::crane_main_right" );
sys.killthread ( "map_caves2::crane_carrier_foward" );
sys.killthread ( "map_caves2::crane_carrier_back" );
sys.killthread ( "map_caves2::crane_carrier_load_up" );
while ( crane_carrier_load_state > -176 ) {
$crane_carrier_load.move ( DOWN, 1 );
sys.waitFor ($crane_carrier_load);
crane_carrier_load_state = crane_carrier_load_state - 1;
sys.print ("crane_carrier_load_state = " + crane_carrier_load_state + " \n");
sys.wait (.01);
}
}
////////////////////////////////////////////////////
//
// stops all crane movement threads
//
////////////////////////////////////////////////////
void crane_stop()
{
//turn off speakers
$crane_carrier_speaker.Off();
$crane_main_speaker.Off();
sys.killthread ( "map_caves2::crane_main_right" );
sys.killthread ( "map_caves2::crane_main_left" );
sys.killthread ( "map_caves2::crane_carrier_forward" );
sys.killthread ( "map_caves2::crane_carrier_back" );
sys.killthread ( "map_caves2::crane_carrier_load_up" );
sys.killthread ( "map_caves2::crane_carrier_load_down" );
}
////////////////////////////////////////////////////
//
// show crane_carrier_load
//
////////////////////////////////////////////////////
void crane_load_show()
{
//show crane_load
$crane_carrier_load.show();
}
////////////////////////////////////////////////////
//
// move super_ladder up
//
////////////////////////////////////////////////////
void super_ladder_move()
{
//move super_ladder up for keycard puzzle
sys.trigger ($super_ladder_speaker);
$super_ladder.time(6);
$super_ladder.move(UP,632);
}
void stone_movement (entity ent, float fdirection, float fdistance, float ftime) {
ent.time (ftime);
ent.startSoundShader ("stone_movement_loop", SND_CHANNEL_VOICE);
ent.move (fdirection, fdistance);
sys.wait (ftime - 0.25);
ent.startSoundShader ( "stone_movement_end", SND_CHANNEL_VOICE2 );
ent.stopSound ( SND_CHANNEL_VOICE, false );
}
////////////////////////////////////////////////////
//
// Vag Stairs
//
////////////////////////////////////////////////////
void raise_vag_stairs()
{
//raises stairs after vag fight
/* float i;
entity ent;
for (i=8; i<=128; i+=8) {
ent=sys.getEntity ("step" + i);
thread stone_movement ( ent, UP, i, (i / 8) );
}
*/
thread stone_movement ($step1, UP, 8, 1);
thread stone_movement ($step2, UP, 16, 2);
thread stone_movement ($step3, UP, 24, 3);
thread stone_movement ($step4, UP, 32, 4);
thread stone_movement ($step5, UP, 40, 5);
thread stone_movement ($step6, UP, 48, 6);
thread stone_movement ($step7, UP, 56, 7);
thread stone_movement ($step8, UP, 64, 8);
thread stone_movement ($step9, UP, 72, 9);
thread stone_movement ($step10, UP, 80, 10);
thread stone_movement ($step11, UP, 88, 11);
thread stone_movement ($step12, UP, 96, 12);
thread stone_movement ($step13, UP, 104, 13);
thread stone_movement ($step14, UP, 112, 14);
thread stone_movement ($step15, UP, 120, 15);
thread stone_movement ($step16, UP, 128, 16);
/*
$step1.time(1);
$step1.move(UP,8);
$step2.time(2);
$step2.move(UP,16);
$step3.time(3);
$step3.move(UP,24);
$step4.time(4);
$step4.move(UP,32);
$step5.time(5);
$step5.move(UP,40);
$step6.time(6);
$step6.move(UP,48);
$step7.time(7);
$step7.move(UP,56);
$step8.time(8);
$step8.move(UP,64);
$step9.time(9);
$step9.move(UP,72);
$step10.time(10);
$step10.move(UP,80);
$step11.time(11);
$step11.move(UP,88);
$step12.time(12);
$step12.move(UP,96);
$step13.time(13);
$step13.move(UP,104);
$step14.time(14);
$step14.move(UP,112);
$step15.time(15);
$step15.move(UP,120);
$step16.time(16);
$step16.move(UP,128);
*/
}
void cache_sounds() {
sys.cacheSoundShader ( "stone_movement_loop" );
sys.cacheSoundShader ( "stone_movement_end" );
}
////////////////////////////////////////////////////
//
// Caverns 2 Main
//
////////////////////////////////////////////////////
void main()
{
cache_sounds();
setup_objects();
//starts swinging lamp swinging
$swingding.sway( 28, 0, '20 0 0' );
// thread big_broke();
thread cavepiston1();
thread cavepiston2();
thread cave2_v81_rumble();
thread cave2_v82_rumble();
// thread cave_egg1_bob();
// thread cave_egg2_bob();
// thread cave_egg3_bob();
}
}// namespace
//Fred's Bridge thing
//
//void hk_fireball( entity self ) {
// self.launchMissiles( "projectile_fireball_hellknight", "snd_fire", "rmissile", "target", 1, 0 );
//}
File diff suppressed because it is too large Load Diff
+871
View File
@@ -0,0 +1,871 @@
namespace map_commoutside {
////////////////////////////////////////////////////
//
// Setup binds and times etc...
//
////////////////////////////////////////////////////
void setup_objects()
{
//set airlock door guis initial states to 1
$airlock1_door2_gui.setGuiParm ( "gui_parm1" , 1);
$airlock2_door1_gui.setGuiParm ( "gui_parm1" , 1);
$airlock2_door2_gui.setGuiParm ( "gui_parm1" , 1);
$airlock3_door1_gui.setGuiParm ( "gui_parm1" , 1);
$airlock3_door2_gui.setGuiParm ( "gui_parm1" , 1);
$airlock4_door1_gui.setGuiParm ( "gui_parm1" , 1);
//airlock1 times
$airlock1_door1_left.time (1.2);
$airlock1_door1_right.time (1.2);
$airlock1_door1_left.accelTime (.2);
$airlock1_door1_left.decelTime (1);
$airlock1_door1_right.accelTime (.2);
$airlock1_door1_right.decelTime (1);
$airlock1_door1_top_lock.time (.25);
$airlock1_door1_bottom_lock.time (.25);
$airlock1_door1_left_lock.time (.75);
$airlock1_door1_right_lock.time (.75);
$airlock1_door1_left_lock.accelTime (.1);
$airlock1_door1_left_lock.decelTime (.65);
$airlock1_door1_right_lock.accelTime (.1);
$airlock1_door1_right_lock.decelTime (.65);
$airlock1_door2_left.time (1.2);
$airlock1_door2_right.time (1.2);
$airlock1_door2_left.accelTime (.2);
$airlock1_door2_left.decelTime (1);
$airlock1_door2_right.accelTime (.2);
$airlock1_door2_right.decelTime (1);
$airlock1_door2_top_lock.time (.25);
$airlock1_door2_bottom_lock.time (.25);
$airlock1_door2_left_lock.time (.75);
$airlock1_door2_right_lock.time (.75);
$airlock1_door2_left_lock.accelTime (.1);
$airlock1_door2_left_lock.decelTime (.65);
$airlock1_door2_right_lock.accelTime (.1);
$airlock1_door2_right_lock.decelTime (.65);
//airlock2 times
$airlock2_door1_left.time (1.2);
$airlock2_door1_right.time (1.2);
$airlock2_door1_left.accelTime (.2);
$airlock2_door1_left.decelTime (1);
$airlock2_door1_right.accelTime (.2);
$airlock2_door1_right.decelTime (1);
$airlock2_door1_top_lock.time (.25);
$airlock2_door1_bottom_lock.time (.25);
$airlock2_door1_left_lock.time (.75);
$airlock2_door1_right_lock.time (.75);
$airlock2_door1_left_lock.accelTime (.1);
$airlock2_door1_left_lock.decelTime (.65);
$airlock2_door1_right_lock.accelTime (.1);
$airlock2_door1_right_lock.decelTime (.65);
$airlock2_door2_left.time (1.2);
$airlock2_door2_right.time (1.2);
$airlock2_door2_left.accelTime (.2);
$airlock2_door2_left.decelTime (1);
$airlock2_door2_right.accelTime (.2);
$airlock2_door2_right.decelTime (1);
$airlock2_door2_top_lock.time (.25);
$airlock2_door2_bottom_lock.time (.25);
$airlock2_door2_left_lock.time (.75);
$airlock2_door2_right_lock.time (.75);
$airlock2_door2_left_lock.accelTime (.1);
$airlock2_door2_left_lock.decelTime (.65);
$airlock2_door2_right_lock.accelTime (.1);
$airlock2_door2_right_lock.decelTime (.65);
//airlock3 times
$airlock3_door1_left.time (1.2);
$airlock3_door1_right.time (1.2);
$airlock3_door1_left.accelTime (.2);
$airlock3_door1_left.decelTime (1);
$airlock3_door1_right.accelTime (.2);
$airlock3_door1_right.decelTime (1);
$airlock3_door1_top_lock.time (.25);
$airlock3_door1_bottom_lock.time (.25);
$airlock3_door1_left_lock.time (.75);
$airlock3_door1_right_lock.time (.75);
$airlock3_door1_left_lock.accelTime (.1);
$airlock3_door1_left_lock.decelTime (.65);
$airlock3_door1_right_lock.accelTime (.1);
$airlock3_door1_right_lock.decelTime (.65);
$airlock3_door2_left.time (1.2);
$airlock3_door2_right.time (1.2);
$airlock3_door2_left.accelTime (.2);
$airlock3_door2_left.decelTime (1);
$airlock3_door2_right.accelTime (.2);
$airlock3_door2_right.decelTime (1);
$airlock3_door2_top_lock.time (.25);
$airlock3_door2_bottom_lock.time (.25);
$airlock3_door2_left_lock.time (.75);
$airlock3_door2_right_lock.time (.75);
$airlock3_door2_left_lock.accelTime (.1);
$airlock3_door2_left_lock.decelTime (.65);
$airlock3_door2_right_lock.accelTime (.1);
$airlock3_door2_right_lock.decelTime (.65);
//airlock4 times
$airlock4_door1_left.time (1.2);
$airlock4_door1_right.time (1.2);
$airlock4_door1_left.accelTime (.2);
$airlock4_door1_left.decelTime (1);
$airlock4_door1_right.accelTime (.2);
$airlock4_door1_right.decelTime (1);
$airlock4_door1_top_lock.time (.25);
$airlock4_door1_bottom_lock.time (.25);
$airlock4_door1_left_lock.time (.75);
$airlock4_door1_right_lock.time (.75);
$airlock4_door1_left_lock.accelTime (.1);
$airlock4_door1_left_lock.decelTime (.65);
$airlock4_door1_right_lock.accelTime (.1);
$airlock4_door1_right_lock.decelTime (.65);
//goofy arm binds
$goofyarm_4.bind ($goofyarm_3);
$goofyarm_3.bind ($goofyarm_2);
$goofyarm_2.bind ($goofyarm_1);
$goofyarm_1.time (.5);
$goofyarm_2.time (.5);
$goofyarm_3.time (.5);
$goofyarm_4.time (.5);
$goofy_light_1.setColor( .62, .62, .72);
$goofy_light_2.setColor( .62, .62, .72);
$goofy_flare_1.setColor( .62, .62, .72);
$goofy_flare_2.setColor( .62, .62, .72);
}
////////////////////////////////////////////////////
//
// goofy arm ambient movement
//
////////////////////////////////////////////////////
void goofyarm_move ()
{
while (1){
$goofyarm_1.startSoundShader ("co_05s_machinery_01", SND_CHANNEL_VOICE );
$goofyarm_1.rotateOnce ( '0 -35 0' );
$goofyarm_2.rotateOnce ( '0 20 0' );
$goofyarm_3.rotateOnce ( '0 15 0' );
sys.wait (2);
$goofyarm_1.startSoundShader ("co_goofy_updown", SND_CHANNEL_VOICE );
$goofyarm_1.move ( DOWN, 32 );
sys.waitFor ($goofyarm_1);
$goofyarm_1.startSoundShader ("co_05s_machinery_01", SND_CHANNEL_VOICE );
$goofyarm_1.rotateOnce ( '0 35 0' );
$goofyarm_2.rotateOnce ( '0 -20 0' );
$goofyarm_3.rotateOnce ( '0 -15 0' );
sys.waitFor ($goofyarm_1);
$goofy_light_1.startSoundShader ("al4_welding_2s", SND_CHANNEL_VOICE );
$goofy_light_1.setColor( .86, .86, 1 );
$goofy_flare_1.setColor( .86, .86, 1 );
sys.wait (2);
thread crossFadeEnt ($goofy_light_1, '.86 .86 1', '.3 .3 .5', 2);
thread crossFadeEnt ($goofy_flare_1, '.86 .86 1', '.3 .3 .5', 2);
$goofyarm_1.startSoundShader ("co_05s_machinery_01", SND_CHANNEL_VOICE );
$goofyarm_1.rotateOnce ( '0 -35 0' );
$goofyarm_2.rotateOnce ( '0 20 0' );
$goofyarm_3.rotateOnce ( '0 15 0' );
sys.wait (2);
$goofyarm_1.startSoundShader ("co_goofy_updown", SND_CHANNEL_VOICE );
$goofyarm_1.move ( UP, 32 );
sys.waitFor ($goofyarm_1);
$goofyarm_1.startSoundShader ("co_05s_machinery_01", SND_CHANNEL_VOICE );
$goofyarm_1.rotateOnce ( '0 35 0' );
$goofyarm_2.rotateOnce ( '0 -20 0' );
$goofyarm_3.rotateOnce ( '0 -15 0' );
sys.waitFor ($goofyarm_1);
$goofy_light_2.startSoundShader ("al4_welding_2s", SND_CHANNEL_VOICE );
$goofy_light_2.setColor( .86, .86, 1 );
$goofy_flare_2.setColor( .86, .86, 1 );
sys.wait (2);
thread crossFadeEnt ($goofy_light_2, '.86 .86 1', '.3 .3 .5', 2);
thread crossFadeEnt ($goofy_flare_2, '.86 .86 1', '.3 .3 .5', 2);
}
}
////////////////////////////////////////////////////
//
// grate light mover
//
////////////////////////////////////////////////////
void gratelight_move ()
{
$gratelight_mover.time ( 1 );
$gratelight_mover.accelTime ( .25 );
$gratelight_mover.decelTime ( .25 );
float ran1;
while (1) //begin main while
{
ran1=sys.random(3);
if (ran1<1){
$gratelight_mover.moveTo ($gratelightpoint_1);
sys.waitFor ($gratelight_mover);
} else if (ran1<2) {
$gratelight_mover.moveTo ($gratelightpoint_2);
sys.waitFor ($gratelight_mover);
} else {
$gratelight_mover.moveTo ($gratelightpoint_3);
sys.waitFor ($gratelight_mover);
}
} //end main while
}
////////////////////////////////////////////////////
//
// helldoor random movement
//
////////////////////////////////////////////////////
void helldoor_movement ()
{
float ran1, ran2, ran3;
$helldoor1_mover.time (.2);
$helldoor2_mover.time (.2);
//shake the scary_door in a loop - TEMP
while (1) {
ran3 = ( sys.random(2.5) + 2 );
sys.wait (ran3);
$helldoor1_mover.rotateOnce ( '0 2.5 0');
$helldoor2_mover.rotateOnce ( '0 -2 0');
sys.waitFor ($helldoor1_mover);
//trigger speaker
sys.trigger ($helldoor_speaker);
sys.trigger ($helldoor1_bang_influence);
$helldoor1_mover.rotateOnce ( '0 -2.5 0');
$helldoor2_mover.rotateOnce ( '0 2 0');
sys.waitFor ($helldoor1_mover);
ran2=sys.random(.12) + .1;
$helldoor1_mover.time (ran2);
$helldoor2_mover.time (ran2);
}
}
////////////////////////////////////////////////////
//
// stop helldoor
//
////////////////////////////////////////////////////
void stop_helldoor ()
{
sys.killthread ("map_commoutside::helldoor_movement");
sys.trigger ($func_door_14);
sys.trigger ($helldoor_splat1);
sys.trigger ($helldoor_splat2);
sys.trigger ($helldoor_splat3);
sys.trigger ($helldoor_scream);
sys.wait (2);
sys.trigger ($func_forcefield_2);
sys.trigger ($func_door_14);
}
////////////////////////////////////////////////////
//
// underlift movedown
//
////////////////////////////////////////////////////
void underlift_movedown ()
{
//move the lift to underlift_pos_mid
$underlift.time ( 3 );
$underlift.accelTime ( .5 );
$underlift.decelTime ( .25 );
$underlift.startSoundShader ("co_lift_down_3s", SND_CHANNEL_VOICE ); // SOUND
$underlift.moveTo ($underlift_pos_mid);
sys.waitFor ($underlift);
//open underlift_doors_bottom
$underlift_doors_bottom.open();
sys.waitFor ($underlift_doors_bottom);
//move the lift to underlift_pos_top
$underlift.startSoundShader ("co_lift_down_3s", SND_CHANNEL_VOICE ); // SOUND
$underlift.moveTo ($underlift_pos_bottom);
sys.waitFor ($underlift);
//close underlift_doors_bottom
$underlift_doors_bottom.close();
sys.waitFor ($underlift_doors_bottom);
}
////////////////////////////////////////////////////
//
// underlift moveup
//
////////////////////////////////////////////////////
void underlift_moveup ()
{
//open underlift_doors_bottom
$underlift_doors_bottom.open();
sys.waitFor ($underlift_doors_bottom);
//move the lift to underlift_pos_mid
$underlift.time ( 3 );
$underlift.accelTime ( .5 );
$underlift.decelTime ( .25 );
$underlift.startSoundShader ("co_lift_up_3s", SND_CHANNEL_VOICE ); // SOUND
$underlift.moveTo ($underlift_pos_mid);
sys.waitFor ($underlift);
//close underlift_doors_bottom
$underlift_doors_bottom.close();
sys.waitFor ($underlift_doors_bottom);
//open underlift_doors_top
$underlift_doors_top.open();
sys.waitFor ($underlift_doors_top);
//move the lift to underlift_pos_top
$underlift.startSoundShader ("co_lift_up_3s", SND_CHANNEL_VOICE ); // SOUND
$underlift.moveTo ($underlift_pos_top);
sys.waitFor ($underlift);
//close the underlift_doors_top
$underlift_doors_top.close();
sys.waitFor ($underlift_doors_top);
//trigger the gui button
sys.trigger ($airlock_lift_calldown_button);
}
////////////////////////////////////////////////////
//
// Open airlock door
//
////////////////////////////////////////////////////
void airlock_door_open( float airlock, float doornum )
{
entity ent;
entity entdoorr, entdoorl;
entity speaker;
string door1;
string door2;
float portalstate;
float movedist;
if ( doornum == 2 ) {
door1 = "airlock" + airlock + "_door2";
door2 = "airlock" + airlock + "_door1";
portalstate = 2;
movedist = -16;
} else {
door1 = "airlock" + airlock + "_door1";
door2 = "airlock" + airlock + "_door2";
portalstate = 1;
movedist = 16;
}
//turn door1 light on and door2 light off
ent=sys.getEntity ( door2 + "_light" );
thread crossFadeEnt (ent, '.84 .84 .9', '0.37 0.05 0.01', 1);
sys.wait(1);
ent=sys.getEntity ( door1 + "_light" );
thread crossFadeEnt (ent, '0.37 0.05 0.01', '.84 .84 .9', 1);
//move the 4 locks to unlock position
ent=sys.getEntity ( door1 + "_top_lock" );
ent.time (0.25);
ent.move ( UP, 15 );
speaker=sys.getEntity ("speaker_" + door1 + "_bottom_lock" );
sys.trigger (speaker);
ent=sys.getEntity ( door1 + "_bottom_lock" );
ent.time (0.25);
ent.move ( DOWN, 15 );
sys.waitFor (ent);
speaker=sys.getEntity ("speaker_" + door1 + "_left_lock" );
sys.trigger (speaker);
ent=sys.getEntity ( door1 + "_left_lock" );
ent.time (0.75);
ent.move ( EAST, movedist );
speaker=sys.getEntity ("speaker_" + door1 + "_right_lock" );
sys.trigger (speaker);
ent=sys.getEntity ( door1 + "_right_lock" );
ent.time (0.75);
ent.move ( EAST, movedist );
sys.waitFor (ent);
//open doors
speaker=sys.getEntity ( "speaker_" + door1 + "_open");
sys.trigger (speaker);
entdoorl=sys.getEntity ( door1 + "_left" );
entdoorl.time (1.2);
entdoorl.rotateOnce ( '0 45 0' );
entdoorr=sys.getEntity ( door1 + "_right" );
entdoorr.time (1.2);
entdoorr.rotateOnce ( '0 -45 0' );
//trigger the portal
ent=sys.getEntity (door1 + "_portal" );
sys.trigger (ent);
sys.waitFor (entdoorr);
sys.waitFor (entdoorl);
//set airlock state
ent=sys.getEntity ("airlock" + airlock + "_door1_portal" );
ent.setKey ("state", portalstate );
}
////////////////////////////////////////////////////
//
// Close airlock door
//
////////////////////////////////////////////////////
void airlock_door_close(float airlock, float doornum )
{
entity ent;
entity entdoorr, entdoorl;
entity speaker;
string door;
float movedist;
if ( doornum == 2 ) {
door = "airlock" + airlock + "_door2";
movedist = 16;
} else {
door = "airlock" + airlock + "_door1";
movedist = -16;
}
//close doors
speaker= sys.getEntity ("speaker_" + door + "_close");
sys.trigger (speaker);
entdoorl=sys.getEntity ( door + "_left" );
entdoorl.time (1.2);
entdoorl.rotateOnce ( '0 -45 0' );
entdoorr=sys.getEntity ( door + "_right" );
entdoorr.time (1.2);
entdoorr.rotateOnce ( '0 45 0' );
sys.waitFor (entdoorr);
sys.waitFor (entdoorl);
//trigger the portal
ent=sys.getEntity ( door + "_portal" );
sys.trigger (ent);
//move the 4 locks to unlock position
ent=sys.getEntity ( door + "_top_lock" );
ent.time (0.25);
ent.move ( DOWN, 15 );
speaker=sys.getEntity ("speaker_" + door + "_bottom_lock");
sys.trigger (speaker);
ent=sys.getEntity ( door + "_bottom_lock" );
ent.time (0.25);
ent.move ( UP, 15 );
speaker=sys.getEntity ("speaker_" + door + "_left_lock" );
sys.trigger (speaker);
ent=sys.getEntity ( door + "_left_lock" );
ent.time (0.75);
ent.move ( EAST, movedist );
speaker=sys.getEntity ("speaker_" + door + "_right_lock" );
sys.trigger (speaker);
ent=sys.getEntity ( door + "_right_lock" );
ent.time (0.75);
ent.move ( EAST, movedist );
sys.waitFor (ent);
}
////////////////////////////////////////////////////
//
// Main Activate airlock
// conditionally chooses based on entrance
//
////////////////////////////////////////////////////
void airlock_main_activate(float airlock)
{
entity ent;
//check to see which way the palyer entered by checking the airlock_state
//if 1 then close 1 and open 2
ent=sys.getEntity ("airlock" + airlock + "_door1_portal" );
if (ent.getFloatKey ("state")==1) {
airlock_door_close( airlock, 1 );
airlock_door_open( airlock, 2 );
} else { //else close 2 and open 1
airlock_door_close( airlock, 2 );
airlock_door_open( airlock, 1 );
}
}
////////////////////////////////////////////////////
//
// AIRLOCK main activation
//
////////////////////////////////////////////////////
void airlock2_activate()
{
//disable the guis on the doors
$airlock2_door1_gui.setGuiParm ( "gui_parm1" , 0);
$airlock2_door2_gui.setGuiParm ( "gui_parm1" , 0);
$airlock2_innerguiholder.setGuiParm ( "gui_parm11" , 0);
airlock_main_activate(2);
//check the airlock state and enable the guis on the closed door
if ($airlock2_door1_portal.getFloatKey ("state")==1) {
$airlock2_door2_gui.setGuiParm ( "gui_parm1" , 1);
} else { //else close 2 and open 1
$airlock2_door1_gui.setGuiParm ( "gui_parm1" , 1);
}
$airlock2_innerguiholder.setGuiParm ( "gui_parm11" , 1);
}
void airlock3_activate()
{
//disable the guis on the doors
$airlock3_door1_gui.setGuiParm ( "gui_parm1" , 0);
$airlock3_door2_gui.setGuiParm ( "gui_parm1" , 0);
$airlock3_innerguiholder.setGuiParm ( "gui_parm11" , 0);
airlock_main_activate(3);
//check the airlock state and enable the guis on the closed door
if ($airlock3_door1_portal.getFloatKey ("state")==1) {
$airlock3_door2_gui.setGuiParm ( "gui_parm1" , 1);
} else { //else close 2 and open 1
$airlock3_door1_gui.setGuiParm ( "gui_parm1" , 1);
}
$airlock3_innerguiholder.setGuiParm ( "gui_parm11" , 1);
}
////////////////////////////////////////////////////
//
// AIRLOCK doors opening
//
////////////////////////////////////////////////////
void airlock2_door1_open()
{
airlock_door_open(2, 1);
}
void airlock2_door2_open()
{
airlock_door_open(2, 2);
}
void airlock3_door1_open()
{
airlock_door_open(3, 1);
}
void airlock3_door2_open()
{
airlock_door_open(3, 2);
}
void airlock4_door1_open()
{
$airlock4_door1_gui.setGuiParm ( "gui_parm1" , 0);
airlock_door_open(4, 1);
}
//exits map
void airlock_exit()
{
sys.trigger ($end_level);
float thread1;
thread1 = thread airlock_door_close(4, 1);
sys.waitForThread( thread1 );
//turn doora light off
thread crossFadeEnt ($airlock4_door1_light, '.84 .84 .9', '0.37 0.05 0.01', 1);
sys.wait(1);
sys.trigger ($end_level);
}
////////////////////////////////////////////////////
//
// initial AIRLOCK doors opening
// start of map
//
////////////////////////////////////////////////////
void initial_airlock_open()
{
//turn door2 light on
thread crossFadeEnt ($airlock1_door2_light, '0.37 0.05 0.01', '.84 .84 .9', 1);
//move the 4 locks to unlock position
$airlock1_door2_top_lock.move ( UP, 15 );
$airlock1_door2_bottom_lock.move ( DOWN, 15 );
sys.trigger ($speaker_airlock1_door2_bottom_lock); // SOUND
sys.waitFor ($airlock1_door2_bottom_lock);
sys.trigger ($speaker_airlock1_door2_left_lock);
$airlock1_door2_left_lock.move ( EAST, -16 );
sys.trigger ($speaker_airlock1_door2_right_lock);
$airlock1_door2_right_lock.move ( EAST, -16 );
sys.waitFor ($airlock1_door2_right_lock);
//open doors
sys.trigger ($speaker_airlock1_door2_open); // SOUND
$airlock1_door2_left.rotateOnce ( '0 45 0' );
$airlock1_door2_right.rotateOnce ( '0 -45 0' );
//trigger the portal
sys.trigger ($airlock1_door2_portal);
sys.waitFor ($airlock1_door2_left);
sys.waitFor ($airlock1_door2_right);
}
////////////////////////////////////////////////////
//
// co_drop_floor
//
////////////////////////////////////////////////////
void co_drop_floor_down ()
{
$co_drop_floor.time(.5);
$co_drop_floor.accelTime(.5);
//$co_drop_floor.decelTime(0);
//trigger the weird sound
//sys.trigger($co_drop_floor_weird_speaker);
sys.trigger ($co_floordrop_01);
sys.trigger ($co_floordrop_02);
//move drop_floor down
$co_drop_floor.move (DOWN, 128);
}
void co_drop_floor_end ()
{
$co_drop_step_1.time(1);
$co_drop_step_1.accelTime(.2);
$co_drop_step_1.decelTime(.2);
$co_drop_step_2.time(1);
$co_drop_step_2.accelTime(.2);
$co_drop_step_2.decelTime(.2);
$co_drop_step_3.time(1);
$co_drop_step_3.accelTime(.2);
$co_drop_step_3.decelTime(.2);
//move steps out
$co_drop_step_3.startSoundShader ("co_step_out", SND_CHANNEL_VOICE );
$co_drop_step_3.move (WEST, 112);
sys.waitFor ($co_drop_step_3);
sys.wait (0.5);
$co_drop_step_2.startSoundShader ("co_step_out", SND_CHANNEL_VOICE );
$co_drop_step_2.move (WEST, 80);
sys.waitFor ($co_drop_step_2);
sys.wait (0.5);
$co_drop_step_1.startSoundShader ("co_step_out", SND_CHANNEL_VOICE );
$co_drop_step_1.move (WEST, 48);
}
////////////////////////////////////////////////////
//
// spectrum hallway
//
////////////////////////////////////////////////////
void spectrum_move() {
sys.wait (2);
while(1){
$spectrumlight_mover.time( 3 );
$spectrumlight_mover.accelTime( 0 );
$spectrumlight_mover.decelTime( 0 );
$spectrumlight_mover.startSpline( $spectrum_spline );
sys.waitFor($spectrumlight_mover);
sys.wait(3);
$spectrumlight_mover.removeInitialSplineAngles();
}
}
void spectrum_stop()
{
sys.wait (3);
sys.trigger ( $trigger_relay_55 );
sys.killthread( "map_commoutside::spectrum_move" );
$spectrumlight_mover.remove();
sys.trigger ( $speaker_136 );
sys.trigger ( $speaker_137 );
$speaker_137.remove();
$light_5229.remove();
$light_5230.remove();
}
void close_func_door_17()
{
$func_door_17.close();
}
//close sawyer door
void close_func_door_1675()
{
$func_door_1675.close();
}
////////////////////////////////////////////////////
//
// Scary Elevator Shake
//
////////////////////////////////////////////////////
void ele_shake()
{
$ele_mover.time (.25);
$ele_mover.move (DOWN, 8);
sys.waitFor ($ele_mover);
sys.trigger ( $speaker_elebang );
$ele_mover.move (UP, 8);
}
////////////////////////////////////////////////////
//
// sawyer_intro
//
////////////////////////////////////////////////////
void sawyer_intro ()
{
$sawyer_light_1.kill();
$sawyer_light_2.kill();
//sys.print ("I just killed those lights\n");
}
void cache_sounds() {
sys.cacheSoundShader ("co_step_out");
sys.cacheSoundShader ("co_lift_up_3s");
sys.cacheSoundShader ("co_lift_down_3s");
sys.cacheSoundShader ("al4_welding_2s");
sys.cacheSoundShader ("co_05s_machinery_01");
sys.cacheSoundShader ("co_goofy_updown");
sys.cacheSoundShader ("rec1_steamchuff");
sys.cacheSoundShader ("co_lift_rotation");
sys.cacheSoundShader ("co_lift_up_2s");
sys.cacheSoundShader ("co_lift_down_2s");
sys.cacheSoundShader ("co_conpanel");
}
////////////////////////////////////////////////////
//
// MAIN
//
////////////////////////////////////////////////////
void main ()
{
cache_sounds();
setup_objects ();
thread goofyarm_move ();
thread gratelight_move ();
thread helldoor_movement ();
thread lift_main ();
//open the airlock doors that need to be open initially
thread airlock3_door2_open();
thread airlock2_door2_open();
}
}// namespace
+875
View File
@@ -0,0 +1,875 @@
namespace map_commoutside {
#define CMD_LIFT_NONE 0
#define CMD_LIFT_UP 1
#define CMD_LIFT_DOWN 2
#define CMD_LIFT_FORWARD 3
#define CMD_LIFT_RIGHT 4
#define CMD_LIFT_LEFT 5
#define CMD_LIFT_BACK 6
#define CMD_LIFT_CALL1 7
#define CMD_LIFT_CALL2 8
#define CMD_LIFT_CALL3 9
#define LIFT_MOVE_SPEED 160
#define LIFT_TURN_TIME 2
#define LIFT_UPDOWN_TIME 2
// states for the lift
float lift_command;
boolean lift_plat_up;
float lift_dir;
entity lift_station;
void setup_lift();
void reset_guis();
void set_lift_location( entity position );
float calc_lift_path_r( entity current_pos, entity previous, entity target, float depth );
float get_lift_turn_dir( entity source, entity target );
entity check_lift_move_dir( entity current_pos, float dir );
void turn_lift_to_dir( float dir );
void move_lift_to( entity target );
void cmd_lift_up();
void cmd_lift_down();
void cmd_lift_forward();
void cmd_lift_right();
void cmd_lift_left();
void cmd_lift_back();
void cmd_lift_call_1();
void cmd_lift_call_2();
void cmd_lift_call_3();
void lift_loop();
void lift_up();
void lift_down();
void lift_forward();
void lift_right();
void lift_left();
void lift_back();
void lift_call_1();
void lift_call_2();
void lift_call_3();
void callspot1_panel_up();
void callspot1_panel_down();
void callspot2_panel_up();
void callspot2_panel_down();
void callspot3_panel_up();
void callspot3_panel_down();
void lift_main();
////////////////////////////////////////////////////
//
// Setup binds and times etc...
//
////////////////////////////////////////////////////
void setup_lift() {
// initial variable assignments
lift_command = CMD_LIFT_NONE;
lift_plat_up = true;
lift_station = $lift_bottom.getTarget( 0 );
if ( !lift_station ) {
sys.warning( "Entity 'lift_bottom' doesn't have a target." );
}
set_lift_location( lift_station );
lift_dir = 2;
// Lift binds, times, and speeds
$lift_leg_11.bind($lift_bottom);
$lift_light1.bind($lift_bottom);
$lift_axle1.bind($lift_leg_11);
$lift_axle2.bind($lift_leg_11);
$lift_leg_12.bind($lift_axle2);
$lift_axle4.bind($lift_leg_12);
$lift_axle6.bind($lift_leg_12);
$lift_leg_13.bind($lift_axle6);
$lift_axle7.bind($lift_leg_13);
$lift_leg_23.bind($lift_axle7);
$lift_axle5.bind($lift_leg_23);
$lift_leg_22.bind($lift_axle5);
$lift_axle3.bind($lift_leg_22);
$lift_leg_21.bind($lift_axle3);
$lift_connection_top_move.bind($lift_leg_13);
$lift_connection_top_static.bind($lift_leg_23);
$lift_connection_bottom_move.bind($lift_leg_21);
$lift_cage.bind($lift_connection_top_static);
$lift_leg_11.time( LIFT_UPDOWN_TIME );
$lift_leg_12.time( LIFT_UPDOWN_TIME );
$lift_leg_13.time( LIFT_UPDOWN_TIME );
$lift_connection_top_move.time( LIFT_UPDOWN_TIME );
$lift_leg_21.time( LIFT_UPDOWN_TIME );
$lift_connection_bottom_move.time( LIFT_UPDOWN_TIME );
$lift_leg_22.time( LIFT_UPDOWN_TIME );
$lift_leg_23.time( LIFT_UPDOWN_TIME );
$lift_connection_top_static.time( LIFT_UPDOWN_TIME );
$lift_leg_11.accelTime( .25 );
$lift_leg_12.accelTime( .25 );
$lift_leg_13.accelTime( .25 );
$lift_connection_top_move.accelTime( .25 );
$lift_leg_21.accelTime( .25 );
$lift_connection_bottom_move.accelTime( .25);
$lift_leg_22.accelTime( .25 );
$lift_leg_23.accelTime( .25 );
$lift_connection_top_static.accelTime( .25 );
$lift_leg_11.decelTime( .25 );
$lift_leg_12.decelTime( .25 );
$lift_leg_13.decelTime( .25 );
$lift_connection_top_move.decelTime( .25 );
$lift_leg_21.decelTime( .25 );
$lift_connection_bottom_move.decelTime( .25 );
$lift_leg_22.decelTime( .25 );
$lift_leg_23.decelTime( .25 );
$lift_connection_top_static.decelTime( .25 );
// Call spots panel stuff
$callspot1_conpan_gui.bind($callspot1_conpan);
$callspot1_conpan.time(.25);
$callspot1_conpan.rotateOnce( '63.43 0 0' );
$callspot1_conpan_trigger_down.disable();
$callspot2_conpan_gui.bind($callspot2_conpan);
$callspot2_conpan.time(.25);
$callspot2_conpan.rotateOnce( '0 0 -63.43' );
$callspot2_conpan_trigger_down.disable();
$callspot3_conpan_gui.bind($callspot3_conpan);
$callspot3_conpan.time(.25);
$callspot3_conpan.rotateOnce( '0 0 -63.43' );
$callspot3_conpan_trigger_down.disable();
$lift_light1_mover.rotateOnce( '90 0 0' );
}
////////////////////////////////////////////////////
//
// reset the gui's to an interactive state
//
////////////////////////////////////////////////////
void reset_guis() {
sys.trigger($callspot1_conpan);
$callspot1_conpan.setGuiParm ( "gui_parm3", 0 );
sys.trigger($callspot2_conpan);
$callspot2_conpan.setGuiParm ( "gui_parm3", 0 );
sys.trigger($callspot3_conpan);
$callspot3_conpan.setGuiParm ( "gui_parm3", 0 );
}
////////////////////////////////////////////////////
//
// keep track of the current path entity we're at and update the
// gui's on the call panels with our position.
//
////////////////////////////////////////////////////
void set_lift_location( entity position ) {
string position_name;
string position_num;
float pos;
lift_station = position;
position_name = position.getName();
if ( sys.strLeft( position_name, 10 ) != "lift_spot_" ) {
sys.warning( "Invalid lift target name '" + position_name + "'. Lift targets must be named 'lift_spot_#' (where # is a numeric value)" );
}
position_num = sys.strSkip( position_name, 10 );
pos = sys.strToFloat( position_num );
$lift_cage.setGuiParm( "gui_parm2", pos );
$callspot1_conpan.setGuiParm ( "gui_parm2", pos );
$callspot2_conpan.setGuiParm ( "gui_parm2", pos );
$callspot3_conpan.setGuiParm ( "gui_parm2", pos );
$callspot1_conpan.setGuiParm ( "gui_parm4", 0 );
$callspot2_conpan.setGuiParm ( "gui_parm4", 0 );
$callspot3_conpan.setGuiParm ( "gui_parm4", 0 );
//sys.print("position" + pos + "\n");
if ( ( pos == 13 ) && ( lift_dir == 0 ) && !lift_plat_up ) {
$callspot1_conpan.setGuiParm ( "gui_parm4", 1 );
reset_guis();
} else if ( ( pos == 31 ) && ( lift_dir == 1 ) && !lift_plat_up ) {
$callspot2_conpan.setGuiParm ( "gui_parm4", 1 );
reset_guis();
} else if ( ( pos == 83 ) && ( lift_dir == 1 ) && !lift_plat_up ) {
$callspot3_conpan.setGuiParm ( "gui_parm4", 1 );
reset_guis();
}
}
////////////////////////////////////////////////////
//
// Do a depth-first search of the "track" to find a path to the target entity.
// each path entity targets 1 or more other path entities. Each path entity it
// targets must also target it, so the links are forward and back. There must be
// no circular links and the longest possible path must never be more than the
// script stack can handle (around 62 path entities would be the limit, but possibly
// fewer). This could be modified to handle circular links, and be made non-recursive
// so it's not dependent on the stack size, and possibly with a bit of effort could find
// the shortest path if multiple paths exist, but for our purposes, this does the job.
//
////////////////////////////////////////////////////
float calc_lift_path_r( entity current_pos, entity previous, entity target, float depth ) {
float num;
float i;
entity next;
float path_length;
// have we reached the target?
if ( current_pos == target ) {
return depth;
}
// check each of the targets on this entity
num = current_pos.numTargets();
for( i = 0; i < num; i++ ) {
next = current_pos.getTarget( i );
if ( next == previous ) {
// don't go back the way we came
continue;
}
// check if a path exists through this target
path_length = calc_lift_path_r( next, current_pos, target, depth + 1 );
if ( path_length ) {
// found the target, so as we recurse backwards, set the name of the next path entity to go to.
// when we're done, going through the "path*" keys in order will give the order of entities
// to follow to get to the target.
$lift_bottom.setKey( "path" + depth, next.getName() );
return path_length;
}
}
// no path from this entity
return 0;
}
////////////////////////////////////////////////////
//
// calculate the direction to turn to the next target
//
////////////////////////////////////////////////////
float get_lift_turn_dir( entity source, entity target ) {
float dir;
vector delta;
vector ang;
delta = target.getOrigin();
delta = delta - source.getOrigin();
ang = sys.VecToAngles( delta );
dir = ( ( ang_y + 45 ) / 90 ) & 3;
return dir;
}
////////////////////////////////////////////////////
//
// movement test
//
////////////////////////////////////////////////////
entity check_lift_move_dir( entity current_pos, float dir ) {
float num;
float i;
float check_dir;
entity check_ent;
num = current_pos.numTargets();
for( i = 0; i < num; i++ ) {
check_ent = current_pos.getTarget( i );
check_dir = get_lift_turn_dir( current_pos, check_ent );
if ( check_dir == dir ) {
return check_ent;
}
}
return current_pos;
}
////////////////////////////////////////////////////
//
// rotates the lift back into position when blocked
//
////////////////////////////////////////////////////
void lift_rotate_blocked() {
vector delta;
vector dest_angles;
float rotateTime;
$lift_bottom.stopRotating();
sys.wait( 0.1 );
// rotate back
dest_angles_y = ( lift_dir & 3 ) * 90 + 180;
if ( dest_angles_y >= 180 ) {
dest_angles_y -= 360;
}
delta = anglemod180( dest_angles - $lift_bottom.getAngles() );
rotateTime = abs( delta_y / 90 )* LIFT_TURN_TIME + 0.5;
$lift_bottom.time( rotateTime );
$lift_bottom.accelTime( .5 );
$lift_bottom.decelTime( .5 );
$lift_bottom.rotateOnce( delta );
sys.waitFor( $lift_bottom );
reset_guis();
// update our location on the guis
set_lift_location( lift_station );
lift_loop();
}
////////////////////////////////////////////////////
//
// turns lift
//
////////////////////////////////////////////////////
void turn_lift_to_dir( float dir ) {
float turn_diff;
vector delta;
vector dest_angles;
float rotateTime;
turn_diff = ( dir - lift_dir ) & 3;
if ( turn_diff == 0 ) {
return;
}
dest_angles_y = ( dir & 3 ) * 90 + 180;
if ( dest_angles_y >= 180 ) {
dest_angles_y -= 360;
}
delta = anglemod180( dest_angles - $lift_bottom.getAngles() );
rotateTime = abs( delta_y / 90 )* LIFT_TURN_TIME + 0.5;
sys.onSignal( SIG_BLOCKED, $lift_bottom, "map_commoutside::lift_rotate_blocked" );
$lift_bottom.accelTime( .5 );
$lift_bottom.decelTime( .5 );
$lift_bottom.time( rotateTime );
$lift_bottom.startSoundShader ("co_lift_rotation", SND_CHANNEL_VOICE );
$lift_bottom.rotateOnce( delta );
sys.waitFor ($lift_bottom);
sys.clearSignalThread( SIG_BLOCKED, $lift_bottom );
lift_dir = dir;
// update our location on the guis
set_lift_location( lift_station );
}
////////////////////////////////////////////////////
//
// move lift to a specific spot
//
////////////////////////////////////////////////////
void move_lift_to( entity target ) {
float path_length;
float i;
float dir;
float next_dir;
string ent_name;
entity path_ent;
entity next_ent;
if ( lift_station == target ) {
// lower the platform if necessary
if ( lift_plat_up ) {
cmd_lift_down();
}
return;
}
// create a path to the target
path_length = calc_lift_path_r( lift_station, lift_station, target, 0 );
if ( !path_length ) {
string currentname = lift_station.getName();
string targetname = target.getName();
sys.warning( "entity 'lift_bottom' can't find path from '" + currentname + "' to '" + targetname + "'" );
return;
}
// lower the platform if necessary
if ( lift_plat_up ) {
cmd_lift_down();
}
// get the first point on the path
ent_name = $lift_bottom.getKey( "path0" );
next_ent = sys.getEntity( ent_name );
if ( !next_ent ) {
sys.warning( "entity 'lift_bottom' can't find path entity '" + ent_name + "' to get to '" + target.getName() + "'" );
return;
}
dir = get_lift_turn_dir( lift_station, next_ent );
// move to each point on the path
for( i = 0; i < path_length; i++ ) {
path_ent = next_ent;
// get the next path entity, unless we're at the last one
if ( i < path_length - 1 ) {
ent_name = $lift_bottom.getKey( "path" + ( i + 1 ) );
next_ent = sys.getEntity( ent_name );
if ( !next_ent ) {
sys.warning( "entity 'lift_bottom' can't find path entity '" + ent_name + "' to get to '" + target.getName() + "'" );
return;
}
}
// turn towards the new direction if it's different and accelerate
if ( dir != lift_dir ) {
turn_lift_to_dir( dir );
$lift_bottom.accelTime( .5 );
} else if ( i != 0 ) {
$lift_bottom.accelTime( 0 );
} else {
// always accelerate on the first path entity
$lift_bottom.accelTime( .5 );
}
// decelerate on the last path entity or if we have to turn
if ( i < path_length - 1 ) {
dir = get_lift_turn_dir( path_ent, next_ent );
if ( dir != lift_dir ) {
$lift_bottom.decelTime( .5 );
} else {
$lift_bottom.decelTime( 0 );
}
} else {
$lift_bottom.decelTime( .5 );
}
// move to the next path entity
sys.onSignal( SIG_BLOCKED, $lift_bottom, "map_commoutside::lift_move_blocked" );
$lift_bottom.speed( LIFT_MOVE_SPEED );
$lift_bottom.moveTo( path_ent );
sys.waitFor( $lift_bottom );
sys.clearSignalThread( SIG_BLOCKED, $lift_bottom );
// update our location on the guis
set_lift_location( path_ent );
}
}
////////////////////////////////////////////////////
//
// if blocked when trying to go up, go back down
//
////////////////////////////////////////////////////
void lift_up_blocked() {
cmd_lift_down();
lift_loop();
}
////////////////////////////////////////////////////
//
// move lift up
//
////////////////////////////////////////////////////
void cmd_lift_up() {
if ( lift_plat_up ) {
return;
}
float rotation = 0;
// set the amount of movment
// needed for the spots where the lift can't go up fully
if ( lift_station == $lift_spot_31 ) {
rotation = 25;
} else if ( lift_station == $lift_spot_32 ) {
rotation = 20;
} else if ( lift_station == $lift_spot_44 ) {
rotation = 20;
} else if ( lift_station == $lift_spot_73 ) {
rotation = 24;
}
lift_plat_up = true;
$lift_leg_11.startSoundShader ("co_lift_up_2s", SND_CHANNEL_VOICE );
$lift_leg_11.rotateUpTo ( 0, -rotation );
$lift_leg_12.rotateDownTo ( 0, 2 * rotation );
$lift_leg_13.rotateUpTo ( 0, -2 * rotation );
$lift_connection_top_move.rotateDownTo ( 0, rotation );
$lift_leg_21.rotateDownTo ( 0, 2 * rotation );
$lift_connection_bottom_move.rotateUpTo ( 0, -rotation );
$lift_leg_22.rotateUpTo ( 0, -2 * rotation );
$lift_leg_23.rotateDownTo ( 0, 2 * rotation );
$lift_connection_top_static.rotateUpTo ( 0, -rotation );
sys.onSignal( SIG_BLOCKED, $lift_bottom, "map_commoutside::lift_up_blocked" );
sys.waitFor( $lift_leg_23 );
sys.clearSignalThread( SIG_BLOCKED, $lift_bottom );
// update our location on the guis
set_lift_location( lift_station );
}
////////////////////////////////////////////////////
//
// if blocked when trying to go down, go back up
//
////////////////////////////////////////////////////
void lift_down_blocked() {
cmd_lift_up();
reset_guis();
lift_loop();
}
////////////////////////////////////////////////////
//
// move lift down
//
////////////////////////////////////////////////////
void cmd_lift_down() {
if ( !lift_plat_up ) {
return;
}
$lift_cage_control.disable();
lift_plat_up = false;
$lift_leg_11.startSoundShader ("co_lift_down_2s", SND_CHANNEL_VOICE );
$lift_leg_11.rotateDownTo ( 0, 320 );
$lift_leg_12.rotateUpTo ( 0, 80 );
$lift_leg_13.rotateDownTo ( 0, 280 );
$lift_connection_top_move.rotateUpTo ( 0, 40 );
$lift_leg_21.rotateUpTo ( 0, 80 );
$lift_connection_bottom_move.rotateDownTo ( 0, 320 );
$lift_leg_22.rotateDownTo ( 0, 280 );
$lift_leg_23.rotateUpTo ( 0, 80 );
$lift_connection_top_static.rotateDownTo ( 0, 320 );
sys.onSignal( SIG_BLOCKED, $lift_bottom, "map_commoutside::lift_down_blocked" );
sys.waitFor ($lift_leg_23);
sys.clearSignalThread( SIG_BLOCKED, $lift_bottom );
$lift_cage_control.enable();
// update our location on the guis
set_lift_location( lift_station );
}
////////////////////////////////////////////////////
//
// moves the lift back into position when blocked
//
////////////////////////////////////////////////////
void lift_move_blocked() {
$lift_bottom.stopMoving();
$lift_bottom.startSound( "snd_decel", SND_CHANNEL_BODY2, false );
sys.wait( 0.1 );
// move back
$lift_bottom.accelTime( .5 );
$lift_bottom.decelTime( .5 );
$lift_bottom.speed( LIFT_MOVE_SPEED );
$lift_bottom.moveTo( lift_station );
sys.waitFor( $lift_bottom );
$lift_cage_control.enable();
reset_guis();
// update our location on the guis
set_lift_location( lift_station );
lift_loop();
}
////////////////////////////////////////////////////
//
// move lift forward
//
////////////////////////////////////////////////////
void cmd_lift_forward() {
entity path_ent;
path_ent = check_lift_move_dir( lift_station, lift_dir );
if ( path_ent == lift_station ) {
return;
}
if ( lift_plat_up ) {
cmd_lift_down();
}
$lift_cage_control.disable();
sys.onSignal( SIG_BLOCKED, $lift_bottom, "map_commoutside::lift_move_blocked" );
$lift_bottom.accelTime( .5 );
$lift_bottom.decelTime( .5 );
$lift_bottom.speed( LIFT_MOVE_SPEED );
$lift_bottom.moveTo( path_ent );
sys.waitFor( $lift_bottom );
sys.clearSignalThread( SIG_BLOCKED, $lift_bottom );
set_lift_location( path_ent );
$lift_cage_control.enable();
}
////////////////////////////////////////////////////
//
// move lift back
//
////////////////////////////////////////////////////
void cmd_lift_back() {
entity path_ent;
path_ent = check_lift_move_dir( lift_station, ( lift_dir + 2 ) & 3 );
if ( path_ent == lift_station ) {
return;
}
if ( lift_plat_up ) {
cmd_lift_down();
}
$lift_cage_control.disable();
sys.onSignal( SIG_BLOCKED, $lift_bottom, "map_commoutside::lift_move_blocked" );
$lift_bottom.accelTime( .5 );
$lift_bottom.decelTime( .5 );
$lift_bottom.speed( LIFT_MOVE_SPEED );
$lift_bottom.moveTo( path_ent );
sys.waitFor( $lift_bottom );
set_lift_location( path_ent );
$lift_cage_control.enable();
}
////////////////////////////////////////////////////
//
// move lift right
//
////////////////////////////////////////////////////
void cmd_lift_right() {
turn_lift_to_dir( ( lift_dir - 1 ) & 3 );
}
////////////////////////////////////////////////////
//
// move lift left
//
////////////////////////////////////////////////////
void cmd_lift_left() {
turn_lift_to_dir( ( lift_dir + 1 ) & 3 );
}
////////////////////////////////////////////////////
//
// call lift to call spot #1
// From anywhere in the grid the lift will find
// it's way to call spot #1
//
////////////////////////////////////////////////////
void cmd_lift_call_1() {
move_lift_to( $lift_spot_13 );
turn_lift_to_dir( 0 );
}
////////////////////////////////////////////////////
//
// call lift to call spot #2
// From anywhere in the grid the lift will find
// it's way to call spot #2
//
////////////////////////////////////////////////////
void cmd_lift_call_2() {
move_lift_to( $lift_spot_31 );
turn_lift_to_dir( 1 );
}
////////////////////////////////////////////////////
//
// call lift to call spot #3
// From anywhere in the grid the lift will find
// it's way to call spot #3
//
////////////////////////////////////////////////////
void cmd_lift_call_3() {
move_lift_to( $lift_spot_83 );
turn_lift_to_dir( 1 );
}
////////////////////////////////////////////////////
//
// command processing loop
//
////////////////////////////////////////////////////
void lift_loop() {
while( 1 ) {
lift_command = CMD_LIFT_NONE;
while( lift_command == CMD_LIFT_NONE ) {
sys.waitFrame();
}
if ( lift_command == CMD_LIFT_UP ) {
cmd_lift_up();
} else if ( lift_command == CMD_LIFT_DOWN ) {
cmd_lift_down();
} else if ( lift_command == CMD_LIFT_FORWARD ) {
cmd_lift_forward();
} else if ( lift_command == CMD_LIFT_RIGHT ) {
cmd_lift_right();
} else if ( lift_command == CMD_LIFT_LEFT ) {
cmd_lift_left();
} else if ( lift_command == CMD_LIFT_BACK ) {
cmd_lift_back();
} else if ( lift_command == CMD_LIFT_CALL1 ) {
cmd_lift_call_1();
} else if ( lift_command == CMD_LIFT_CALL2 ) {
cmd_lift_call_2();
} else if ( lift_command == CMD_LIFT_CALL3 ) {
cmd_lift_call_3();
}
}
}
////////////////////////////////////////////////////
//
// Gui call back functions
//
////////////////////////////////////////////////////
void lift_up() {
lift_command = CMD_LIFT_UP;
}
void lift_down() {
lift_command = CMD_LIFT_DOWN;
}
void lift_forward() {
lift_command = CMD_LIFT_FORWARD;
}
void lift_right() {
lift_command = CMD_LIFT_RIGHT;
}
void lift_left() {
lift_command = CMD_LIFT_LEFT;
}
void lift_back() {
lift_command = CMD_LIFT_BACK;
}
void lift_call_1() {
lift_command = CMD_LIFT_CALL1;
}
void lift_call_2() {
lift_command = CMD_LIFT_CALL2;
}
void lift_call_3() {
lift_command = CMD_LIFT_CALL3;
}
////////////////////////////////////////////////////
//
// raise panel for call spot #1
//
////////////////////////////////////////////////////
void callspot1_panel_up() {
$callspot1_conpan.startSoundShader ("co_conpanel", SND_CHANNEL_VOICE );
$callspot1_conpan.rotateOnce( '-63.43 0 0' );
$callspot1_conpan_trigger_up.disable();
sys.waitFor( $callspot1_conpan );
$callspot1_conpan_trigger_down.enable();
}
////////////////////////////////////////////////////
//
// raise panel for call spot #1
//
////////////////////////////////////////////////////
void callspot1_panel_down() {
$callspot1_conpan.startSoundShader ("co_conpanel", SND_CHANNEL_VOICE );
$callspot1_conpan.rotateOnce( '63.43 0 0' );
$callspot1_conpan_trigger_down.disable();
sys.waitFor( $callspot1_conpan );
$callspot1_conpan_trigger_up.enable();
}
////////////////////////////////////////////////////
//
// raise panel for call spot #2
//
////////////////////////////////////////////////////
void callspot2_panel_up() {
$callspot2_conpan.startSoundShader ("co_conpanel", SND_CHANNEL_VOICE );
$callspot2_conpan.rotateOnce( '0 0 63.43' );
$callspot2_conpan_trigger_up.disable();
sys.waitFor( $callspot2_conpan );
$callspot2_conpan_trigger_down.enable();
}
////////////////////////////////////////////////////
//
// raise panel for call spot #2
//
////////////////////////////////////////////////////
void callspot2_panel_down() {
$callspot2_conpan.startSoundShader ("co_conpanel", SND_CHANNEL_VOICE );
$callspot2_conpan.rotateOnce( '0 0 -63.43' );
$callspot2_conpan_trigger_down.disable();
sys.waitFor( $callspot2_conpan );
$callspot2_conpan_trigger_up.enable();
}
////////////////////////////////////////////////////
//
// raise panel for call spot #3
//
////////////////////////////////////////////////////
void callspot3_panel_up() {
$callspot3_conpan.startSoundShader ("co_conpanel", SND_CHANNEL_VOICE );
$callspot3_conpan.rotateOnce( '0 0 63.43' );
$callspot3_conpan_trigger_up.disable();
sys.waitFor( $callspot3_conpan );
$callspot3_conpan_trigger_down.enable();
}
////////////////////////////////////////////////////
//
// raise panel for call spot #3
//
////////////////////////////////////////////////////
void callspot3_panel_down() {
$callspot3_conpan.startSoundShader ("co_conpanel", SND_CHANNEL_VOICE );
$callspot3_conpan.rotateOnce( '0 0 -63.43' );
$callspot3_conpan_trigger_down.disable();
sys.waitFor( $callspot3_conpan );
$callspot3_conpan_trigger_up.enable();
}
////////////////////////////////////////////////////
//
// MAIN
//
////////////////////////////////////////////////////
void lift_main() {
setup_lift();
// turn lift to the left so it can illuminate the 2nd call station area
cmd_lift_left();
lift_loop();
}
} // namespace
+307
View File
@@ -0,0 +1,307 @@
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();
}
}
+593
View File
@@ -0,0 +1,593 @@
namespace map_cpuboss {
#define PUMP_DISTANCE 90
#define EXTEND_MID 64
#define EXTEND_NUT 64
#define FLOOR_SPEED 2 // Seconds
float bridge_down = 0;
float bridge_dir = 0;
float bridge_moving = 0;
float PLAYMUSIC = TRUE;
float monsterstatus = 1;
float started_music = 0;
float bridge_rot_time = 6; // How long will it take the bridge to rotate to it's place ?
float stop_pumps = FALSE;
float stop_floors = FALSE;
float stop_lights = FALSE;
float mach1_loc = 2; // Which rung is it on ? starts in middle rung
// 1 == bottom, 2 == middle, 3== top
float mach1_loc_last = 0; // Where were we last ?
void mover_startsound3 (entity ent) {
ent.startSoundShader ("cpu_m3_start", SND_CHANNEL_VOICE);
sys.wait (1);
ent.startSoundShader ("cpu_m3_loop", SND_CHANNEL_VOICE2);
}
void mover_stopsound3 (entity ent) {
ent.startSoundShader ("cpu_m3_stop", SND_CHANNEL_VOICE2);
}
void mover_startsound4 (entity ent) {
ent.startSoundShader ("cpu_m4_start", SND_CHANNEL_VOICE);
sys.wait (1);
ent.startSoundShader ("cpu_m4_loop", SND_CHANNEL_VOICE2);
}
void mover_stopsound4 (entity ent) {
ent.startSoundShader ("cpu_m4_stop", SND_CHANNEL_VOICE2);
}
//Sab room -open and close the pillar shields
void cpillar1_open()
{
$cpillar1_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar1_shield1.moveTo ($cpillar1_shield_s1);
$cpillar1_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar1_shield2.moveTo ($cpillar1_shield_s2);
}
void cpillar2_open()
{
$cpillar2_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar2_shield1.moveTo ($cpillar2_shield_s1);
$cpillar2_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar2_shield2.moveTo ($cpillar2_shield_s2);
}
void cpillar3_open()
{
$cpillar3_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar3_shield1.moveTo ($cpillar3_shield_s1);
$cpillar3_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar3_shield2.moveTo ($cpillar3_shield_s2);
}
void cpillar4_open()
{
$cpillar4_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar4_shield1.moveTo ($cpillar4_shield_s1);
$cpillar4_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar4_shield2.moveTo ($cpillar4_shield_s2);
}
void cpillar1_close()
{
$cpillar1_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar1_shield1.moveTo ($cpillar1_shield_s0);
$cpillar1_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar1_shield2.moveTo ($cpillar1_shield_s0);
}
void cpillar2_close()
{
$cpillar2_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar2_shield1.moveTo ($cpillar2_shield_s0);
$cpillar2_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar2_shield2.moveTo ($cpillar2_shield_s0);
}
void cpillar3_close()
{
$cpillar3_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar3_shield1.moveTo ($cpillar3_shield_s0);
$cpillar3_shield2.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar3_shield2.moveTo ($cpillar3_shield_s0);
}
void cpillar4_close()
{
$cpillar4_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar4_shield1.moveTo ($cpillar4_shield_s0);
$cpillar4_shield1.startSoundShader ("cpu_shields", SND_CHANNEL_VOICE2 );
$cpillar4_shield2.moveTo ($cpillar4_shield_s0);
}
//
// ---
// Init base-state of world entities here
// ---
void init_world() {
// Sabaoth room electrical pillar shield times
$cpillar1_shield1.accelTime (.2);
$cpillar1_shield2.accelTime (.2);
$cpillar2_shield1.accelTime (.2);
$cpillar2_shield2.accelTime (.2);
$cpillar3_shield1.accelTime (.2);
$cpillar3_shield2.accelTime (.2);
$cpillar4_shield1.accelTime (.2);
$cpillar4_shield2.accelTime (.2);
$cpillar1_shield1.time (.5);
$cpillar1_shield2.time (.5);
$cpillar2_shield1.time (.5);
$cpillar2_shield2.time (.5);
$cpillar3_shield1.time (.5);
$cpillar3_shield2.time (.5);
$cpillar4_shield1.time (.5);
$cpillar4_shield2.time (.5);
// old boss room
$tooth_1.sway (8, 0.2, '0 5 -4');
$tooth_2.sway (7, 0.4, '0 -4 4');
$tooth_3.sway (8, 0.6, '0 6 2');
$tooth_4.sway (6, 0.32, '0 5 3');
$tooth_5.sway (7, 0.9, '0 -3 2');
$tooth_6.sway (7, 0.78, '0 2 5');
$tooth_7.sway (5, 0.5, '0 4 -5');
$tooth_8.sway (6, 0.6, '0 3 -2');
$bm_arm1_anchor.time (3);
$bm_arm1_anchor.accelTime (0.5);
$bm_arm1_anchor.decelTime (1.5);
$bm_mach1_wheel1_anchor.bind ($bm_mach1_support);
$bm_mach1_wheel2_anchor.bind ($bm_mach1_support);
$bm_mach1_wheel3_anchor.bind ($bm_mach1_support);
$bm_mach1_wheel4_anchor.bind ($bm_mach1_support);
$mach1_support_anchor.time (3);
float i;
entity ent, ent2, ent3;
$pentagram.rotate ('0 20 0');
for (i=1; i<=4; i++) {
// Top pumps
ent = sys.getEntity ("bm_pump" + i + "a");
ent.time (5);
ent.accelTime (0.75);
ent.decelTime (1.5);
ent = sys.getEntity ("bm_pump" + i + "a_anchor");
ent.time (5);
ent.accelTime (0.75);
ent.decelTime (1.5);
// Bottom pump
ent = sys.getEntity ("bm_pump" + i + "b");
ent.time (5);
ent.accelTime (0.75);
ent.decelTime (1.5);
ent = sys.getEntity ("bm_pump" + i + "b_anchor");
ent.time (5);
ent.accelTime (0.75);
ent.decelTime (1.5);
}
// bind sector 1
for ( i = 1; i <= 3; i++ ) {
ent=sys.getEntity ("s1_" + i);
ent2=sys.getEntity ("s1_" + i + "_anchor");
ent.time (FLOOR_SPEED);
ent2.time (FLOOR_SPEED);
ent.bind (ent2);
ent2.bind ($sector_1);
}
// bind sector 2
for ( i = 1; i <= 3; i++ ) {
ent=sys.getEntity ("s2_" + i);
ent2=sys.getEntity ("s2_" + i + "_anchor");
ent.time (FLOOR_SPEED);
ent2.time (FLOOR_SPEED);
ent.bind (ent2);
ent2.bind ($sector_2);
}
// bind sector 3
for ( i = 1; i <= 9; i++ ) {
ent=sys.getEntity ("s3_" + i);
ent2=sys.getEntity ("s3_" + i + "_anchor");
ent.time (FLOOR_SPEED);
ent2.time (FLOOR_SPEED);
ent.bind (ent2);
ent2.bind ($sector_3);
}
$bm_arm1_bolt.time (2);
$bm_arm1_bolt.accelTime (0.25);
$bm_arm1_bolt.decelTime (0.75);
$bm_arm1_mid.move (RIGHT, 40);
$bm_arm1_nut.move (RIGHT, 40);
sys.wait (1);
}
// ---
// Init base position for the central bridge
// ---
void init_bridge() {
$bridge_support.time (6);
$bridge_support.accelTime (0.75);
$bridge_support.decelTime (1);
$cpubridge_anchor.time (6);
$cpubridge_anchor.accelTime (2);
$cpubridge_anchor.decelTime (3);
$bridge_ramp_right.time (2);
$bridge_ramp_left.time (2);
$bridge_arm_anchor.time (2);
$bridge_base.bind ($bridge_support);
$bridge_arm_anchor.bind ($bridge_base);
$bridge_rail_right.bind ($bridge_ramp_right);
$bridge_rail_left.bind ($bridge_ramp_left);
$bridge_ramp_right.bind ($bridge_arm_anchor);
$bridge_ramp_left.bind ($bridge_arm_anchor);
$bridge_gui.bind ($bridge_arm_anchor);
$bridge_ramp_right.time (1);
$bridge_ramp_left.time (1);
$bridge_ramp_right.rotateOnce ('0 0 -90');
$bridge_ramp_left.rotateOnce ('0 0 90');
$bridge_arm_anchor.rotateOnce ('-90 0 0');
$bridge_support.move (UP, 1024);
}
void test_bridge() {
float i;
if (bridge_down == 0) {
sys.trigger ($bridge_vo_1);
// Sound of bridge coming down
$speaker_bridge_1.startSoundShader ("cpu_bridge_down_6s", SND_CHANNEL_BODY );
$bridge_support.move (DOWN, 1024);
$bridge_support.rotateOnce ('0 -450 0');
sys.waitFor ($bridge_support);
$bridge_arm_anchor.time (5);
// Sound of Arm rotating down
$speaker_bridge_3.startSoundShader ("cpu_arm_down_5s", SND_CHANNEL_ITEM );
$bridge_arm_anchor.rotateOnce ('90 0 0'); // Down
sys.waitFor ($bridge_arm_anchor);
$bridge_arm_anchor.time (2);
// Bounce the bridge as it comes down
$bridge_arm_anchor.time (0.3);
$bridge_arm_anchor.rotateOnce ('-2 0 0'); // Up
sys.waitFor ($bridge_arm_anchor);
$bridge_arm_anchor.time (0.2);
$bridge_arm_anchor.rotateOnce ('2 0 0'); // Down
sys.waitFor ($bridge_arm_anchor);
$bridge_ramp_right.startSoundShader ("cpu_bridge_rails", SND_CHANNEL_VOICE );
$bridge_ramp_right.rotateOnce ('0 0 90');
$bridge_ramp_left.startSoundShader ("cpu_bridge_rails", SND_CHANNEL_VOICE );
$bridge_ramp_left.rotateOnce ('0 0 -90');
sys.waitFor ($bridge_ramp_left);
// $bridge_support.rotateOnce ('0 -90 0');
//$bridge_ramp_right.rotateOnce ('-90 0 0');
//$bridge_ramp_left.rotateOnce ('90 0 0');
bridge_down = 1;
bridge_dir = 3;
}
}
vector bridge_getRotationAngles (float target_dir)
{
vector vec;
if ( (bridge_dir != 1) && (target_dir == 1) ) {
$cpubridge_anchor.move (DOWN, 256);
}
else if ( (bridge_dir == 1) && (target_dir != 1) ) {
$cpubridge_anchor.move (UP, 256);
}
//else {
// sys.print ("not moving up or down\n");
//}
if ( (bridge_dir - target_dir) == -3 )
return '0 90 0';
if ( (bridge_dir - target_dir) == 3 )
return '0 -90 0';
vec_x = 0;
vec_z = 0;
vec_y = (bridge_dir - target_dir) * 90;
if ( ( vec_y == 90 ) || ( vec_y == -90 ) ) {
$bridge_support.time (6);
$cpubridge_anchor.time (6);
bridge_rot_time = 6;
}
if ( ( vec_y == 180 ) || (vec_y == -180) ) {
$bridge_support.time (10);
$cpubridge_anchor.time (10);
bridge_rot_time = 10;
}
if ( ( vec_y == 270 ) || (vec_y == -270) ) {
$bridge_support.time (10);
$cpubridge_anchor.time (10);
bridge_rot_time = 10;
}
return vec;
}
void bridge_rotation_sound() {
if (bridge_rot_time == 6) {
$speaker_bridge_2.startSoundShader ("bridge_rotation_6s", SND_CHANNEL_BODY );
return;
}
else {
$speaker_bridge_2.startSoundShader ("bridge_rotation_10s", SND_CHANNEL_BODY );
return;
}
}
void bridge_rotate_south()
{
vector vec;
if ( bridge_dir == 3 )
return; // Bridge is already at this location
if (bridge_moving == 0) {
bridge_moving = 1;
$bridge_gui.disable();
if (bridge_down == 0)
test_bridge();
else
{
vec = bridge_getRotationAngles (3);
thread bridge_rotation_sound();
$bridge_support.rotateOnce (vec);
sys.waitFor ($bridge_support);
bridge_dir = 3;
}
$bridge_gui.enable();
bridge_moving = 0;
}
}
void bridge_rotate_east()
{
vector vec;
if (bridge_dir == 2)
return; // Bridge is already at this location
if (bridge_moving == 0) {
bridge_moving = 1;
$bridge_gui.disable();
vec = bridge_getRotationAngles (2);
thread bridge_rotation_sound();
sys.print ("rot time ==" + bridge_rot_time + "\n");
$bridge_support.rotateOnce (vec);
sys.waitFor ($bridge_support);
bridge_dir = 2;
$bridge_gui.enable();
bridge_moving = 0;
}
}
void bridge_rotate_west()
{
vector vec;
if (bridge_dir == 4)
return; // Bridge is already at this location
if (bridge_moving == 0) {
bridge_moving = 1;
$bridge_gui.disable();
vec = bridge_getRotationAngles (4);
thread bridge_rotation_sound();
sys.print ("rot time ==" + bridge_rot_time + "\n");
$bridge_support.rotateOnce (vec);
sys.waitFor ($bridge_support);
bridge_dir = 4;
$bridge_gui.enable();
bridge_moving = 0;
}
}
void bridge_rotate_north()
{
vector vec;
if (bridge_dir == 1)
return; // Bridge is already at this location
if (bridge_moving == 0) {
bridge_moving = 1;
$bridge_gui.disable();
vec = bridge_getRotationAngles (1);
thread bridge_rotation_sound();
sys.trigger ($trigger_objectivecomplete);
sys.print ("rot time ==" + bridge_rot_time + "\n");
$bridge_support.rotateOnce (vec);
sys.waitFor ($bridge_support);
bridge_dir = 1;
$bridge_gui.enable();
bridge_moving = 0;
}
}
void init_running_lights() {
entity l1, l2, l3, l4;
float i;
for ( i=1; i<=13; i++ ) {
l1 = sys.getEntity ("rrun_" + i);
l2 = sys.getEntity ("lrun_" + i);
l3 = sys.getEntity ("trrun_" + i);
l4 = sys.getEntity ("tlrun_" + i);
l1.Off();
l2.Off();
l3.Off();
l4.Off();
}
}
void running_lights() {
entity l1, l2, l3, l4;
float i;
for ( i=1; i<=13; i++ ) {
l1 = sys.getEntity ("rrun_" + i);
l2 = sys.getEntity ("lrun_" + i);
l3 = sys.getEntity ("trrun_" + i);
l4 = sys.getEntity ("tlrun_" + i);
l1.On();
l1.startSoundShader ("cpu_light_sounds", SND_CHANNEL_VOICE );
l2.On();
l2.startSoundShader ("cpu_light_sounds", SND_CHANNEL_VOICE );
l3.On();
l3.startSoundShader ("cpu_light_sounds", SND_CHANNEL_VOICE );
l4.On();
l4.startSoundShader ("cpu_light_sounds", SND_CHANNEL_VOICE );
sys.wait (0.15);
l1.Off();
l2.Off();
l3.Off();
l4.Off();
sys.wait (0.15);
}
}
void running_lights_thread() {
while (1) {
thread running_lights();
sys.wait (2);
}
}
void cache_sounds() {
sys.cacheSoundShader ("cpu_bridge_down_6s");
sys.cacheSoundShader ("cpu_arm_down_5s");
sys.cacheSoundShader ("cpu_bridge_rails");
sys.cacheSoundShader ("bridge_rotation_6s");
sys.cacheSoundShader ("bridge_rotation_10s");
sys.cacheSoundShader ("cpu_light_sounds");
sys.cacheSoundShader ("cpu_shields");
sys.cacheSoundShader ("cpu_m3_start");
sys.cacheSoundShader ("cpu_m3_stop");
sys.cacheSoundShader ("cpu_m3_loop");
sys.cacheSoundShader ("cpu_m4_start");
sys.cacheSoundShader ("cpu_m4_stop");
sys.cacheSoundShader ("cpu_m4_loop");
}
void fadeout_endroom() {
$cspeaker_1.remove();
$cspeaker_2.remove();
$cspeaker_3.remove();
$cspeaker_4.remove();
$trigger_multiple_1.remove();
$trigger_multiple_2.remove();
$trigger_multiple_3.remove();
$trigger_multiple_4.remove();
$ctrigger_hurt_1.remove();
$ctrigger_hurt_2.remove();
$ctrigger_hurt_3.remove();
$ctrigger_hurt_4.remove();
//$cspeaker_1.fadeSound ( SND_CHANNEL_ANY, -60, 1 );
//$cspeaker_2.fadeSound ( SND_CHANNEL_ANY, -60, 1 );
//$cspeaker_3.fadeSound ( SND_CHANNEL_ANY, -60, 1 );
//$cspeaker_4.fadeSound ( SND_CHANNEL_ANY, -60, 1 );
}
void main()
{
cache_sounds();
init_world();
// Exec all other required threads here
// thread move_pumps();
// thread move_arm1();
init_bridge();
init_running_lights();
thread running_lights_thread();
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+785
View File
@@ -0,0 +1,785 @@
namespace map_delta2b
{
float container2_position = 0;
void monster_container2_run( entity container2 );
void monster_conveyor_run( entity container );
//******************
// Telepad Rotating Doors
//******************
void teleporter_exit_open()
{
$round_door_left.time( 1.5 );
$round_door_left.accelTime( .1 );
$round_door_left.decelTime( 1 );
$round_door_right.time( 1.5 );
$round_door_right.accelTime( .1 );
$round_door_right.decelTime( 1 );
sys.trigger ($rot_left_door);
$round_door_left.rotateOnce( '0 90 0' );
sys.trigger ($rot_right_door);
$round_door_right.rotateOnce( '0 -90 0' );
sys.waitFor( $round_door_left );
}
void start_conveyor_loop()
{
sys.trigger ($container_speaker_start);
sys.wait (1.8);
sys.trigger ($container_speaker_loop);
}
void start_conveyor_loop2()
{
sys.trigger ($container2_speaker_start);
sys.wait (1.8);
sys.trigger ($container2_speaker_loop);
}
void stop_conveyor_loop()
{
sys.trigger ($container_speaker_stop);
sys.trigger ($container_speaker_loop);
}
void stop_conveyor_loop2()
{
sys.trigger ($container2_speaker_stop);
sys.trigger ($container2_speaker_loop);
}
//************************************
// Monster Conveyor System
//************************************
/* void turn_beam_on_off()
{
sys.trigger( $top_flare_fx);
sys.trigger( $bottom_flare_fx);
sys.trigger( $top_beam_fxr );
sys.trigger( $top_beam_fxl );
sys.trigger( $bottom_beam_fxr );
sys.trigger( $bottom_beam_fxl );
sys.trigger( $beam_kill_trigger );
}
void start_beam()
{
while ( 1 )
{
$top_beam_mover.move( DOWN, 92 );
$bottom_beam_mover.move ( UP, 92 );
sys.waitFor ($bottom_beam_mover);
$top_beam_mover.move( UP, 92 );
$bottom_beam_mover.move ( DOWN, 92 );
sys.waitFor ($bottom_beam_mover);
}
}
*/
void monster_container2_run( entity container2 )
{
$container_clamp2.bind( $container2_clamphandle1 );
$container2_clamphandle1.moveTo( $clamp_position_start );
sys.waitFor( $container2_clamphandle1);
$container_clamp2.unbind();
$container_clamp2.bind($container_clamphandle1);
$container2_clamphandle1.restorePosition();
$monster_container2_contactpoint.move( UP, 164 );
sys.waitFor( $monster_container2_contactpoint );
//container2_position = 1;
$container_clamphandle1.speed( 65 );
$container_clamphandle2.speed( 65 );
$container_clamphandle3.speed( 65 );
$container_clamphandle_middle.speed( 65 );
//small door operate open
sys.trigger ($smalldoor_open);
$monster_machinedoorsmall_left.move( WEST, 32 );
$monster_machinedoorsmall_right.move( EAST, 32 );
sys.waitFor( $monster_machinedoorsmall_right );
//move container2 clamp into position while container moves up
$container_clamphandle1.moveTo( $clamp_position_stop1 );
//move container up and arms down for pickup
container2.move( UP, 52 );
sys.trigger ($speaker_liftarms1_down); // SOUND
$monster_container_liftarms1.move( DOWN, 152 );
sys.waitFor( $monster_container_liftarms1 );
sys.wait( .5 );
//bind container to liftarms and move up
container2.bind( $monster_container_liftarms1 );
sys.trigger ($speaker_liftarms1_up); // SOUND
$monster_container_liftarms1.move( UP, 120 );
sys.waitFor( $container_clamphandle1 );
sys.waitFor( $monster_container_liftarms1 );
//small door operate close
sys.trigger ($smalldoor_close);
$monster_machinedoorsmall_left.move( EAST, 32 );
$monster_machinedoorsmall_right.move( WEST, 32 );
//bind container to the clamp
sys.wait( 1 ); //temp wait for clamp to engage
container2.bind( $container_clamp2 );
sys.trigger ($speaker_liftarms1_up); // SOUND
$monster_container_liftarms1.move( UP, 32 );
sys.waitFor( $monster_container_liftarms1 );
//move container along path
thread start_conveyor_loop2(); // SOUND
$container_clamphandle1.moveTo( $clamp_position_rotateright1 );
sys.waitFor( $container_clamphandle1 );
$container_clamphandle1.time( 2.5 );//set to time var for corner
$container_clamphandle1.rotateOnce( '0 -90 0' );
sys.waitFor( $container_clamphandle1 );
$container_clamp2.unbind();
$container_clamp2.bind( $container_clamphandle2 );
$container_clamphandle1.restorePosition();//reset handle1 to starting position
$container_clamphandle2.speed( 65 );//reset to speed var
$container_clamphandle2.moveTo( $clamp_position_rotateleft1 );
sys.waitFor( $container_clamphandle2 );
$container_clamphandle2.time( 2.5 );
$container_clamphandle2.rotateOnce( '0 90 0' );
sys.waitFor( $container_clamphandle2 );
$container_clamphandle2.speed( 65 );//reset to speed var
$container_clamphandle2.moveTo( $clamp_position_rotateleft2 );
sys.waitFor( $container_clamphandle2 );
$container_clamphandle2.time( 2.5 );
$container_clamphandle2.rotateOnce( '0 90 0' );
sys.waitFor( $container_clamphandle2 );
$container_clamphandle2.speed( 65 );//reset to speed var
$container_clamphandle2.moveTo( $clamp_position_stop2 );
sys.waitFor( $container_clamphandle2 );
thread stop_conveyor_loop2(); // SOUND
sys.trigger ($speaker_machinedoor1);
$monster_machinedoor1_left.rotateOnce( '0 90 0' );
$monster_machinedoor1_right.rotateOnce( '0 -90 0' );
sys.waitFor( $monster_machinedoor1_left );
sys.wait( 1 );//container wait to move into position
thread start_conveyor_loop2(); // SOUND
$container_clamphandle2.moveTo( $clamp_position_stop3 );
sys.waitFor( $container_clamphandle2 );
$container_clamp2.unbind();
$container_clamp2.bind( $container_clamphandle_middle );
$container_clamphandle2.restorePosition();//reset handle2 to starting position
thread stop_conveyor_loop2(); // SOUND
sys.trigger ($speaker_machinedoor1);
$monster_machinedoor1_left.rotateOnce( '0 -90 0' );
$monster_machinedoor1_right.rotateOnce( '0 90 0' );
sys.waitFor( $monster_machinedoor1_left );
//fade container 2 lights OUT, red lights IN
thread crossFadeEnt ($container2_light1, '0.756863 0.976471 1', '0 0 0', 1.0);
thread crossFadeEnt ($container2_light2, '0.756863 0.976471 1', '0 0 0', 1.0);
thread crossFadeEnt ($chamber_redlight1, '0 0 0', '1 0 0', 1.0);
thread crossFadeEnt ($chamber_redlight2, '0 0 0', '1 0 0', 1.0);
sys.trigger ($chamber_fx1);
sys.trigger ($chamber_fx2);
sys.trigger ($chamber_fx_sound);
sys.wait( 4 );//container wait inside chamber
sys.trigger ($chamber_fx1);
sys.trigger ($chamber_fx2);
//fade container 2 lights IN, red lights OUT
thread crossFadeEnt ($container2_light1, '0 0 0', '0.756863 0.976471 1', 1.0);
thread crossFadeEnt ($container2_light2, '0 0 0', '0.756863 0.976471 1', 1.0);
thread crossFadeEnt ($chamber_redlight1, '1 0 0', '0 0 0', 1.0);
thread crossFadeEnt ($chamber_redlight2, '1 0 0', '0 0 0', 1.0);
thread monster_conveyor_run( $monster_container1_contactpoint );
thread start_conveyor_loop2(); // SOUND
$container_clamphandle_middle.moveTo( $clamp_position_stop4 );
sys.waitFor( $container_clamphandle_middle );
thread stop_conveyor_loop2(); // SOUND
sys.trigger ($speaker_machinedoor2);
$monster_machinedoor2_left.rotateOnce( '0 90 0' );
$monster_machinedoor2_right.rotateOnce( '0 -90 0' );
sys.waitFor( $monster_machinedoor2_left );
sys.wait( 1 );//container wait outside chamber
thread start_conveyor_loop2(); // SOUND
$container_clamphandle_middle.moveTo( $clamp_position_rotateleft3 );
sys.wait( 1.75 );
sys.trigger ($speaker_machinedoor2);
$monster_machinedoor2_left.rotateOnce( '0 -90 0' );
$monster_machinedoor2_right.rotateOnce( '0 90 0' );
sys.waitFor( $container_clamphandle_middle );
$container_clamphandle_middle.time( 2.5 );
$container_clamphandle_middle.rotateOnce( '0 90 0' );
sys.waitFor( $container_clamphandle_middle );
$container_clamphandle_middle.speed( 65 );//reset to speed var
$container_clamphandle_middle.moveTo( $clamp_position_rotateright2 );
sys.waitFor( $container_clamphandle_middle );
$container_clamp2.unbind();
$container_clamp2.bind( $container_clamphandle3 );
$container_clamphandle_middle.restorePosition();//reset handle_middle to starting position
$container_clamphandle3.time( 2.5 );
$container_clamphandle3.rotateOnce( '0 -90 0' );
sys.waitFor( $container_clamphandle3 );
$container_clamphandle3.speed( 65 );//reset to speed var
$container_clamphandle3.moveTo( $clamp_position_end );
sys.waitFor( $container_clamphandle3 );
thread stop_conveyor_loop2(); // SOUND
sys.trigger ($speaker_machinedoor3);
$monster_machinedoor3_left.rotateOnce( '0 90 0' );
$monster_machinedoor3_right.rotateOnce( '0 -90 0' );
sys.waitFor( $monster_machinedoor3_right );
sys.wait( .25 );
container2.unbind();
$container_clamp2.unbind();
$container_clamp2.restorePosition();
$container_clamphandle3.restorePosition();
$monster_container2.hide();//Bug - hide container before restorePos to avoid contact with player
sys.wait(.25);
container2.restorePosition();
sys.wait(.25);
$monster_container2.show();
sys.wait( 1.5 );
$monster_machinedoor3_left.rotateOnce( '0 -90 0' );
$monster_machinedoor3_right.rotateOnce( '0 90 0' );
sys.waitFor( $monster_machinedoor3_right );
sys.wait( .25 );
}
void monster_conveyor_run( entity container )
{
$container_clamphandle1.speed( 65 );
$container_clamphandle2.speed( 65 );
$container_clamphandle3.speed( 65 );
$container_clamphandle_middle.speed( 65 );
//small door operate open
sys.trigger ($smalldoor_open);
$monster_machinedoorsmall_left.move( WEST, 32 );
$monster_machinedoorsmall_right.move( EAST, 32 );
sys.waitFor( $monster_machinedoorsmall_right );
//move container clamp into position while container moves up
$container_clamphandle1.moveTo( $clamp_position_stop1 );
//move container up and arms down for pickup
container.move( UP, 52 );
sys.trigger ($speaker_liftarms1_down); // SOUND
$monster_container_liftarms1.move( DOWN, 152 );
sys.waitFor( $monster_container_liftarms1 );
sys.wait( .5 );
//bind container to liftarms and move up
container.bind( $monster_container_liftarms1 );
sys.trigger ($speaker_liftarms1_up); // SOUND
$monster_container_liftarms1.move( UP, 120 );
sys.waitFor( $container_clamphandle1 );
sys.waitFor( $monster_container_liftarms1 );
//small door close
sys.trigger ($smalldoor_close);
$monster_machinedoorsmall_left.move( EAST, 32 );
$monster_machinedoorsmall_right.move( WEST, 32 );
//bind container to the clamp
sys.wait( 1 ); //temp wait for clamp to engage
container.bind( $container_clamp1 );
sys.trigger ($speaker_liftarms1_up); // SOUND
$monster_container_liftarms1.move( UP, 32 );
sys.waitFor( $monster_container_liftarms1 );
//move container along path
thread start_conveyor_loop(); // SOUND
$container_clamphandle1.moveTo( $clamp_position_rotateright1 );
sys.waitFor( $container_clamphandle1 );
$container_clamphandle1.time( 2.5 );//set to time var for corner
$container_clamphandle1.rotateOnce( '0 -90 0' );
sys.waitFor( $container_clamphandle1 );
$container_clamp1.unbind();
$container_clamp1.bind( $container_clamphandle2 );
$container_clamphandle1.restorePosition();//reset handle1 to starting position
$container_clamphandle2.speed( 65 );//reset to speed var
$container_clamphandle2.moveTo( $clamp_position_rotateleft1 );
sys.waitFor( $container_clamphandle2 );
$container_clamphandle2.time( 2.5 );
$container_clamphandle2.rotateOnce( '0 90 0' );
sys.waitFor( $container_clamphandle2 );
$container_clamphandle2.speed( 65 );//reset to speed var
$container_clamphandle2.moveTo( $clamp_position_rotateleft2 );
sys.waitFor( $container_clamphandle2 );
$container_clamphandle2.time( 2.5 );
$container_clamphandle2.rotateOnce( '0 90 0' );
sys.waitFor( $container_clamphandle2 );
$container_clamphandle2.speed( 65 );//reset to speed var
$container_clamphandle2.moveTo( $clamp_position_stop2 );
sys.waitFor( $container_clamphandle2 );
stop_conveyor_loop(); // SOUND
sys.trigger ($speaker_machinedoor1);
$monster_machinedoor1_left.rotateOnce( '0 90 0' );
$monster_machinedoor1_right.rotateOnce( '0 -90 0' );
sys.waitFor( $monster_machinedoor1_left );
sys.wait( 1 );//container wait to move into position
thread start_conveyor_loop(); // SOUND
$container_clamphandle2.moveTo( $clamp_position_stop3 );
sys.waitFor( $container_clamphandle2 );
$container_clamp1.unbind();
$container_clamp1.bind( $container_clamphandle_middle );
$container_clamphandle2.restorePosition();//reset handle2 to starting position
stop_conveyor_loop(); // SOUND
sys.trigger ($speaker_machinedoor1);
$monster_machinedoor1_left.rotateOnce( '0 -90 0' );
$monster_machinedoor1_right.rotateOnce( '0 90 0' );
sys.waitFor( $monster_machinedoor1_left );
//fade container 1 lights OUT, red lights IN
thread crossFadeEnt ($container1_light1, '0.756863 0.976471 1', '0 0 0', 1.0);
thread crossFadeEnt ($container1_light2, '0.756863 0.976471 1', '0 0 0', 1.0);
thread crossFadeEnt ($chamber_redlight1, '0 0 0', '1 0 0', 1.0);
thread crossFadeEnt ($chamber_redlight2, '0 0 0', '1 0 0', 1.0);
sys.trigger ($chamber_fx1);
sys.trigger ($chamber_fx2);
sys.trigger ($chamber_fx_sound);
sys.wait( 4 );//container wait inside chamber
sys.trigger ($chamber_fx1);
sys.trigger ($chamber_fx2);
//fade container 1 lights IN, red lights OUT
thread crossFadeEnt ($container1_light1, '0 0 0', '0.756863 0.976471 1', 1.0);
thread crossFadeEnt ($container1_light2, '0 0 0', '0.756863 0.976471 1', 1.0);
thread crossFadeEnt ($chamber_redlight1, '1 0 0', '0 0 0', 1.0);
thread crossFadeEnt ($chamber_redlight2, '1 0 0', '0 0 0', 1.0);
//*********************************
//start second container
// ********************************
thread monster_container2_run( $monster_container2_contactpoint );
thread start_conveyor_loop(); // SOUND
$container_clamphandle_middle.moveTo( $clamp_position_stop4 );
sys.waitFor( $container_clamphandle_middle );
thread stop_conveyor_loop(); // SOUND
sys.trigger ($speaker_machinedoor2);
$monster_machinedoor2_left.rotateOnce( '0 90 0' );
$monster_machinedoor2_right.rotateOnce( '0 -90 0' );
sys.waitFor( $monster_machinedoor2_left );
sys.wait( 1 );//container wait outside chamber
thread start_conveyor_loop(); // SOUND
$container_clamphandle_middle.moveTo( $clamp_position_rotateleft3 );
sys.wait( 1.75 );
sys.trigger ($speaker_machinedoor2);
$monster_machinedoor2_left.rotateOnce( '0 -90 0' );
$monster_machinedoor2_right.rotateOnce( '0 90 0' );
sys.waitFor( $container_clamphandle_middle );
$container_clamphandle_middle.time( 2.5 );
$container_clamphandle_middle.rotateOnce( '0 90 0' );
sys.waitFor( $container_clamphandle_middle );
$container_clamphandle_middle.speed( 65 );//reset to speed var
$container_clamphandle_middle.moveTo( $clamp_position_rotateright2 );
sys.waitFor( $container_clamphandle_middle );
$container_clamp1.unbind();
$container_clamp1.bind( $container_clamphandle3 );
$container_clamphandle_middle.restorePosition();//reset handle_middle to starting position
$container_clamphandle3.time( 2.5 );
$container_clamphandle3.rotateOnce( '0 -90 0' );
sys.waitFor( $container_clamphandle3 );
$container_clamphandle3.speed( 65 );//reset to speed var
$container_clamphandle3.moveTo( $clamp_position_end );
sys.waitFor( $container_clamphandle3 );
stop_conveyor_loop(); // SOUND
sys.trigger ($speaker_machinedoor3);
$monster_machinedoor3_left.rotateOnce( '0 90 0' );
$monster_machinedoor3_right.rotateOnce( '0 -90 0' );
sys.waitFor( $monster_machinedoor3_right );
sys.wait( .25 );
container.unbind();
$container_clamp1.unbind();
$container_clamphandle3.restorePosition();
$container_clamp1.restorePosition();
$monster_container1.hide();//Bug - hide container before restorePos to avoid contact with player
sys.wait(.25);
container.restorePosition();
sys.wait(.25);
$monster_container1.show();
sys.wait( 1.5 );
$monster_machinedoor3_left.rotateOnce( '0 -90 0' );
$monster_machinedoor3_right.rotateOnce( '0 90 0' );
sys.waitFor( $monster_machinedoor3_right );
$container_clamp1.bind( $container_clamphandle1 );
sys.wait( .25 );
}
void monster_conveyor_start()
{
thread monster_conveyor_run( $monster_container1_contactpoint );
//turn_beam_on_off();
//start_beam();
}
// ----------------------------
// Analyzer machine starts here
// ----------------------------
void analyzer_fwdarms_operate()
{
$speaker_sc_piston_leftfront.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE2 );
$sc_piston_leftfront.move( DOWN, 84 );
$speaker_sc_piston_rightfront.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE2 );
$sc_piston_rightfront.move( DOWN, 84 );
sys.waitFor( $sc_piston_rightfront );
$speaker_sc_rotater_leftfront.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 );
$sc_rotater_leftfront.rotateOnce( '0 -45 0' );
$speaker_sc_rotater_rightfront.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 );
$sc_rotater_rightfront.rotateOnce( '0 45 0' );
sys.wait( .25 );
$speaker_sc_largearm_leftfront.startSoundShader ("mach_1s", SND_CHANNEL_VOICE2 );
$sc_largearm_leftfront.rotateOnce( '-80 0 0' );
$speaker_sc_largearm_rightfront.startSoundShader ("mach_1s", SND_CHANNEL_VOICE2 );
$sc_largearm_rightfront.rotateOnce( '-80 0 0' );
sys.wait( .25 );
$speaker_sc_smallarm_leftfront.startSoundShader ("mach_1_5s", SND_CHANNEL_VOICE2 );
$sc_smallarm_leftfront.rotateOnce( '-31.5 0 0' );
$speaker_sc_rightarm_leftfront.startSoundShader ("mach_1_5s", SND_CHANNEL_VOICE2 );
$sc_smallarm_rightfront.rotateOnce( '-31.5 0 0' );
sys.wait( .5 );
$sc_4head_leftfront.rotateOnce( '-12 0 0' );
$sc_4head_rightfront.rotateOnce( '-12 0 0' );
sys.waitFor( $sc_4head_rightfront );
//start analyzer fx
$anal_main_fx.startSoundShader ("u1mach_on", SND_CHANNEL_VOICE );
sys.trigger( $anal_head_fx1 );
sys.trigger( $anal_head_fx2 );
sys.trigger( $anal_head_fx3 );
sys.trigger( $anal_head_fx4 );
sys.trigger( $anal_head_fx5 );
sys.trigger( $anal_head_fx6 );
sys.wait( 1.4 );
$anal_main_fx.startSoundShader ("u1mach_loop", SND_CHANNEL_VOICE2 );
sys.trigger( $anal_main_fx );
//turn on kill brush
sys.trigger( $analyzeToDeath );
sys.trigger( $analyzer_controlpanel);
}
void analyzer_operate()
{
$speaker_sc_piston_leftrear.startSoundShader ("mach_1_5s", SND_CHANNEL_VOICE2 );
$sc_piston_leftrear.move( DOWN, 80 );
$speaker_sc_piston_rightrear.startSoundShader ("mach_1_5s", SND_CHANNEL_VOICE2 );
$sc_piston_rightrear.move( DOWN, 80 );
sys.waitFor( $sc_piston_rightrear );
thread analyzer_fwdarms_operate();
$speaker_sc_rotater_leftrear.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 );
$sc_rotater_leftrear.rotateOnce( '0 30 0' );
$speaker_sc_rotater_rightrear.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 );
$sc_rotater_rightrear.rotateOnce( '0 -30 0' );
sys.wait( .25 );
$speaker_sc_largearm_leftrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 );
$sc_largearm_leftrear.rotateOnce( '-90 0 0' );
$speaker_sc_largearm_righttrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 );
$sc_largearm_rightrear.rotateOnce( '-90 0 0' );
sys.wait( .325 );
$speaker_sc_smallarm_leftrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 );
$sc_smallarm_leftrear.rotateOnce( '-50 0 0' );
$speaker_sc_smallarm_rightrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 );
$sc_smallarm_rightrear.rotateOnce( '-50 0 0' );
sys.wait( 1.25 );
$sc_3head_leftrear.rotateOnce( '-21.5 0 0' );
$sc_3head_rightrear.rotateOnce( '-21.5 0 0' );
}
void analyzer_reararms_operate_off()
{
$sc_3head_leftrear.rotateOnce( '21.5 0 0' );
$sc_3head_rightrear.rotateOnce( '21.5 0 0' );
sys.wait( 1.25 );
$speaker_sc_smallarm_leftrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 );
$sc_smallarm_leftrear.rotateOnce( '50 0 0' );
$speaker_sc_smallarm_rightrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 );
$sc_smallarm_rightrear.rotateOnce( '50 0 0' );
//sys.wait( .325 );
$speaker_sc_largearm_leftrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 );
$sc_largearm_leftrear.rotateOnce( '90 0 0' );
$speaker_sc_largearm_rightrear.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 );
$sc_largearm_rightrear.rotateOnce( '90 0 0' );
sys.wait( 1.25 );
$speaker_sc_rotater_leftrear.startSoundShader ("mach_1s", SND_CHANNEL_VOICE2 );
$sc_rotater_leftrear.rotateOnce( '0 -30 0' );
$speaker_sc_rotater_rightrear.startSoundShader ("mach_1s", SND_CHANNEL_VOICE2 );
$sc_rotater_rightrear.rotateOnce( '0 30 0' );
sys.waitFor( $sc_rotater_rightrear );
$speaker_sc_piston_leftrear.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE2 );
$sc_piston_leftrear.move( UP, 80 );
$speaker_sc_piston_rightrear.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE2 );
$sc_piston_rightrear.move( UP, 80 );
sys.waitFor( $sc_piston_rightrear );
sys.trigger( $analyzer_controlpanel);
}
void analyzer_operate_off()
{
//stop analyzer fx
$anal_main_fx.startSoundShader ("u1mach_off", SND_CHANNEL_VOICE2 );
sys.trigger( $anal_main_fx );
sys.wait( .5 );
sys.trigger( $anal_head_fx1 );
sys.trigger( $anal_head_fx2 );
sys.trigger( $anal_head_fx3 );
sys.trigger( $anal_head_fx4 );
sys.trigger( $anal_head_fx5 );
sys.trigger( $anal_head_fx6 );
//turn off kill brush
sys.trigger( $analyzeToDeath );
sys.wait( .5 );
$speaker_sc4head_leftfront.startSoundShader ("al4_conveyor_1_point5s", SND_CHANNEL_VOICE2 );
$sc_4head_leftfront.rotateOnce( '12 0 0' );
$speaker_sc4head_rightfront.startSoundShader ("al4_conveyor_1_point5s", SND_CHANNEL_VOICE2 );
$sc_4head_rightfront.rotateOnce( '12 0 0' );
sys.wait( .15 );
$speaker_sc_largearm_leftfront.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 );
$sc_largearm_leftfront.rotateOnce( '80 0 0' );
$speaker_sc_largearm_rightfront.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2 );
$sc_largearm_rightfront.rotateOnce( '80 0 0' );
$sc_smallarm_leftfront.rotateOnce( '31.5 0 0' );
$sc_smallarm_rightfront.rotateOnce( '31.5 0 0' );
sys.wait( .5 );
thread analyzer_reararms_operate_off();
$speaker_sc_rotater_leftfront.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 );
$sc_rotater_leftfront.rotateOnce( '0 45 0' );
$speaker_sc_rotater_rightfront.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 );
$sc_rotater_rightfront.rotateOnce( '0 -45 0' );
sys.waitFor( $sc_rotater_rightfront );
$speaker_sc_piston_leftfront.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE2 );
$sc_piston_leftfront.move( UP, 84 );
$speaker_sc_piston_rightfront.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE2 );
$sc_piston_rightfront.move( UP, 84 );
}
void cache_sounds()
{
sys.cacheSoundShader ("rec2_pump_1s_01");
sys.cacheSoundShader ("dc3_gui_panel_1");
sys.cacheSoundShader ("mach_1s");
sys.cacheSoundShader ("mach_1_5s");
sys.cacheSoundShader ("mcu_support_2s");
sys.cacheSoundShader ("al4_conveyor_1_point5s");
sys.cacheSoundShader ("u1mach_on");
sys.cacheSoundShader ("u1mach_off");
sys.cacheSoundShader ("u1mach_loop");
}
void falling_floor_secret()
{
$drop_floor.time( 1 );
$drop_floor.accelTime( .25 );
$drop_floor.decelTime( .25 );
$drop_floor.move( DOWN, 128 );
}
void main()
{
cache_sounds();
//init
$top_beam_mover.hide();
$bottom_beam_mover.hide();
$monster_container_liftarms1.time( 2 );
$monster_container_liftarms1.accelTime( 0 );
$monster_container_liftarms1.decelTime( 1 );
$monster_machinedoorsmall_left.time( 1.5 );
$monster_machinedoorsmall_left.accelTime( .5 );
$monster_machinedoorsmall_left.decelTime( 1 );
$monster_machinedoorsmall_right.time( 1.5 );
$monster_machinedoorsmall_right.accelTime( .5 );
$monster_machinedoorsmall_right.decelTime( 1 );
$monster_container1_contactpoint.time( 1.5 );
$monster_container1_contactpoint.accelTime( .5 );
$monster_container1_contactpoint.decelTime( 1 );
$monster_container2_contactpoint.time( 1.5 );
$monster_container2_contactpoint.accelTime( .5 );
$monster_container2_contactpoint.decelTime( 1 );
$monster_machinedoor1_left.time( 2 );
$monster_machinedoor1_left.accelTime( .5 );
$monster_machinedoor1_left.decelTime( 1 );
$monster_machinedoor1_right.time( 2 );
$monster_machinedoor1_right.accelTime( .5 );
$monster_machinedoor1_right.decelTime( 1 );
$monster_machinedoor2_left.time( 2 );
$monster_machinedoor2_left.accelTime( .5 );
$monster_machinedoor2_left.decelTime( 1 );
$monster_machinedoor2_right.time( 2 );
$monster_machinedoor2_right.accelTime( .5 );
$monster_machinedoor2_right.decelTime( 1 );
$sc_piston_leftrear.time( 1.5 );
$sc_piston_leftrear.accelTime( .5 );
$sc_piston_leftrear.decelTime( 1 );
$sc_piston_rightrear.time( 1.5 );
$sc_piston_rightrear.accelTime( .5 );
$sc_piston_rightrear.decelTime( 1 );
$sc_rotater_leftrear.time( 1 );
$sc_rotater_leftrear.accelTime( .25 );
$sc_rotater_leftrear.decelTime( .75 );
$sc_rotater_rightrear.time( 1 );
$sc_rotater_rightrear.accelTime( .25 );
$sc_rotater_rightrear.decelTime( .75 );
$sc_largearm_leftrear.time( 2 );
$sc_largearm_leftrear.accelTime( .75 );
$sc_largearm_leftrear.decelTime( 1 );
$sc_largearm_rightrear.time( 2 );
$sc_largearm_rightrear.accelTime( .75 );
$sc_largearm_rightrear.decelTime( 1 );
$sc_smallarm_leftrear.time( 2 );
$sc_smallarm_leftrear.accelTime( .5 );
$sc_smallarm_leftrear.decelTime( 1.25 );
$sc_smallarm_rightrear.time( 2 );
$sc_smallarm_rightrear.accelTime( .5 );
$sc_smallarm_rightrear.decelTime( 1.25 );
$sc_3head_leftrear.time( 1.5 );
$sc_3head_leftrear.accelTime( .5 );
$sc_3head_leftrear.decelTime( 1 );
$sc_3head_rightrear.time( 1.5 );
$sc_3head_rightrear.accelTime( .5 );
$sc_3head_rightrear.decelTime( 1 );
$sc_piston_leftfront.time( 1.5 );
$sc_piston_leftfront.accelTime( .5 );
$sc_piston_leftfront.decelTime( 1 );
$sc_piston_rightfront.time( 1.5 );
$sc_piston_rightfront.accelTime( .5 );
$sc_piston_rightfront.decelTime( 1 );
$sc_rotater_leftfront.time( 1 );
$sc_rotater_leftfront.accelTime( .25 );
$sc_rotater_leftfront.decelTime( .75 );
$sc_rotater_rightfront.time( 1 );
$sc_rotater_rightfront.accelTime( .25 );
$sc_rotater_rightfront.decelTime( .75 );
$sc_largearm_leftfront.time( 2 );
$sc_largearm_leftfront.accelTime( .75 );
$sc_largearm_leftfront.decelTime( 1 );
$sc_largearm_rightfront.time( 2 );
$sc_largearm_rightfront.accelTime( .75 );
$sc_largearm_rightfront.decelTime( 1 );
$sc_smallarm_leftfront.time( 1.5 );
$sc_smallarm_leftfront.accelTime( .5 );
$sc_smallarm_leftfront.decelTime( 1 );
$sc_smallarm_rightfront.time( 1.5 );
$sc_smallarm_rightfront.accelTime( .5 );
$sc_smallarm_rightfront.decelTime( 1 );
$sc_4head_leftfront.time( 1.25 );
$sc_4head_leftfront.accelTime( .5 );
$sc_4head_leftfront.decelTime( .75 );
$sc_4head_rightfront.time( 1.25 );
$sc_4head_rightfront.accelTime( .5 );
$sc_4head_rightfront.decelTime( .75 );
}
}
File diff suppressed because it is too large Load Diff
+130
View File
@@ -0,0 +1,130 @@
namespace map_delta5
{
void init_world()
{
float i;
entity ent1, ent2;
for ( i = 1; i <= 9; i++ )
{
ent1 = sys.getEntity ("lred_0" + i);
ent1.Off();
}
for ( i = 1; i <= 6; i++ )
{
ent1 = sys.getEntity ("lleft_0" + i);
ent2 = sys.getEntity ("lright_0" + i);
ent1.Off();
ent2.Off();
}
}
void scroll_red_lights()
{
float i;
entity ent;
while (1)
{
for ( i = 1; i <= 9; i++ )
{
ent = sys.getEntity ("lred_0" + i);
ent.On();
sys.wait ( 0.10 );
ent.Off();
sys.wait ( 0.10 );
}
}
}
void scroll_blue_lights()
{
float i;
entity ent1, ent2;
while (1)
{
for ( i = 1; i <= 6; i++ )
{
ent1 = sys.getEntity ("lleft_0" + i);
ent2 = sys.getEntity ("lright_0" + i);
ent1.On();
ent2.On();
sys.wait ( 0.2 );
ent1.Off();
ent2.Off();
sys.wait ( 0.2 );
}
}
}
void open_vent_ladder()
{
$vent_panel.time (1);
$vent_panel.accelTime (.5);
$vent_panel.decelTime (.5);
$vent_panel.startSoundShader ("dc5_panel_1s", SND_CHANNEL_VOICE);
$vent_panel.moveTo ($vent_panel_pos1);
sys.waitFor ($vent_panel);
sys.wait (.5);
$vent_panel.time (1.5);
$vent_panel.accelTime (.75);
$vent_panel.decelTime (.75);
$vent_panel.startSoundShader ("dc5_panel_1_5s", SND_CHANNEL_VOICE2);
$vent_panel.moveTo ($vent_panel_pos2);
sys.waitFor ($vent_panel);
sys.wait (.5);
$vent_ladder.time (4);
$vent_ladder.accelTime (1.25);
$vent_ladder.decelTime (2.75);
$vent_ladder.startSoundShader ("ladder_4s", SND_CHANNEL_VOICE );
$vent_ladder.moveTo ($ladder_extended_pos);
}
void close_vent_ladder()
{
$vent_ladder_brush.remove();
$vent_ladder.time (2);
$vent_ladder.accelTime (1.25);
$vent_ladder.decelTime (.75);
$vent_ladder.startSoundShader ("ladder_4s", SND_CHANNEL_VOICE );
$vent_ladder.moveTo ($ladder_retracted_pos);
sys.waitFor ($vent_ladder);
$vent_panel.time (1);
$vent_panel.accelTime (.5);
$vent_panel.decelTime (.5);
$vent_panel.startSoundShader ("dc5_panel_1_5s", SND_CHANNEL_VOICE);
$vent_panel.moveTo ($vent_panel_pos1);
sys.waitFor ($vent_panel);
sys.wait (.5);
$vent_panel.time (1.5);
$vent_panel.accelTime (.75);
$vent_panel.decelTime (.75);
$vent_panel.startSoundShader ("dc5_panel_1s", SND_CHANNEL_VOICE2);
$vent_panel.moveTo ($vent_panel_startpos);
sys.waitFor ($vent_panel);
sys.wait (.5);
}
void start_world()
{
thread scroll_red_lights();
thread scroll_blue_lights();
}
void cache_sounds() {
sys.cacheSoundShader ("dc5_panel_1s");
sys.cacheSoundShader ("dc5_panel_1_5s");
sys.cacheSoundShader ("ladder_4s");
}
void main()
{
cache_sounds();
init_world();
start_world();
}
}
+995
View File
@@ -0,0 +1,995 @@
namespace map_enpro {
// Set up exit room sounds for after the battle sequence. Trigger all this stuff when the player
// swaps out the rod.
void xianstuff() {
sys.trigger ($speaker_burn_1); // flame1 in exit room
sys.trigger ($speaker_burn_2); // flame2 in exit room
sys.trigger ($speaker_alarm_1); // alarm sound in exit room
sys.trigger ($speaker_badgen_1); // Red sound for damaged core :: Turns it off
sys.trigger ($speaker_goodgen_1); // Blue sound for fixed core :: Turns it on
sys.trigger ($rflames); // Turns off flame sounds for fixed rod 2
sys.trigger ($speaker_fixed_rod); // Turns on good sound for fixed rod 2
}
void setup_objects()
{
// ceiling room
$ceiling_cover.bind ($ceiling_cover_anchor);
$ceilingroom_pipe.bind ($ceilingroom_pipe_anchor);
$ceiling_cover_anchor.accelTime (.5);
$ceiling_cover_anchor.time (.5);
$ceilingroom_pipe_anchor.accelTime (.3);
$ceilingroom_pipe_anchor.time (.6);
$ceiling_cover_anchor.rotateOnce ('120 0 0');
// bridge setup
$bridge_toprailing_left.bind ($bridge_toprailing_left_anchor);
$bridge_toprailing_left_anchor.bind ($bridge_floor);
$bridge_toprailing_right.bind ($bridge_toprailing_right_anchor);
$bridge_toprailing_right_anchor.bind ($bridge_floor);
$bridge_btmrailing_left.bind ($bridge_btmrailing_left_anchor);
$bridge_btmrailing_left_anchor.bind ($bridge_floor);
$bridge_btmrailing_right.bind ($bridge_btmrailing_right_anchor);
$bridge_btmrailing_right_anchor.bind ($bridge_floor);
$bridge_toprailing_left_anchor.accelTime (.4);
$bridge_toprailing_left_anchor.decelTime (.4);
$bridge_toprailing_left_anchor.time (1);
$bridge_toprailing_right_anchor.accelTime (.4);
$bridge_toprailing_right_anchor.decelTime (.4);
$bridge_toprailing_right_anchor.time (1);
$bridge_btmrailing_left_anchor.accelTime (.4);
$bridge_btmrailing_left_anchor.decelTime (.4);
$bridge_btmrailing_left_anchor.time (1);
$bridge_btmrailing_right_anchor.accelTime (.4);
$bridge_btmrailing_right_anchor.decelTime (.4);
$bridge_btmrailing_right_anchor.time (1);
$bridge_toprailing_left_anchor.rotateOnce ('0 0 -88');
$bridge_btmrailing_left_anchor.rotateOnce ('0 0 -45');
$bridge_toprailing_right_anchor.rotateOnce ('0 0 88');
$bridge_btmrailing_right_anchor.rotateOnce ('0 0 45');
$bridge_floor.moveTo ($bridge_spot1);
// hall 1 emergency light
$light_tunnel_1.bind ($tunnel_anchor_1);
$light_tunnel_1_spin.bind ($tunnel_anchor_1);
$tunnel_anchor_1.rotate ('0 -300 0');
// chamber 2: spinny things
$accelswayL.rotate ('0 -20 0');
$accelspinL.rotate ('0 45 0');
$accelspinM.rotate ('0 -35 0');
$accelspinR.rotate ('0 50 0');
$c2_spin_2.rotate ('0 -40 0');
$c2_spin_3.rotate ('0 20 0');
// rod replacement setup
$rod_door.bind ($rod_replacer);
$rod_door.time (1);
$rod_door.accelTime (.3);
$rod_door.decelTime (.5);
$rod_fire_emitter1.bind ($rod);
$rod_fire_emitter2.bind ($rod);
$rod_redlight1.bind ($rod);
$rod_emitter3.bind ($rod);
$rod_emitter4.bind ($rod);
$rod_emitter1.bind ($rod_2);
$rod_emitter2.bind ($rod_2);
$rod_2_bluelight1.bind ($rod_2);
$rod_2_bluelight2.bind ($rod_2);
$rod_2.hide ();
$rod_replacer.time (1);
$rod_replacer.decelTime (.5);
$rod.time (.5);
$rod.decelTime (.3);
$rod_2.time (.5);
$rod_2.decelTime (.3);
// machineroom binds
$machineclaw1_carrier.bind ($machineclaw1_carrier_anchor);
$machineclaw1_upperarm.bind ($machineclaw1_carrier);
$machineclaw1_forearm.bind ($machineclaw1_upperarm);
$machineclaw1_hand.bind ($machineclaw1_forearm);
$machineclaw1_revolver.bind ($machineclaw1_hand);
$machineclaw1_steam1.bind ($machineclaw1_hand);
$machineclaw1_steam2.bind ($machineclaw1_hand);
$reloader_light.bind ($reloader);
$chamberpivot2.bind ($chamberpivot1);
$filterchamber.bind ($chamberpivot1);
$canspot1.bind ($machineclaw1_revolver);
$canspot2.bind ($machineclaw1_revolver);
$canspot3.bind ($machineclaw1_revolver);
$canspot4.bind ($machineclaw1_revolver);
$can_dirty1.bind ($filterchamber);
$can_dirty2.bind ($filterchamber);
$chamber_filterspot1.bind ($filterchamber);
$chamber_filterspot2.bind ($filterchamber);
$can_dirty4.bind ($cradle4);
$can_dirty5.bind ($cradle5);
$can_dirty6.bind ($cradle6);
$cradle4_x.bind ($cradle4);
$cradle5_x.bind ($cradle5);
$cradle6_x.bind ($cradle6);
// setup mover times for machineroom
$machineclaw1_carrier.time (2);
$machineclaw1_upperarm.time (1);
$machineclaw1_forearm.time (1);
$machineclaw1_hand.time (1);
$machineclaw1_revolver.time (1);
$machineclaw1_carrier.accelTime (.50);
$machineclaw1_upperarm.accelTime (.1);
$machineclaw1_forearm.accelTime (.1);
$machineclaw1_hand.accelTime (.1);
$machineclaw1_revolver.accelTime (.1);
$machineclaw1_carrier.decelTime (.50);
$machineclaw1_upperarm.decelTime (.1);
$machineclaw1_forearm.decelTime (.1);
$machineclaw1_hand.decelTime (.1);
$machineclaw1_revolver.decelTime (.1);
$reloader.time (.25);
//airlock door2 times
$airlock_door2_left.time (1.2);
$airlock_door2_right.time (1.2);
$airlock_door2_left.accelTime (.2);
$airlock_door2_left.decelTime (1);
$airlock_door2_right.accelTime (.2);
$airlock_door2_right.decelTime (1);
$airlock_door2_top_lock.time (.25);
$airlock_door2_bottom_lock.time (.25);
$airlock_door2_left_lock.time (.75);
$airlock_door2_right_lock.time (.75);
$airlock_door2_left_lock.accelTime (.1);
$airlock_door2_left_lock.decelTime (.65);
$airlock_door2_right_lock.accelTime (.1);
$airlock_door2_right_lock.decelTime (.65);
}
///////////////////////////////////////////////
//
// ceilingroom
//
//////////////////////////////////////////////
void ceilingroom_start ()
{
sys.trigger ($explosion_1);
$ceilingroom_pipe_anchor.rotateOnce ('-15 0 0');
$ceilingroom_pipe_anchor.move (DOWN ,28);
$ceilingroom_pipe_anchor.startSoundShader ("metalcrash_01", SND_CHANNEL_VOICE);
sys.waitFor ($ceilingroom_pipe_anchor);
$ceilingroom_pipe_anchor.accelTime (.1);
$ceilingroom_pipe_anchor.decelTime (.1);
$ceilingroom_pipe_anchor.time (.2);
$ceilingroom_pipe_anchor.move (UP ,4);
$ceilingroom_pipe_anchor.rotateOnce ('3 0 0');
sys.waitFor ($ceilingroom_pipe_anchor);
$ceilingroom_pipe_anchor.move (DOWN ,2);
$ceilingroom_pipe_anchor.rotateOnce ('-3 0 0');
$bloodsplat1.show ();
sys.wait (.1);
$bloodsplat2.show ();
sys.wait (.1);
$bloodsplat3.show ();
sys.wait (.1);
$bloodsplat4.show ();
sys.wait (.05);
$bloodsplat5.show ();
sys.wait (.1);
$bloodsplat6.show ();
sys.wait (.05);
$ceiling_cover_anchor.rotateOnce ('-120 0 0');
sys.wait (.3);
sys.trigger ($func_fracture_6);
sys.trigger ($func_forcefield_6);
$func_forcefield_6.startSoundShader ("glasscrash_01", SND_CHANNEL_VOICE);
sys.wait (.3);
sys.trigger ($func_fracture_9);
sys.trigger ($func_forcefield_12);
$func_forcefield_6.startSoundShader ("glasscrash_01", SND_CHANNEL_VOICE);
sys.wait (.1);
sys.trigger ($breakglass_again);
}
///////////////////////////////////////////////
//
// bridge
//
//////////////////////////////////////////////
void bridge_open ()
{
$bridge_floor.time (2);
$bridge_floor.startSoundShader ("enpro_bridge_2s", SND_CHANNEL_VOICE);
$bridge_floor.moveTo ($bridge_spot2);
sys.waitFor ($bridge_floor);
$bridge_toprailing_left_anchor.rotateOnce ('0 0 88');
$bridge_toprailing_right_anchor.startSoundShader ("enpro_bridge_rails_1s", SND_CHANNEL_VOICE);
$bridge_toprailing_right_anchor.rotateOnce ('0 0 -88');
sys.waitFor ($bridge_toprailing_right_anchor);
$bridge_btmrailing_left_anchor.startSoundShader ("enpro_bridge_rails_2_1s", SND_CHANNEL_VOICE);
$bridge_btmrailing_left_anchor.rotateOnce ('0 0 45');
$bridge_btmrailing_right_anchor.rotateOnce ('0 0 -45');
}
///////////////////////////////////////////////
//
// zombie drop
//
//////////////////////////////////////////////
void zombie_drop ()
{ sys.trigger ($zombie_explosion_1);
sys.wait (.5);
sys.trigger ($zombie_explosion_2);
sys.wait (.2);
$zombie1.unbind ();
sys.wait (1);
$zombie_splat.show ();
}
/////////////////////////////////////////////////
//
// coolant rod replacement stuff
//
/////////////////////////////////////////////////
void rod_replace ()
{
thread xianstuff(); // Swap out sounds during this sequence
// grab red rod
sys.wait (1);
$rod_replacer.moveTo ($rod_replacer_spot2);
sys.waitFor ($rod_replacer);
sys.wait (1);
$rod.bind ($rod_replacer);
$rod_replacer.moveTo ($rod_replacer_spot1);
sys.waitFor ($rod_replacer);
$rod.unbind ();
$rod_door.rotateOnce ('0 180 0');
sys.wait (.5);
$rod_shimmer.hide ();
$rod_fire_emitter1.hide ();
$rod_fire_emitter2.hide ();
$rod_emitter3.hide ();
$rod_emitter4.hide ();
sys.trigger ($cyl_smoke);
sys.waitFor ($rod_door);
sys.wait (1);
$rod.moveTo ($rod_spot1);
sys.waitFor ($rod);
// switch
$rod.hide ();
$rod_2.show ();
$rod_fire_emitter1.hide ();
$rod_fire_emitter2.hide ();
$rod_emitter3.hide ();
$rod_emitter4.hide ();
$cyl_smoke.hide ();
sys.trigger ($rod_redlight1);
sys.trigger ($rod_2_bluelight1);
sys.trigger ($rod_2_bluelight2);
// blue rod
$rod_2.moveTo ($rod_spot2);
sys.waitFor ($rod_2);
$rod_2.bind ($rod_replacer);
$rod_replacer.moveTo ($rod_replacer_spot2);
sys.waitFor ($rod_replacer);
$rod_door.rotateOnce ('0 -180 0');
sys.waitFor ($rod_door);
$rod_2.unbind ();
sys.wait (1);
$rod_replacer.moveTo ($rod_replacer_spot1);
sys.waitFor ($rod_replacer);
// switch out colors by hazarddoor up on level 2
sys.trigger ($hazard_redlight);
sys.trigger ($hazard_bluelight);
$hazard_redemitter1.hide ();
$hazard_redemitter2.hide ();
$hazard_redemitter3.hide ();
$hazard_redemitter4.hide ();
$hazard_redtube1.hide ();
$hazard_redtube2.hide ();
$hazard_blueemitter1.show ();
$hazard_blueemitter2.show ();
$hazard_blueemitter3.show ();
$hazard_blueemitter4.show ();
$hazard_bluetube1.show ();
$hazard_bluetube2.show ();
sys.trigger ($cyl_lightrelay);
sys.trigger ($cyltop_on);
sys.trigger ($cyltop_off);
sys.trigger ($cylbottom_on);
sys.trigger ($cylbottom_off);
sys.trigger ($func_emitter_68);
sys.trigger ($func_emitter_69);
sys.trigger ($hazdoortrigger);
sys.trigger ($obj1complete);
sys.trigger ($obj1complete_trigger);
}
////////////////////////////////////////////////////
//
// Rotate a cradle (machine room thing that -
// accepts dirty filters) around the ends
//
////////////////////////////////////////////////////
void cradle_rotate( entity ent )
{
//whole thing (up, around, and down
//takes 1 second like almost all the moves
ent.time ( .33 );
ent.move ( UP, 16 );
sys.waitFor (ent);
ent.rotateOnce ( '0 0 180');
sys.waitFor (ent);
ent.move ( DOWN, 16 );
ent.time (1);
}
void cache_sounds() {
sys.cacheSoundShader ("rec1_steamchuff");
sys.cacheSoundShader ("metalcrash_01");
sys.cacheSoundShader ("glasscrash_01");
sys.cacheSoundShader ("enpro_bridge_2s");
sys.cacheSoundShader ("enpro_bridge_rails_1s");
sys.cacheSoundShader ("enpro_bridge_rails_2_1s");
sys.cacheSoundShader ("dc3_gui_panel_1");
sys.cacheSoundShader ("tb_m3_loop");
sys.cacheSoundShader ("tb_m4_stop");
sys.cacheSoundShader ("mach_1s");
sys.cacheSoundShader ("rotor_1s");
sys.cacheSoundShader ("tb_m4_stop");
sys.cacheSoundShader ("tb_arm1");
sys.cacheSoundShader ("tb_arm2");
sys.cacheSoundShader ("tb_arm3");
sys.cacheSoundShader ("tb_whomp");
sys.cacheSoundShader ("tb_whompout");
sys.cacheSoundShader ("tb_reloader1");
sys.cacheSoundShader ("tb_reloader2");
sys.cacheSoundShader ("al4_welder_armrot_1s");
}
////////////////////////////////////////////////////
//
// Machineclaw movement
//
////////////////////////////////////////////////////
void machineclaw1_move()
{
// move machineclaw1 from initial position down and around track to filter pick up spot
//1
$sp_m2_carrier.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 );
$sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover
$machineclaw1_carrier_anchor.rotateOnce ( '0 -90 0' );
sys.waitFor ($machineclaw1_carrier_anchor);
//2
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint2 );
sys.waitFor ($machineclaw1_carrier_anchor);
//3
$sp_m2_carrier.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 );
$machineclaw1_carrier_anchor.rotateOnce ( '0 -90 0' );
sys.waitFor ($machineclaw1_carrier_anchor);
//4
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint1 );
sys.waitFor ($machineclaw1_carrier_anchor);
// position machineclaw1 to receive filters
//5
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint12 );
$sp_m2_arm.startSoundShader ("mach_1s", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '-30 0 35' );
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE2 );
$machineclaw1_forearm.rotateOnce ( '80 0 0' );
sys.waitFor ($machineclaw1_forearm);
$sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover
//6
$sp_m2_rev.startSoundShader ("tb_arm3", SND_CHANNEL_BODY );
$machineclaw1_hand.rotateOnce ( '142.5 10 -90' );
sys.waitFor ($machineclaw1_hand);
sys.waitFor ($machineclaw1_upperarm);
//7
$sp_m2_arm.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '-10 0 -43' );
sys.wait (1);
// get 1st new filter
//8
$can_clean1.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE );
$can_clean1.moveTo ($canspot1);
sys.waitFor ($can_clean1);
$can_clean1.bind ($machineclaw1_revolver);
//steam
//9
$machineclaw1_steam1.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
// swing machineclaw1 away from receive position
//10
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 0 48' );
$sp_m2_rev.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 );
$machineclaw1_forearm.rotateOnce ( '10 0 0' );
sys.waitFor ($machineclaw1_upperarm);
// reload 2
//11
$sp_m2_reloader.startSoundShader ("tb_reloader1", SND_CHANNEL_VOICE );
$reloader.move ( DOWN, 32 );
sys.waitFor ($reloader);
//12
$sp_m2_reloader.startSoundShader ("tb_reloader2", SND_CHANNEL_VOICE2 );
$reloader.move ( UP, 32 );
$can_clean2.time (.25);
$can_clean3.time (.25);
//13
$can_clean2.move ( UP, 32 );
$can_clean3.move ( UP, 32 );
//14
$can_clean2.time (1);
$can_clean3.time (1);
// swing machineclaw1 back into receive position
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 0 -48' );
$sp_m2_rev.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 );
$machineclaw1_forearm.rotateOnce ( '-10 0 0' );
sys.wait (.5);
// get 2nd new filter
//15
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_BODY );
$machineclaw1_revolver.rotateOnce ( '0 -450 0');
sys.waitFor ($machineclaw1_revolver);
//steam
//16
$machineclaw1_steam2.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
$can_clean2.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE );
$can_clean2.moveTo ($canspot2);
sys.waitFor ($can_clean2);
$can_clean2.bind ($machineclaw1_revolver);
// machineclaw1 movement out of receive position
//17
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 0 38' );
sys.waitFor ($machineclaw1_upperarm);
//18
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_hand.rotateOnce ( '-142.5 -10 90' );
sys.waitFor ($machineclaw1_hand);
//19
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 0 -20' );
$sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint1 );
sys.waitFor ($machineclaw1_upperarm);
$sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover
//20
$sp_m2_arm.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE );
$machineclaw1_forearm.rotateOnce ( '25 0 0' );
sys.wait (.5);
//21
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 0 -10' );
// sys.waitFor ($machineclaw1_upperarm);
// reload 3
$sp_m2_reloader.startSoundShader ("tb_reloader1", SND_CHANNEL_VOICE );
$reloader.move ( DOWN, 32 );
sys.waitFor ($reloader);
//22
$sp_m2_reloader.startSoundShader ("tb_reloader2", SND_CHANNEL_VOICE2 );
$reloader.move ( UP, 32 );
$can_clean3.time (.25);
$can_clean3.move ( UP, 32 );
$can_clean3.time (1);
// move machineclaw1 from filter pick up spot to filterpoint1
//23
$sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint2 );
sys.waitFor ($machineclaw1_carrier_anchor);
//24
$machineclaw1_carrier_anchor.rotateOnce ( '0 90 0' );
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 -45 0' );
sys.waitFor ($machineclaw1_carrier_anchor);
//25
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_filterpoint1 );
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '-5 -45 -15' );
$sp_m2_rev.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 );
$machineclaw1_forearm.rotateOnce ( '-15 0 0' );
sys.waitFor ($machineclaw1_carrier_anchor);
$sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover
// filterchamber movement up and rotate 45 degrees for filter removal
//26
$chamberpivot1.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE2 );
$chamberpivot1.move ( UP, 42 );
sys.waitFor ($chamberpivot1);
//26a
$filterchamber.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE2 );
$filterchamber.rotateOnce ( '45 0 0');
sys.waitFor ($filterchamber);
// exchange filter 1
//27
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '30 0 0' );
$sp_m2_rev.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 );
$machineclaw1_forearm.rotateOnce ( '-20 0 0' );
// $machineclaw1_hand.rotateOnce ( '-5 0 0' );
$machineclaw1_hand.rotateOnce ( '-12 0 0' );
sys.waitFor ($machineclaw1_upperarm);
//28
$sp_m2_arm.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 0 15' );
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_revolver.rotateOnce ( '0 90 0');
sys.waitFor ($machineclaw1_upperarm);
//get old filter
//29
$can_dirty1.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE );
$can_dirty1.moveTo ( $canspot3 );
$machineclaw1_steam1.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
sys.waitFor ($can_dirty1);
$can_dirty1.unbind ();
$can_dirty1.bind ( $machineclaw1_revolver );
sys.wait (.5);
//30
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_revolver.rotateOnce ( '0 180 0');
sys.waitFor ($machineclaw1_revolver);
//steam
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
$machineclaw1_steam2.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
//insert new filter
//31
$can_clean1.startSoundShader ("tb_whompout", SND_CHANNEL_VOICE2 );
$can_clean1.moveTo ( $chamber_filterspot1 );
sys.waitFor ($can_clean1);
$can_clean1.unbind ();
$can_clean1.bind ( $chamber_filterspot1 );
// move machineclaw1 from filterpoint1 to filterpoint2
//32
$sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_filterpoint2 );
sys.waitFor ($machineclaw1_carrier_anchor);
$sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover
// exchange filter 2
//33
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE2 );
$machineclaw1_revolver.rotateOnce ( '0 -270 0');
sys.waitFor ($machineclaw1_revolver);
//steam
//34
$machineclaw1_steam1.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
//get old filter
$can_ditry2.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE );
$can_dirty2.moveTo ( $canspot4 );
sys.waitFor ($can_dirty2);
$can_dirty2.unbind ();
$can_dirty2.bind ( $machineclaw1_revolver );
sys.wait (.5);
//35
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_revolver.rotateOnce ( '0 180 0');
sys.waitFor ($machineclaw1_revolver);
//steam
$machineclaw1_steam2.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
//insert new filter
//36
$can_clean2.startSoundShader ("tb_whompout", SND_CHANNEL_VOICE2 );
$can_clean2.moveTo ( $chamber_filterspot2 );
sys.waitFor ($can_clean2);
$can_clean2.unbind ();
$can_clean2.bind ( $chamber_filterspot2 );
sys.wait (1);
// move machineclaw1 from filterpoint2 to dump spot
//37
$sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint3 );
$sp_m2_arm.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE );
$machineclaw1_forearm.rotateOnce ( '40 0 0' );
sys.waitFor ($machineclaw1_carrier_anchor);
//38
$machineclaw1_carrier_anchor.rotateOnce ( '0 90 0' );
sys.waitFor ($machineclaw1_carrier_anchor);
//39
$machineclaw1_carrier.rotateOnce ( '0 -90 0' );
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint4 );
$sp_m2_rev.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_forearm.rotateOnce ( '-17 0 0' );
$sp_m2_arm.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '-15 0 -18' );
sys.waitFor ($machineclaw1_carrier_anchor);
$sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover
//40
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_hand.rotateOnce ( '39 16 0' );
sys.waitFor ($machineclaw1_hand);
// dump old filters
//move cradles up,down and around
//41
$cradle4.startSoundShader ("al4_welder_armrot_1s", SND_CHANNEL_VOICE );
$cradle4.rotateOnce ( '0 0 180' );
$cradle5.move ( DOWN, 32 );
$cradle6.move ( DOWN, 32 );
thread cradle_rotate ( $cradle1 );
$cradle2.move ( UP, 32 );
$cradle3.move ( UP, 32 );
sys.waitFor ($cradle2);
sys.killthread ( "map_enpro::cradle_rotate" );
$can_dirty4.unbind ();
$can_dirty4.remove ();
//put dirty1 on cradle1
//42
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_revolver.rotateOnce ( '0 -90 0' );
sys.waitFor ($machineclaw1_revolver);
//steam
//42a
$machineclaw1_steam1.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
$can_dirty1.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE );
$can_dirty1.moveTo ( $cradlespot );
sys.waitFor ($can_dirty1);
$can_dirty1.unbind ();
$can_dirty1.bind ( $cradle1 );
//move cradles around again
//43
$cradle5.startSoundShader ("al4_welder_armrot_1s", SND_CHANNEL_VOICE );
$cradle5.rotateOnce ( '0 0 180' );
$cradle6.move ( DOWN, 32 );
$cradle1.move ( DOWN, 32 );
thread cradle_rotate ( $cradle2 );
$cradle3.move ( UP, 32 );
$cradle4.move ( UP, 32 );
sys.waitFor ($cradle3);
sys.killthread ( "map_enpro::cradle_rotate" );
$can_dirty5.unbind ();
$can_dirty5.remove ();
//put dirty2 on cradle2
//44
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_revolver.rotateOnce ( '0 630 0' );
sys.waitFor ($machineclaw1_revolver);
//steam
//44a
$machineclaw1_steam2.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
$can_dirty.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE );
$can_dirty2.moveTo ( $cradlespot );
sys.waitFor ($can_dirty2);
$can_dirty2.unbind ();
$can_dirty2.bind ( $cradle2 );
//move cradles around again - last time
//45
$cradle6.startSoundShader ("al4_welder_armrot_1s", SND_CHANNEL_VOICE );
$cradle6.rotateOnce ( '0 0 180' );
$cradle1.move ( DOWN, 32 );
$cradle2.move ( DOWN, 32 );
thread cradle_rotate ( $cradle3 );
$cradle4.move ( UP, 32 );
$cradle5.move ( UP, 32 );
sys.waitFor ($cradle4);
sys.killthread ( "map_enpro::cradle_rotate" );
$can_dirty6.unbind ();
$can_dirty6.remove ();
// filterchamber rotate 45 degrees and movement down back to original position
//46
$filterchamber.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE );
$filterchamber.rotateOnce ( '-45 0 0');
sys.waitFor ($filterchamber);
//47
$chamberpivot1.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE );
$chamberpivot1.move ( DOWN, 42 );
sys.waitFor ($chamberpivot1);
sys.trigger ($tube_particle_3);
sys.trigger ($tube_particle_4);
sys.trigger ($tube_particle_5);
sys.trigger ($tube_particle_6);
sys.trigger ($plasmacontrol_light2);
sys.trigger ($plasmacontrol_light3);
}
/////////////////////////////////////
/////////// exit airlock door
/////////////////////////////////////
void exit_open()
{ //disable the gui on door2
$airlock_door2_gui.setGuiParm ( "gui_parm1" , 0);
//move the 4 locks to unlock position
$airlock_door2_top_lock.move ( UP, 15 );
sys.trigger ($speaker_airlock_door2_bottom_lock); // sound
$airlock_door2_bottom_lock.move ( DOWN, 15 );
sys.waitFor ($airlock_door2_bottom_lock);
sys.trigger ($speaker_airlock_door2_left_lock);
$airlock_door2_left_lock.move ( NORTH, 16 );
sys.trigger ($speaker_airlock_door2_right_lock);
$airlock_door2_right_lock.move ( NORTH, 16 );
sys.waitFor ($airlock_door2_right_lock);
//open doors
sys.trigger ($speaker_airlock_door2_open);
$airlock_door2_left.rotateOnce ( '0 45 0' );
$airlock_door2_right.rotateOnce ( '0 -45 0' );
sys.waitFor ($airlock_door2_right);
sys.waitFor ($airlock_door2_left);
}
void main()
{
cache_sounds();
setup_objects();
}
}
File diff suppressed because it is too large Load Diff
+369
View File
@@ -0,0 +1,369 @@
namespace map_hellhole {
void move_entrance_lift()
{
//level load lift
$hellhole_start_lift.time(10);
$hellhole_start_lift.accelTime(.5);
$hellhole_start_lift.decelTime(.5);
$hellhole_start_lift.move(DOWN, 1280);
}
void move_first_doors()
{
sys.trigger($hhbrickdoors1_portal);
$hhbrickdoor_1.accelTime(.5);
$hhbrickdoor_1.decelTime(.5);
$hhbrickdoor_2.accelTime(.5);
$hhbrickdoor_2.decelTime(.5);
$hhbrickdoor_1.time(1);
$hhbrickdoor_1.startSoundShader ("hh_door_movement_1", SND_CHANNEL_VOICE2 );
$hhbrickdoor_1.move(WEST, 32);
$hhbrickdoor_2.time (1);
$hhbrickdoor_2.move(WEST, 32);
sys.waitFor($hhbrickdoor_1);
$hhbrickdoor_1.time(2);
$hhbrickdoor_1.startSoundShader ("hh_door_movement_2", SND_CHANNEL_VOICE );
$hhbrickdoor_1.move(SOUTH, 64);
$hhbrickdoor_2.time (2);
$hhbrickdoor_2.move(NORTH, 64);
sys.waitFor($hhbrickdoor_1);
}
void move_first_doors_close()
{
$hhbrickdoor_1.accelTime(.5);
$hhbrickdoor_1.decelTime(.5);
$hhbrickdoor_2.accelTime(.5);
$hhbrickdoor_2.decelTime(.5);
$hhbrickdoor_1.time(2);
$hhbrickdoor_1.startSoundShader ("hh_door_movement_2", SND_CHANNEL_VOICE2 );
$hhbrickdoor_1.move(NORTH, 64);
$hhbrickdoor_2.time (2);
$hhbrickdoor_2.move(SOUTH, 64);
sys.waitFor($hhbrickdoor_1);
$hhbrickdoor_1.time(1);
$hhbrickdoor_1.startSoundShader ("hh_door_movement_1", SND_CHANNEL_VOICE );
$hhbrickdoor_1.move(EAST, 32);
$hhbrickdoor_2.time (1);
$hhbrickdoor_2.move(EAST, 32);
sys.waitFor($hhbrickdoor_1);
sys.trigger($hhbrickdoors1_portal);
}
void hellevator_down()
{
$hellevator.startSoundShader ("hh_rockride_8s", SND_CHANNEL_VOICE );
$hellevator.time(8);
$hellevator.accelTime(5);
$hellevator.decelTime(.5);
$hellevator.move(DOWN, 2020);
}
void move_next_doors_open()
{
sys.trigger($hhbrickdoors2_portal);
$hhbrickdoor_3.accelTime(.5);
$hhbrickdoor_3.decelTime(.5);
$hhbrickdoor_4.accelTime(.5);
$hhbrickdoor_4.decelTime(.5);
$hhbrickdoor_3.startSoundShader ("hh_door_movement_3s", SND_CHANNEL_VOICE);
$hhbrickdoor_3.time(3);
$hhbrickdoor_3.move(NORTH, 32);
$hhbrickdoor_4.time (3);
$hhbrickdoor_4.move(NORTH, 32);
sys.waitFor($hhbrickdoor_3);
$hhbrickdoor_3.time(5);
$hhbrickdoor_3.startSoundShader ("hh_door_movement_5s", SND_CHANNEL_VOICE2);
$hhbrickdoor_3.move(WEST, 64);
$hhbrickdoor_4.time (5);
$hhbrickdoor_4.move(EAST, 64);
sys.waitFor($hhbrickdoor_3);
}
void move_next_doors_close()
{
$hhbrickdoor_3.accelTime(.5);
$hhbrickdoor_3.decelTime(.5);
$hhbrickdoor_4.accelTime(.5);
$hhbrickdoor_4.decelTime(.5);
$hhbrickdoor_3.time(5);
$hhbrickdoor_3.startSoundShader ("hh_door_movement_5s", SND_CHANNEL_VOICE);
$hhbrickdoor_3.move(EAST, 64);
$hhbrickdoor_4.time (5);
$hhbrickdoor_4.move(WEST, 64);
sys.waitFor($hhbrickdoor_3);
$hhbrickdoor_3.time(3);
$hhbrickdoor_3.startSoundShader ("hh_door_movement_3s", SND_CHANNEL_VOICE2);
$hhbrickdoor_3.move(SOUTH, 32);
$hhbrickdoor_4.time (3);
$hhbrickdoor_4.move(SOUTH, 32);
sys.waitFor($hhbrickdoor_3);
sys.trigger($hhbrickdoors2_portal);
}
void move_last_doors_open()
{
sys.trigger($hhbrickdoors3_portal);
$hhbrickdoor_5.accelTime(.5);
$hhbrickdoor_5.decelTime(.5);
$hhbrickdoor_6.accelTime(.5);
$hhbrickdoor_6.decelTime(.5);
$hhbrickdoor_5.time(3);
$hhbrickdoor_5.startSoundShader ("hh_door_movement_3s", SND_CHANNEL_VOICE2);
$hhbrickdoor_5.move(NORTH, 32);
$hhbrickdoor_6.time (3);
$hhbrickdoor_6.move(NORTH, 32);
sys.waitFor($hhbrickdoor_5);
$hhbrickdoor_5.time(5);
$hhbrickdoor_5.startSoundShader ("hh_door_movement_5s", SND_CHANNEL_VOICE);
$hhbrickdoor_5.move(WEST, 64);
$hhbrickdoor_6.time (5);
$hhbrickdoor_6.move(EAST, 64);
sys.waitFor($hhbrickdoor_5);
}
void move_last_doors_close()
{
$hhbrickdoor_5.accelTime(.5);
$hhbrickdoor_5.decelTime(.5);
$hhbrickdoor_6.accelTime(.5);
$hhbrickdoor_6.decelTime(.5);
$hhbrickdoor_5.time(5);
$hhbrickdoor_5.startSoundShader ("hh_door_movement_5s", SND_CHANNEL_VOICE2);
$hhbrickdoor_5.move(EAST, 64);
$hhbrickdoor_6.time (5);
$hhbrickdoor_6.move(WEST, 64);
sys.waitFor($hhbrickdoor_5);
$hhbrickdoor_5.time(3);
$hhbrickdoor_5.startSoundShader ("hh_door_movement_3s", SND_CHANNEL_VOICE);
$hhbrickdoor_5.move(SOUTH, 32);
$hhbrickdoor_6.time (3);
$hhbrickdoor_6.move(SOUTH, 32);
sys.waitFor($hhbrickdoor_5);
sys.trigger($hhbrickdoors3_portal);
}
void move_id_brick()
{
$id_brick.accelTime(.2);
$id_brick.decelTime(.2);
$id_brick.time(1.5);
$id_brick.startSoundShader ("hh_door_movement_3s", SND_CHANNEL_VOICE2);
$id_brick.move(NORTH, 16);
$id_brick.time (1.5);
sys.waitFor($id_brick);
}
void move_id_door()
{
$id_door.accelTime(.5);
$id_door.decelTime(.5);
$id_door.time(3);
$id_door.startSoundShader ("hh_door_movement_3s", SND_CHANNEL_VOICE2);
$id_door.move(WEST, 32);
$id_door.time (3);
sys.waitFor($id_door);
$id_door.time(5);
$id_door.startSoundShader ("hh_door_movement_5s", SND_CHANNEL_VOICE);
$id_door.move(UP, 128);
$id_door.time (5);
sys.waitFor($id_door);
}
void spark_mover ()
{
//turn on the sparks
sys.trigger ($doorsparks);
//move the sparkmover down and wait for it to finish
$sparkmover.move (DOWN, 116);
sys.waitFor ($sparkmover);
//turn off the sparks
sys.trigger ($doorsparks);
}
void harden_lava( entity ent, float parm, float fromValue, float toValue, float totalTime ) {
float i;
float frac;
float numTics;
// customized for the shader "textures/hell/hellhole_lavascroll_fade"
// convert to the total number of game tics
numTics = totalTime * sys.getTicsPerSecond();
float parm3 = fromValue;
float parm5 = sys.getTime()*-0.2;
float parm6 = sys.getTime()*-0.1;
float parm7 = -sys.getTime();
for( i = 0; i < numTics; i++ ) {
parm5 = (sys.getTime()+parm7)*(-0.2*parm3)+parm5;
parm6 = (sys.getTime()+parm7)*(-0.1*parm3)+parm6;
parm7 = -sys.getTime();
frac = i / numTics;
parm3 = toValue * frac + fromValue * ( 1 - frac );
ent.setShaderParm( 3, parm3 );
ent.setShaderParm( 5, parm5 );
ent.setShaderParm( 6, parm6 );
ent.setShaderParm( 7, parm7 );
// wait one game frame
sys.waitFrame();
}
// make sure we are set to exactly the destination value
parm3 = toValue;
parm5 = (sys.getTime()+parm7)*(-0.2*parm3)+parm5;
parm6 = (sys.getTime()+parm7)*(-0.1*parm3)+parm6;
parm7 = -sys.getTime();
ent.setShaderParm( 3, parm3 );
ent.setShaderParm( 5, parm5 );
ent.setShaderParm( 6, parm6 );
ent.setShaderParm( 7, parm7 );
}
void interpolateRocksShader( entity ent, float parm, float fromValue, float toValue, float totalTime ) {
float i;
float value;
float frac;
float numTics;
// convert to the total number of game tics
numTics = totalTime * sys.getTicsPerSecond();
for( i = 0; i < numTics; i++ ) {
frac = i / numTics;
value = toValue * frac + fromValue * ( 1 - frac );
ent.setShaderParm( parm, value );
// wait one game frame
sys.waitFrame();
}
// make sure we are set to exactly the destination value
ent.setShaderParm( parm, toValue );
}
void fade_lava_thread() {
harden_lava( $hellhole_cyberdeathrocks_2, 3, 1, 0, 3 );
thread fadeOutEnt( $func_static_808, '1 1 1', 1 );
interpolateRocksShader( $hellhole_cyberdeathrocks_2, 0, 1, 0, 1 );
}
void fade_lava() {
thread fade_lava_thread();
}
void cache_sounds() {
sys.cacheSoundShader ("hh_rockride_8s");
sys.cacheSoundShader ("hh_door_movement_3s");
sys.cacheSoundShader ("hh_door_movement_5s");
sys.cacheSoundShader ("hh_door_movement_1");
sys.cacheSoundShader ("hh_door_movement_2");
}
void fade_final_room_down() {
$hhs_1.fadeSound (SND_CHANNEL_ANY, -60, 5);
$hhs_2.fadeSound (SND_CHANNEL_ANY, -60, 5);
$hhs_3.fadeSound (SND_CHANNEL_ANY, -60, 5);
$hhs_4.fadeSound (SND_CHANNEL_ANY, -60, 5);
$hhs_5.fadeSound (SND_CHANNEL_ANY, -60, 5);
$hhs_6.fadeSound (SND_CHANNEL_ANY, -60, 5);
$hhs_7.fadeSound (SND_CHANNEL_ANY, -60, 5);
$hhs_8.fadeSound (SND_CHANNEL_ANY, -60, 5);
$hhs_9.fadeSound (SND_CHANNEL_ANY, -60, 5);
$hhs_10.fadeSound (SND_CHANNEL_ANY, -60, 5);
$hhs_11.fadeSound (SND_CHANNEL_ANY, -60, 5);
$hhs_12.fadeSound (SND_CHANNEL_ANY, -60, 5);
$hhs_13.fadeSound (SND_CHANNEL_ANY, -60, 5);
$speaker_60.fadeSound (SND_CHANNEL_ANY, -60, 5);
$speaker_64.fadeSound (SND_CHANNEL_ANY, -60, 5);
$speaker_67.fadeSound (SND_CHANNEL_ANY, -60, 5);
$speaker_70.fadeSound (SND_CHANNEL_ANY, -60, 5);
}
void fade_final_room_up() {
$hhs_1.fadeSound (SND_CHANNEL_ANY, -1, 5);
$hhs_2.fadeSound (SND_CHANNEL_ANY, -1, 5);
$hhs_3.fadeSound (SND_CHANNEL_ANY, -1, 5);
$hhs_4.fadeSound (SND_CHANNEL_ANY, -1, 5);
$hhs_5.fadeSound (SND_CHANNEL_ANY, -1, 5);
$hhs_6.fadeSound (SND_CHANNEL_ANY, -1, 5);
$hhs_7.fadeSound (SND_CHANNEL_ANY, -1, 5);
$hhs_8.fadeSound (SND_CHANNEL_ANY, -1, 5);
$hhs_9.fadeSound (SND_CHANNEL_ANY, -1, 5);
$hhs_10.fadeSound (SND_CHANNEL_ANY, -1, 5);
$hhs_11.fadeSound (SND_CHANNEL_ANY, -1, 5);
$hhs_12.fadeSound (SND_CHANNEL_ANY, -1, 5);
$hhs_13.fadeSound (SND_CHANNEL_ANY, -1, 5);
$speaker_60.fadeSound (SND_CHANNEL_ANY, -1, 5);
$speaker_64.fadeSound (SND_CHANNEL_ANY, -1, 5);
$speaker_67.fadeSound (SND_CHANNEL_ANY, -1, 5);
$speaker_70.fadeSound (SND_CHANNEL_ANY, -1, 5);
}
void fadeup_thread() {
$speaker_29.fadeSound (SND_CHANNEL_ANY, -60, 5); // Fade this speaker down first...
sys.wait (10);
thread fade_final_room_up();
}
void main ()
{
//bind_objects();
//init_world();
sys.setcvar( "g_nightmare", "1" );
cache_sounds();
thread move_entrance_lift();
thread fade_final_room_down();
}
}
+341
View File
@@ -0,0 +1,341 @@
namespace map_marscity1 {
void cache_sounds() {
sys.cacheSoundShader ("mc1_scanner_rot1s");
sys.cacheSoundShader ("mc1_scanner_3s_movement");
sys.cacheSoundShader ("entrance_scanner_loop");
sys.trigger ($speaker_mouse); // Turn it off...
}
void toggle_intro_sounds() {
sys.print ("Toggling speakers\n");
sys.trigger ($speaker_83);
sys.trigger ($speaker_84);
sys.trigger ($speaker_85);
sys.trigger ($speaker_86);
sys.trigger ($speaker_87);
sys.trigger ($speaker_88);
sys.trigger ($speaker_89);
sys.trigger ($speaker_90);
sys.trigger ($speaker_91);
sys.trigger ($speaker_92);
}
//turret gun movement
void turret_loop() {
while(1)
{
$security_cannon.time( 3 );
$security_cannon.accelTime( 0 );
$security_cannon.decelTime( .25 );
$security_cannon.rotateOnce( '0 -30 0' );
sys.waitFor($security_cannon);
sys.wait(.5);
$security_cannon.rotateOnce( '0 30 0' );
sys.waitFor($security_cannon);
sys.wait(.5);
}
}
// mars city mice movers
void Startmouse1() {
while(1)
{
$mc_mouse1.time( 15 );
$mc_mouse1.accelTime( 0 );
$mc_mouse1.decelTime( 0 );
sys.trigger ($speaker_mouse); // Turn it on...
$mc_mouse1.startSpline( $func_splinemover_3 );
sys.waitFor($mc_mouse1);
sys.trigger ($speaker_mouse); // Turn it off...
sys.wait(60);
$mc_mouse1.removeInitialSplineAngles();
}
}
// function for starting shutters1 sound
void sound_shutter1_start()
{
sys.trigger ($speaker_shutters);
}
// function for stopping shutters1 sound
void sound_shutter1_stop()
{
//sys.trigger ($speaker_shutters);
}
void kitchenlightsoff()
{
sys.wait(1);
$kitchen_swinglight_1.fadeOutLight(2);
$kitchen_swinglight_2.fadeOutLight(2);
$kitchen_swinglight_3.fadeOutLight(2);
$kitchen_swinglight_4.fadeOutLight(2);
$kitchen_swinglight_5.fadeOutLight(2);
$kitchen_swinglight_6.fadeOutLight(2);
}
void windshutter1_open()
{
//start the kitchen lights fading
thread kitchenlightsoff();
/// starting shutter sound
thread sound_shutter1_start();
//might need this later
//$windshutter1_gui.setGuiParm( "gui_parm1" , windstatus1);
//fade in the bounce lightlight
$shutter_bounce_light.fadeInLight(1.5);
//times for shutters opening
$windshutter1_1.time(1.5);
$windshutter1_1.accelTime(1);
$windshutter1_1.decelTime(.5);
$windshutter1_2.time(1.5);
$windshutter1_2.accelTime(1);
$windshutter1_2.decelTime(.5);
// Going up
$windshutter1_1.rotateOnce( '180 0 0' );
sys.wait(0.5);
$windshutter1_2.rotateOnce( '180 0 0' );
sys.waitFor($windshutter1_2);
// stopping shutter sound
thread sound_shutter1_stop();
}
void kitchenlightson()
{
sys.wait(3);
$kitchen_swinglight_1.fadeInLight(2);
$kitchen_swinglight_2.fadeInLight(2);
$kitchen_swinglight_3.fadeInLight(2);
$kitchen_swinglight_4.fadeInLight(2);
$kitchen_swinglight_5.fadeInLight(2);
$kitchen_swinglight_6.fadeInLight(2);
}
void windshutter1_close()
{
//start the kitchen lights fading
thread kitchenlightson();
// starting shutter sound
thread sound_shutter1_start();
// Fade bounce light
$shutter_bounce_light.fadeOutLight(3);
//times for shutters closing
$windshutter1_1.time(3);
$windshutter1_1.accelTime(2);
$windshutter1_1.decelTime(1);
$windshutter1_2.time(3);
$windshutter1_2.accelTime(2);
$windshutter1_2.decelTime(1);
// Going down
$windshutter1_1.rotateOnce( '-180 0 0' );
sys.wait(0.25);
$windshutter1_2.rotateOnce( '-180 0 0' );
sys.waitFor($windshutter1_2);
// stopping shutter sound
thread sound_shutter1_stop();
}
////////////////////////////////////////////////////
//
// Mars City Bio Scanners
//
////////////////////////////////////////////////////
void bioscan_lockdoors ()
{
//close both doors
$func_door_1.close();
$func_door_9.close();
//lock both doors
$func_door_1.lock(2);
$func_door_9.lock(2);
//trigger the relay to remove things in the Hangar
sys.trigger ( $trigger_remove_floods );
//change gui and shader parms on doors
$func_static_4456.setShaderParm (7, 0);
$func_static_929.setShaderParm (7, 0);
$func_door_1.setGuiParm ( "gui_parm3" , 0);
$func_door_1.setShaderParm (7, 0);
$func_door_9.setGuiParm ( "gui_parm3" , 0);
$func_door_9.setShaderParm (7, 0);
}
void bioscan_opendoor ()
{
//trigger the lights to fade
sys.trigger($bioscan_fadein);
//slight delay to make sure the sentry is in motion
//before the doors open
sys.wait(.85);
//unlock door
$func_door_9.lock(0);
//open door
$func_door_9.open();
//lock the little room door
$func_door_11.lock(2);
//change gui parms on doors
$func_door_9.setGuiParm ( "gui_parm3" , 1);
$func_door_9.setShaderParm (7, 1);
$func_static_4456.setShaderParm (7, 1);
toggle_intro_sounds(); // Trigger the start sounds on when the player gets to this point
turret_loop(); // Start the turret looping here...
}
void bioscan_go ()
{
//trigger the particles
$scan_lazmodel_1.startSoundShader ("entrance_scanner_loop", SND_CHANNEL_VOICE );
$scan_lazmodel_2.startSoundShader ("entrance_scanner_loop", SND_CHANNEL_VOICE );
sys.trigger($scan_particle_1);
sys.trigger($scan_particle_2);
//change the gui on bioscanner
sys.trigger($bio_scanner);
//trigger the lights to fade
sys.trigger($bioscan_fadeout);
sys.wait(.4);
//trigger the laser models to unhide them
sys.trigger($scan_lazmodel_1);
sys.trigger($scan_lazmodel_2);
//set times
//up 64 scan_anchor
$scan_anchor.time (1);
$scan_anchor.startSoundShader ("mc1_scanner_3s_movement", SND_CHANNEL_VOICE);
$scan_anchor.move ( UP, 64 );
sys.waitFor ($scan_anchor);
//rotate 90 scan_anchor
$scan_anchor.rotateOnce ( '0 0 -90' );
sys.waitFor ($scan_anchor);
//move 24 scan_anchor
$scan_anchor.move ( SOUTH, -24 );
sys.waitFor ($scan_anchor);
//rotate 720 scan_thing_1
$scan_thing_1.startSoundShader ("mc1_scanner_rot1s", SND_CHANNEL_VOICE);
$scan_thing_1.rotateOnce ( '360 0 0' );
//rotate 720 scan_thing_2
$scan_thing_2.startSoundShader ("mc1_scanner_rot1s", SND_CHANNEL_VOICE);
$scan_thing_2.rotateOnce ( '360 0 0' );
//wait for rotating to stop and a bit extra
sys.waitFor ($scan_thing_1);
sys.wait (1);
//move 24 scan_anchor
$scan_anchor.startSoundShader ("mc1_scanner_3s_movement", SND_CHANNEL_VOICE);
$scan_anchor.move ( SOUTH, 24 );
sys.waitFor ($scan_anchor);
//rotate 90 scan_anchor
$scan_anchor.rotateOnce ( '0 0 90' );
sys.waitFor ($scan_anchor);
//down 64 scan_anchor
$scan_anchor.move ( DOWN, 64 );
sys.waitFor ($scan_anchor);
//trigger the particles
sys.trigger($scan_particle_1);
sys.trigger($scan_particle_2);
sys.wait(2);
//trigger the laser models to hide them
$scan_lazmodel_1.stopSound (SND_CHANNEL_VOICE, false);
sys.trigger($scan_lazmodel_1);
$scan_lazmodel_2.stopSound (SND_CHANNEL_VOICE, false);
sys.trigger($scan_lazmodel_2);
}
void bioscan_noreturn ()
{
//close both doors
$func_door_9.close();
//lock both doors
$func_door_9.lock(2);
//change gui parms on doors
$func_door_9.setGuiParm ( "gui_parm3" , 0);
$func_door_9.setShaderParm (7, 0);
$func_static_4456.setShaderParm (7, 0);
}
void show_pda ()
{
$player_pda.show();
}
//move fog brush in the hanger
void move_hangar_fog ()
{
$hanger_fog_mover.time( 5 );
$hanger_fog_mover.move( UP, 320 );
}
////////////////////////////////////////////////////
//
// MAIN
//
////////////////////////////////////////////////////
void main () {
cache_sounds();
//setup_objects ();
//init_world();
}
}
+61
View File
@@ -0,0 +1,61 @@
namespace map_marscity2
{
float request_speaker = 1;
void lower_airlock_ladder()
{
sys.wait( 2 );
sys.trigger( $snd_ladder_move );
$airlock_ladder.move( DOWN, 102 );
}
void video_request_speaker()
{
float sound_length;
while (request_speaker == 1)
{
sound_length = $speaker_280.startSoundShader ("marscity2_comp_vidconnect_req", SND_CHANNEL_VOICE2 );
sys.wait (sound_length);
sys.wait( 1 );
}
}
void connect_sarge_speaker()
{
request_speaker = 0;
$speaker_280.stopSound ( SND_CHANNEL_VOICE2, false );
sys.trigger( $sarge_monitor );
//sys.wait( 1.5 );
sys.trigger( $speaker_281 );
sys.wait( .25);
sys.trigger( $speaker_282 );
sys.trigger( $sarge_monitor );
sys.trigger( $trigger_relay_111 );
}
void loop_steamblast1()
{
while (1)
{
sys.trigger( $steamblast_1 );
sys.trigger( $steamblast_1_snd );
sys.wait( 2 );
sys.trigger( $steamblast_1 );
sys.trigger( $steamblast_1_snd );
sys.wait( 7 );
}
}
//*********************************
// MAIN
//*********************************
void main()
{
thread video_request_speaker();
//setup_objects ();
//init_world();
}
}
File diff suppressed because it is too large Load Diff
+946
View File
@@ -0,0 +1,946 @@
namespace map_monorail
{
#define TRAIN_SPEED 300
#define CAGE_SPEED 150
#define TRAIN_FINAL_SPEED 800
#define TRAIN_ANCHOR monorail_anchor
#define TRAIN_BLINK 0.1
#define TRAIN_BLINK2 0.1
float TURRETS_ACTIVE = 0;
float TRAIN_MOVING = 0;
float TRAIN_PHASE = 1; // 1 = 1st stretch, 2 = 2nd stretch
float LLIGHT_STATE = 1; // 1 = ON, 2 = OFF
float LIGHT_FADEIN_TIME = 8;
float LIGHT_FADEOUT_TIME = 0.05;
float GO_PATTERN_1 = TRUE;
float GO_PATTERN_3 = TRUE;
float gf_Site2_Warning = TRUE;
float warning_speaker = 1;
void loop_site2_warning()
{
while (gf_Site2_Warning)
{
sys.wait (60);
if (gf_Site2_Warning == FALSE)
return;
sys.trigger ($speaker_site2_warning);
}
}
void turret_active_speaker()
{
float sound_length;
while (warning_speaker == 1)
{
sound_length = $speaker_165.startSoundShader ("monorail_computer_turrets_on", SND_CHANNEL_VOICE2 );
sys.wait (sound_length);
if ( warning_speaker == 0)
//thread turret_deactivate_speaker();
return;
sys.wait( 10 );
}
}
void turret_deactivate_speaker()
{
$speaker_165.stopSound ( SND_CHANNEL_VOICE2, false );
sys.wait (0.75);
$speaker_165.startSoundShader("monorail_computer_turrets_off", SND_CHANNEL_VOICE2);
}
void activate_turret()
{
if (TURRETS_ACTIVE == 1)
return;
//sys.print (" !!!!! ENTERING ACTIVATE_TURRETS() !!!!!\n");
$tunnel_anchor_1.rotate ('0 360 0');
$light_tunnel_1.On();
$light_tunnel_1_spin.On();
sys.trigger ($monster_turret_1);
sys.trigger ($turret_speaker);
TURRETS_ACTIVE = 1;
}
void deactivate_turret()
{
if ( TURRETS_ACTIVE == 1 )
{
//sys.print (" !!!!! DEACTIVATING TURRETS !!!!!\n");
GO_PATTERN_1 = FALSE;
GO_PATTERN_3 = FALSE;
$security_light.setColor (0.5,0.5,0.5);
$tunnel_anchor_1.rotate ('0 0 0');
$light_tunnel_1.Off();
$light_tunnel_1_spin.Off();
sys.trigger ($monster_turret_1);
sys.trigger ($turret_speaker);
sys.trigger ($target_entity_setcolor_1);
warning_speaker = 0;
thread turret_deactivate_speaker();
//will this remove the scanner beam???
$bs1_start.remove ();
$bs1_end.remove ();
$bs2_start.remove ();
$bs2_end.remove ();
}
}
void pattern1()
{
float x, y, i, tmp;
entity px, py;
entity ox, oy;
vector vec_ox, vec_oy;
while (GO_PATTERN_1)
{
for (i=1; i<=16; i++)
{
tmp = ( i + 4 );
y=tmp;
if ( (i+4) > 16 )
y = (i+4) - 16;
x=i;
//sys.print ("x=" + x + " :: y=" + y + "\n");
ox = sys.getEntity ("fp" + i);
oy = sys.getEntity ("fp" + y);
vec_ox = ox.getOrigin();
vec_oy = oy.getOrigin();
sys.trigger ($bs1_start); // Turn off
$bs1_start.setOrigin (vec_ox);
$bs1_end.setOrigin (vec_oy);
sys.trigger ($bs1_start); // Turn on
sys.wait (TRAIN_BLINK);
sys.trigger ($bs1_start); // Make sure we turn off the last beam
}
}
}
void pattern3()
{
float x, y, i, tmp;
entity px, py;
entity ox, oy;
vector vec_ox, vec_oy;
while (GO_PATTERN_3)
{
// -- Horizontal Movement
ox = sys.getEntity ("fp1");
oy = sys.getEntity ("fp12");
vec_ox = ox.getOrigin();
vec_oy = oy.getOrigin();
sys.trigger ($bs2_start); // Turn off
$bs2_start.setOrigin (vec_ox);
$bs2_end.setOrigin (vec_oy);
sys.trigger ($bs2_start); // Turn On
sys.wait (TRAIN_BLINK2);
ox = sys.getEntity ("fp2");
oy = sys.getEntity ("fp11");
vec_ox = ox.getOrigin();
vec_oy = oy.getOrigin();
sys.trigger ($bs2_start); // Turn off
$bs2_start.setOrigin (vec_ox);
$bs2_end.setOrigin (vec_oy);
sys.trigger ($bs2_start); // Turn On
sys.wait (TRAIN_BLINK2);
ox = sys.getEntity ("fp3");
oy = sys.getEntity ("fp10");
vec_ox = ox.getOrigin();
vec_oy = oy.getOrigin();
sys.trigger ($bs2_start); // Turn off
$bs2_start.setOrigin (vec_ox);
$bs2_end.setOrigin (vec_oy);
sys.trigger ($bs2_start); // Turn On
sys.wait (TRAIN_BLINK2);
ox = sys.getEntity ("fp4");
oy = sys.getEntity ("fp9");
vec_ox = ox.getOrigin();
vec_oy = oy.getOrigin();
sys.trigger ($bs2_start); // Turn off
$bs2_start.setOrigin (vec_ox);
$bs2_end.setOrigin (vec_oy);
sys.trigger ($bs2_start); // Turn On
sys.wait (TRAIN_BLINK2);
// -- Vertical Movement
ox = sys.getEntity ("fp16");
oy = sys.getEntity ("fp5");
vec_ox = ox.getOrigin();
vec_oy = oy.getOrigin();
sys.trigger ($bs2_start); // Turn off
$bs2_start.setOrigin (vec_ox);
$bs2_end.setOrigin (vec_oy);
sys.trigger ($bs2_start); // Turn On
sys.wait (TRAIN_BLINK2);
ox = sys.getEntity ("fp15");
oy = sys.getEntity ("fp6");
vec_ox = ox.getOrigin();
vec_oy = oy.getOrigin();
sys.trigger ($bs2_start); // Turn off
$bs2_start.setOrigin (vec_ox);
$bs2_end.setOrigin (vec_oy);
sys.trigger ($bs2_start); // Turn On
sys.wait (TRAIN_BLINK2);
ox = sys.getEntity ("fp14");
oy = sys.getEntity ("fp7");
vec_ox = ox.getOrigin();
vec_oy = oy.getOrigin();
sys.trigger ($bs2_start); // Turn off
$bs2_start.setOrigin (vec_ox);
$bs2_end.setOrigin (vec_oy);
sys.trigger ($bs2_start); // Turn On
sys.wait (TRAIN_BLINK2);
ox = sys.getEntity ("fp13");
oy = sys.getEntity ("fp8");
vec_ox = ox.getOrigin();
vec_oy = oy.getOrigin();
sys.trigger ($bs2_start); // Turn off
$bs2_start.setOrigin (vec_ox);
$bs2_end.setOrigin (vec_oy);
sys.trigger ($bs2_start); // Turn On
sys.wait (TRAIN_BLINK2);
}
sys.trigger ($bs2_start); // Turn the last one off
}
void train_proceed()
{
TRAIN_MOVING = 3;
/*
$TRAIN_ANCHOR.speed (TRAIN_FINAL_SPEED);
$TRAIN_ANCHOR.accelTime (8);
$TRAIN_ANCHOR.decelTime (0);
*/
$rd_1_1.close();
$rd_3_1.close();
$TRAIN_ANCHOR.time (20);
$TRAIN_ANCHOR.accelTime( 10 );
$TRAIN_ANCHOR.decelTime( 0 );
//$player1.disableWeapon();
$TRAIN_ANCHOR.startSpline( $spline2 );
sys.trigger ($movement_speaker); // Turn movement speaker on
sys.trigger ($squeal_speaker);
sys.waitFor ($TRAIN_ANCHOR);
//$player1.enableWeapon();
sys.trigger ($squeal_speaker);
sys.trigger ($movement_speaker); // Turn movement speaker off
TRAIN_MOVING = 4;
}
// FIXME: This does not work at all. Cannot hide the monorail rider...
void swap_trainzombie()
{
$monorail_rider.hide();
$monorail_rider.remove();
sys.trigger ($monorail_zombie);
}
void bind_objects()
{
}
void init_world()
{
float i;
float j;
entity ent;
float ftemp;
// Disable all the airlock doors for the monorail tracks
for (i=1; i<=12; i++)
{
for (j=1; j<=3; j++)
{
ent = sys.getEntity ( "d" + i + "_" + j );
ent.disable();
}
}
$d11a_1.disable();
$d11a_2.disable();
$d11a_3.disable();
$d12a_1.disable();
$d12a_2.disable();
$d12a_3.disable();
$TRAIN_ANCHOR.speed (TRAIN_SPEED);
//$rot1.time ( CalcTimeForRotationAroundEntity( 1576, 90, TRAIN_SPEED) );
//$rot2.time ( CalcTimeForRotationAroundEntity( 1576, 90, TRAIN_SPEED) );
$ld_1_1.disable();
$ld_1_2.disable();
$ld_2_1.disable();
$ld_2_2.disable();
$ld_3_1.disable();
$ld_3_2.disable();
$ld_4_1.disable();
$ld_4_2.disable();
$rd_1_1.disable();
$rd_1_2.disable();
$rd_2_1.disable();
$rd_2_2.disable();
$rd_3_1.disable();
$rd_3_2.disable();
$rd_4_1.disable();
$rd_4_2.disable();
$indoor_3.disable(); //Opened up by a script later on...
$indoor_4.disable(); //^---- Yeah, what he said...
$ld_1_1.open();
//$ld_3_1.open(); //As per discussion with Tim, lets leave the back doors locked.
//$light1_green.Off();
$boomlight.Off();
$boomlight2.Off();
$boomlight3.Off();
$light_tunnel_1.Off();
$light_tunnel_1_spin.Off();
//hide door clips at start of map
$doorclip_rightFront.hide();
$doorclip_leftFront.hide();
$doorclip_rightRear.hide();
$doorclip_leftRear.hide();
}
void fadein_lights()
{
entity ent;
float i;
for (i=1; i<=10; i++)
{
ent=sys.getEntity ("llight_" + i);
ent.fadeInLight (LIGHT_FADEIN_TIME);
ent=sys.getEntity ("rlight_" + i);
ent.fadeInLight (LIGHT_FADEIN_TIME);
ent=sys.getEntity ("alight_" + i);
ent.fadeInLight (LIGHT_FADEIN_TIME);
ent=sys.getEntity ("tlight_" + i);
ent.fadeInLight (LIGHT_FADEIN_TIME);
}
$last_extralight.fadeInLight (LIGHT_FADEIN_TIME);
}
void toggle_llights()
{
entity ent;
float i;
for (i=1; i<=10; i++)
{
ent=sys.getEntity ("llight_" + i);
if (LLIGHT_STATE == 1)
ent.Off();
else
ent.On();
ent=sys.getEntity ("rlight_" + i);
if (LLIGHT_STATE == 1 )
ent.Off();
else
ent.On();
ent=sys.getEntity ("alight_" + i);
if (LLIGHT_STATE == 1)
ent.Off();
else
ent.On();
ent=sys.getEntity ("tlight_" + i);
if (LLIGHT_STATE == 1)
ent.Off();
else
ent.On();
}
if (LLIGHT_STATE == 1)
{
$TRAIN_ANCHOR_flare_0.hide();
$TRAIN_ANCHOR_flare_2.hide();
$TRAIN_ANCHOR_flare_3.hide();
$TRAIN_ANCHOR_flare_4.hide();
}
else
{
$TRAIN_ANCHOR_flare_0.show();
$TRAIN_ANCHOR_flare_2.show();
$TRAIN_ANCHOR_flare_3.show();
$TRAIN_ANCHOR_flare_4.show();
}
if ( LLIGHT_STATE == 1)
{
LLIGHT_STATE = 0;
}
else
LLIGHT_STATE = 1;
}
void thud_1()
{
sys.trigger ($tspeaker);
//toggle_llights();
sys.fadeOut ('0 0 0', LIGHT_FADEOUT_TIME);
sys.wait (0.5);
sys.fadeIn ('0 0 0', LIGHT_FADEOUT_TIME);
//toggle_llights();
}
void thud_2()
{
sys.trigger ($tspeaker_1);
//toggle_llights();
sys.fadeOut ('0 0 0', LIGHT_FADEOUT_TIME);
sys.wait (0.5);
sys.fadeIn ('0 0 0', LIGHT_FADEOUT_TIME);
//toggle_llights();
}
//After the train crashes, we need to hide stuff and pop in alternate models
void hide_train()
{
sys.trigger ($inside_ambience); // Turn it off
sys.trigger ($xian_speaker_2); // This one too...
$movement_speaker.remove();
$squeal_speaker.remove();
//sys.trigger ($movement_speaker); // Can't forget this one either...
sys.trigger ($train_burning); // Turn on flame sounds
sys.trigger ($train_burning2); // Turn on flame sounds
$bm_monorail.remove();
$ld_1_1.hide();
$ld_1_2.hide();
$ld_2_1.hide();
$ld_2_2.hide();
$ld_3_1.hide();
$ld_3_2.hide();
$ld_4_1.hide();
$ld_4_2.hide();
sys.wait (0.05);
$rd_1_1.hide();
$rd_1_2.hide();
$rd_2_1.hide();
$rd_2_2.hide();
$rd_3_1.hide();
$rd_3_2.hide();
$rd_4_1.hide();
$rd_4_2.hide();
sys.wait (0.05);
$xtlight_1.remove();
sys.wait (0.05);
$xtlight_2.remove();
sys.wait (0.05);
$xtlight_3.remove();
sys.wait (0.05);
$xtlight_4.remove();
sys.wait (0.05);
$ilight_1.remove();
sys.wait (0.05);
$ilight_2.remove();
sys.wait (0.05);
$ilight_3.remove();
sys.wait (0.05);
$ilight_4.remove();
sys.wait (0.05);
$intlight_1.remove();
sys.wait (0.05);
$intlight_2.remove();
sys.wait (0.05);
$intlight_3.remove();
sys.wait (0.05);
$indoor_3.hide();
sys.wait (0.05);
$indoor_4.hide();
$monobox_1.hide();
$monobox_2.hide();
$monobox_3.hide();
$fire_particle_1.show();
$fire_particle_2.show();
$fire_particle_3.show();
$monorail_debris_1.show();
$monorail_debris_2.show();
sys.trigger ($fire1_paintrigger);
}
void thud_crash()
{
sys.trigger ($crash_speaker);
sys.fadeOut ('0 0 0', 0.05);
//toggle_llights();
//$last_extralight.Off();
//$last_extralight_1.Off();
sys.wait (2);
//swap out broken airlock door and overhead light
$crashdoor_broken.show();
$crashdoor_left.hide();
$crashdoor_middle.hide();
$crashdoor_right.hide();
$crashsite_light_on.hide();
$crashsite_light_damaged.show();
sys.trigger ($door_spark1);
sys.trigger ($door_spark2);
sys.trigger ($door_spark3);
sys.trigger ($door_spark4);
sys.trigger ($door_spark5);
$track.hide();
sys.wait (0.1);
$broke_1.show();
sys.wait (0.1);
//$broke_2.show();
//sys.wait (0.1);
sys.trigger ($crash_destination); // Lets get the player out of the train.
hide_train();
$boomtrain.show();
$boomlight.On();
$boomlight2.On();
$boomlight3.On();
sys.wait(2);
//fadein_lights();
sys.fadeIn ('0 0 0', LIGHT_FADEIN_TIME);
sys.wait (9);
sys.trigger ($speaker_track_malfunction);
}
void open_d1()
{ $d1_1.open(); }
void close_d1()
{ $d1_1.close(); }
void open_d2()
{ $d2_1.open(); }
void close_d2()
{ $d2_1.close(); }
void open_d3()
{ $d3_1.open(); }
void close_d3()
{ $d3_1.close(); }
void open_d4()
{ $d4_1.open(); }
void close_d4()
{ $d4_1.close(); }
void open_d5()
{ $d5_1.open(); }
void close_d5()
{ $d5_1.close(); }
void open_d6()
{ $d6_1.open(); }
void close_d6()
{ $d6_1.close(); }
void open_d7()
{ $d7_1.open(); }
void close_d7()
{ $d7_1.close(); }
void open_d8()
{ $d8_1.open(); }
void close_d8()
{ $d8_1.close(); }
void open_d9()
{ $d9_1.open(); }
void close_d9()
{ $d9_1.close(); }
void open_d10()
{ $d10_1.open(); }
void close_d10()
{ $d10_1.close(); }
void open_d11()
{ $d11_1.open(); }
void close_d11()
{ $d11_1.close(); }
void open_d11a()
{ $d11a_1.open(); }
void close_d11a()
{ $d11a_1.close(); }
void open_d12()
{ $d12_1.open(); }
void close_d12()
{ $d12_1.close(); }
void open_d12a()
{
$d12a_1.open();
sys.trigger ($speaker_brakesqueal);
}
void close_d12a() {
$d12a_1.close(); }
void open_d105() {
$d105_1.open();
}
void close_d105() {
$d105_1.close();
}
void open_d106() {
$d106_1.open();
}
void close_d106() {
$d106_1.close();
}
void reset_door()
{
//$light1_green.setColor ();
//$light1_yellow.setColor ()
//$light1_red.setColor();
$light1_red.setColor (0.168627, 0.000000, 0.000000);
$light1_yellow.setColor (0.819608, 0.792157, 0.070588);
sys.wait (0.5);
$light1_yellow.setColor (0.160784, 0.152941, 0.011765);
$light1_green.setColor (0.105882, 0.898039, 0.184314);
sys.wait (0.5);
sys.trigger ($speaker_overide);
sys.trigger ($unlock_objective);
gf_Site2_Warning = FALSE; // Stop playing the warning loop if they have
// been in the area for longer than 60 seconds
sys.trigger ($monorail_gui); // Trigger the gui to resume operation
TRAIN_MOVING = 2;
$rd_1_1.open();
$rd_3_1.open();
//turn on trigger for tram rider swap with gibs
sys.trigger ($trigger_once_28);
}
void move_train()
{
/*
State is 0 upon loading the level
State is 1 when it's travelling along the first stretch
State is 2 after the button is pressed to open the two blocked doors
State is 3 after the train resumes the last leg of it's trip
*/
if (TRAIN_MOVING == 1) return;
if (TRAIN_MOVING == 2)
{
train_proceed();
return;
}
$ld_1_1.close();
//$ld_3_1.close();//already closed
$rd_3_1.close();
//turn on door player clips
$doorclip_rightFront.show();
$doorclip_leftFront.show();
$doorclip_rightRear.show();
$doorclip_leftRear.show();
sys.waitFor ($ld_1_1);//changed from 3_1 to 1_1
sys.wait (1);
$TRAIN_ANCHOR.time (70);
$TRAIN_ANCHOR.accelTime( 3 );
$TRAIN_ANCHOR.decelTime( 3 );
//$player1.disableWeapon(); //changed to target_enableweapons in radiant
$TRAIN_ANCHOR.startSpline ( $spline1 );
$TRAIN_ANCHOR.removeInitialSplineAngles();
TRAIN_MOVING = 1;
//trigger sounds
sys.trigger ($movement_speaker);
sys.trigger ($squeal_speaker);
sys.waitFor ($TRAIN_ANCHOR);
//trigger sounds
sys.trigger ($steamchuff);
sys.trigger ($squeal_speaker);
sys.trigger ($movement_speaker);
//hide door clips after train reaches site2 dock
$doorclip_rightFront.hide();
$doorclip_leftFront.hide();
$doorclip_rightRear.hide();
$doorclip_leftRear.hide();
//$player1.enableWeapon(); //changed to target_enableweapons in radiant
$rd_1_1.open();
sys.wait (3);
sys.trigger ($item_objective_5); // Trigger the objective after the train stops.
}
void close_tram_doors()
{
$rd_1_1.close();
$rd_3_1.close();
}
//void open_tram_doors()
//{
// $rd_1_1.open();
// $rd_3_1.open();
//}
void squeal_monorail()
{
sys.trigger ($squeal_stop_speaker);
}
void voc_1()
{
sys.trigger ($speaker_voc1);
}
void voc_2()
{
sys.trigger ($speaker_voc2);
}
void voc_3()
{
sys.trigger ($speaker_voc3);
}
void voc_4()
{
sys.trigger ($speaker_voc4);
}
void voc_5()
{
sys.trigger ($speaker_voc5);
}
void voc_6()
{
sys.trigger ($speaker_voc6);
}
void voc_7()
{
sys.trigger ($speaker_voc7);
}
void voc_8()
{
sys.trigger ($speaker_voc8);
}
void voc_evil()
{
sys.trigger ($speaker_chant);
}
// Simplified version of Matt's E3_2 Machine
void spawn_exit()
{
if ( TRAIN_MOVING == 2 )
{
sys.trigger ($monster_demon_trite_1);
sys.trigger ($monster_demon_trite_2);
}
}
void matt_mover()
{
$arm.time (1);
$top.time (0.75);
$bottom.time (0.5);
while (1)
{
// Should be centered here - Moving right next...
$arm.rotateOnce ('0 90 0');
$top.rotateOnce ('0 0 90');
sys.waitFor ($arm);
$rotator.rotateOnce ('0 360 0');
$bottom.move (UP, 24);
sys.waitFor ($bottom);
sys.wait (0.5);
$rotator.rotateOnce ('0 -360 0');
$bottom.move (DOWN, 24);
sys.waitFor ($bottom);
$arm.rotateOnce ('0 -90 0');
$top.rotateOnce ('0 0 -90');
sys.waitFor ($arm);
// Should be centered here ... about to move left.
$arm.rotateOnce ('0 -90 0');
$top.rotateOnce ('0 0 -90');
sys.waitFor ($arm);
$rotator.rotateOnce ('0 360 0');
$bottom.move (UP, 24);
sys.waitFor ($bottom);
sys.wait (0.5);
$rotator.rotateOnce ('0 -360 0');
$bottom.move (DOWN, 24);
sys.waitFor ($bottom);
$arm.rotateOnce ('0 90 0');
$top.rotateOnce ('0 0 90');
sys.waitFor ($arm);
}
}
void cage_movement(entity ent)
{
//$rot1.time ( CalcTimeForRotationAroundEntity( 1576, 90, TRAIN_SPEED) );
vector vec;
entity cagepath;
ent.time (CAGE_SPEED);
}
void activate_rider()
{
sys.trigger ($monorail_rider_1);
sys.wait(.1);
$indoor_3.open(); // Open the door so we can see the monorail rider.
$indoor_4.open();
}
void cache_sounds() {
$speaker_165.cacheSoundShader ("monorail_computer_turrets_on");
$speaker_165.cacheSoundShader ("monorail_computer_turrets_off");
}
void main()
{
cache_sounds();
bind_objects();
init_world();
thread pattern1();
thread pattern3();
thread matt_mover();
}
}
File diff suppressed because it is too large Load Diff
+452
View File
@@ -0,0 +1,452 @@
void make_player_cough() {
$player1.startSoundShader ("player_cough", SND_CHANNEL_VOICE);
}
namespace map_recycling2 {
void mover_startsound (entity ent) {
ent.startSoundShader ("m1_start", SND_CHANNEL_VOICE);
sys.wait (0.75);
ent.startSoundShader ("m1_loop", SND_CHANNEL_VOICE2);
}
void mover_stopsound (entity ent) {
ent.startSoundShader ("m1_stop", SND_CHANNEL_VOICE2);
ent.startSoundShader ("rec1_pump_endclack_01", SND_CHANNEL_ITEM );
}
void mover_startsound2 (entity ent) {
ent.startSoundShader ("m2_start", SND_CHANNEL_VOICE);
sys.wait (0.75);
ent.startSoundShader ("m2_loop", SND_CHANNEL_VOICE2);
}
void mover_stopsound2 (entity ent) {
ent.startSoundShader ("m2_stop", SND_CHANNEL_VOICE2);
}
void mover_startsound3 (entity ent) {
ent.startSoundShader ("m3_start", SND_CHANNEL_VOICE);
sys.wait (1);
ent.startSoundShader ("m3_loop", SND_CHANNEL_VOICE2);
}
void mover_stopsound3 (entity ent) {
ent.startSoundShader ("m3_stop", SND_CHANNEL_VOICE2);
}
void setup_objects ()
{
$pump1nozzle1.bind ($pump1axis);
$pump1_tubecap.bind ($pump1_tube);
$pump1_tube.bind ($pump1_tube_anchor);
$cyl_1.bind ($cyl_1_anchor);
$elev2_light.bind ($elev1);
//$elev2_speaker.bind ($elev1);
$walkway.bind ($walkway_anchor);
$light_warning_spin.bind ($light_warning_anchor);
$light_warning_2.bind ($light_warning_anchor);
$light_warning_flare.bind ($light_warning_anchor);
$light_warning_off.bind ($light_warning_anchor);
$light_warning_on.bind ($light_warning_anchor);
}
///////////////////
// first pump room
//////////////////
void pump1piston1_start ()
{
while (1)
{
$pump1piston1.accelTime (.5);
$pump1piston1.decelTime (.2);
$pump1piston1.time (1);
thread mover_startsound ($pump1piston1);
$pump1piston1.moveTo ($pump1piston1_btm);
sys.waitFor ($pump1piston1);
mover_stopsound ($pump1piston1);
sys.wait (1);
$pump1piston1.accelTime (.5);
$pump1piston1.decelTime (.8);
thread mover_startsound ($pump1piston1);
$pump1piston1.time (1.6);
$pump1piston1.moveTo ($pump1piston1_top);
sys.waitFor ($pump1piston1);
mover_stopsound ($pump1piston1);
}
}
void pump1piston2_start ()
{
while (1)
{
$pump1piston2.time (1.5);
thread mover_startsound3 ($pump1piston2);
$pump1piston2.move (DOWN ,96);
sys.waitFor ($pump1piston2);
mover_stopsound2 ($pump1piston2);
sys.wait (.5);
$pump1piston2.time (2);
thread mover_startsound3 ($pump1piston2);
$pump1piston2.move (UP ,96);
sys.waitFor ($pump1piston2);
mover_stopsound3 ($pump1piston2);
sys.wait (.5);
}
}
void pump1machine_start ()
{
while (1)
{
$pump1axis.decelTime (.5);
$pump1axis.time (1);
$pump1axis.rotateOnce ('0 180 0');
sys.waitFor ($pump1axis);
sys.trigger ($pump1_bubbles);
$pump1_tube_anchor.time (.5);
$pump1_tube_anchor.rotateOnce ('0 0 90');
sys.waitFor ($pump1_tube_anchor);
$pump1_tubecap.unbind ();
$pump1_tubecap.time (.5);
$pump1_tubecap.moveTo ($pump1_tubecap_spot2);
sys.waitFor ($pump1_tubecap);
$pump1_tubecap.bind ($pump1nozzle1);
$pump1speaker.startSoundShader("sact1_vent_1s", SND_CHANNEL_ANY );
$pump1nozzle1.time (.5);
$pump1nozzle1.rotateOnce ('0 0 360');
sys.waitFor ($pump1nozzle1);
$pump1_tubecap.unbind ();
sys.trigger ($pump1_bubbles);
sys.wait (1.5);
$pump1_tubecap.time (.5);
$pump1_tubecap.moveTo ($pump1_tubecap_spot1);
sys.waitFor ($pump1_tubecap);
$pump1_tubecap.bind ($pump1_tube);
$pump1_tube_anchor.time (.5);
$pump1_tube_anchor.rotateOnce ('0 0 -90');
sys.waitFor ($pump1_tube_anchor);
$pump1axis.decelTime (.5);
$pump1axis.time (1);
$pump1axis.rotateOnce ('0 180 0');
sys.waitFor ($pump1axis);
sys.trigger ($pump1_bubbles);
$pump1_tube_anchor.time (.5);
$pump1_tube_anchor.rotateOnce ('0 0 90');
sys.waitFor ($pump1_tube_anchor);
$pump1_tubecap.unbind ();
$pump1_tubecap.time (.5);
$pump1_tubecap.moveTo ($pump1_tubecap_spot2);
sys.waitFor ($pump1_tubecap);
$pump1_tubecap.bind ($pump1nozzle1);
$pump1speaker.startSoundShader("sact1_vent_1s", SND_CHANNEL_ANY );
$pump1nozzle1.time (.5);
$pump1nozzle1.rotateOnce ('0 0 360');
sys.waitFor ($pump1nozzle1);
$pump1_tubecap.unbind ();
sys.trigger ($pump1_bubbles);
sys.wait (1.5);
$pump1_tubecap.time (.5);
$pump1_tubecap.moveTo ($pump1_tubecap_spot1);
sys.waitFor ($pump1_tubecap);
$pump1_tubecap.bind ($pump1_tube);
$pump1_tube_anchor.time (.5);
$pump1_tube_anchor.rotateOnce ('0 0 -90');
sys.waitFor ($pump1_tube_anchor);
}
}
void block_door ()
{
sys.trigger ($block_door);
}
void bust_window ()
{
sys.trigger ($imp_1);
sys.wait (1);
sys.trigger ($bustfield1);
sys.trigger ($bustout1);
sys.wait (4);
sys.trigger ($imp_2);
sys.wait (1);
sys.trigger ($bustfield2);
sys.trigger ($bustout2);
}
void light_warning_on ()
{
$light_warning_off.hide ();
$light_warning_on.show ();
$light_warning_flare.show ();
$light_warning_anchor.rotate ('0 200 0');
sys.trigger ($speaker_alarm1);
}
void change1 ()
{
$btrigger2.remove ();
$firstroom_on2.remove ();
$speaker_290.remove();
}
void change2 ()
{
$btrigger1.remove ();
$firstroom_on1.remove ();
$mainscreen.setGuiParm ( "gui_parm1" , 2);
$screen2.setGuiParm ( "gui_parm1" , 2);
$screen4.setGuiParm ( "gui_parm1" , 2);
$speaker_291.remove();
}
///////////////////
// first gas room
//////////////////
void ventgas_off ()
{
sys.trigger ($ventgas1);
sys.trigger ($ventgas2);
sys.wait (.5);
sys.trigger ($ventgas1_in);
sys.trigger ($ventgas2_in);
sys.wait (4);
sys.trigger ($ventgas1_in);
sys.trigger ($ventgas2_in);
}
///////////////////
// exit gas room
//////////////////
void exitgas1_off ()
{
sys.trigger ($exitgas1);
sys.wait (.5);
sys.trigger ($exitgas1_in);
}
void exitgas2_off ()
{
sys.trigger ($exitgas2);
sys.wait (.5);
sys.trigger ($exitgas2_in);
}
void exitgas3_off ()
{
sys.trigger ($exitgas3);
sys.wait (.5);
sys.trigger ($exitgas3_in);
}
void exitgas_in ()
{
sys.wait (4);
sys.trigger ($exitgas1_in);
sys.trigger ($exitgas2_in);
sys.trigger ($exitgas3_in);
}
/////////////////
// misc
////////////////
void pump2piston_start ()
{
while (1)
{
$pump2piston.startSoundShader ("rec2_pump_1s_01", SND_CHANNEL_VOICE );
$pump2piston.time (1);
$pump2piston.moveTo ($pump2piston_spot1);
sys.waitFor ($pump2piston);
$pump2piston.startSoundShader ("rec2_pump_05s_01", SND_CHANNEL_VOICE2 );
$pump2piston.time (0.5);
$pump2piston.moveTo ($pump2piston_spot2);
sys.waitFor ($pump2piston);
}
}
void cyl1_start ()
{
while (1)
{
sys.trigger ($cyl1_gas);
$vent1.time (.5);
$vent1.rotateOnce ('0 -100 0');
$vent2.time (.5);
$vent2.rotateOnce ('0 -70 0');
$vent3.time (.5);
$vent3.rotateOnce ('0 -70 0');
$thingspeaker.startSoundShader("sact1_vent_05s_close", SND_CHANNEL_ANY );
sys.wait (.5);
$cyl_1_anchor.time (1);
$cyl_1_anchor.rotateOnce ('0 -150 0');
$thingspeaker.startSoundShader("sact1_vent_1s", SND_CHANNEL_ANY );
sys.waitFor ($cyl_1_anchor);
sys.wait (2);
$cyl_1_anchor.time (1);
$cyl_1_anchor.rotateOnce ('0 150 0');
$thingspeaker.startSoundShader("sact1_vent_1s", SND_CHANNEL_ANY );
sys.waitFor ($cyl_1_anchor);
sys.wait (.5);
$vent1.time (.5);
$vent1.rotateOnce ('0 100 0');
$vent2.time (.5);
$vent2.rotateOnce ('0 70 0');
$vent3.time (.5);
$vent3.rotateOnce ('0 70 0');
$thingspeaker.startSoundShader("sact1_vent_05s_open", SND_CHANNEL_ANY );
sys.trigger ($cyl1_gas);
sys.wait (3);
}
}
void lamp_sway1 ()
{
$storageswing_lamp1.sway( 25, 0, '20 10 10' );
}
void wallbox1_turn ()
{
$wallbox1.time (.3);
$wallbox1.rotateOnce ('0 0 -8');
$wallbox1_speaker.startSoundShader("smallpanel_impact", SND_CHANNEL_ANY );
}
void underhall_lights ()
{
while (1)
{
sys.trigger ($underhall_fadein1);
sys.trigger ($underhall_fadein2);
sys.wait (.7);
sys.trigger ($underhall_fadeout1);
sys.trigger ($underhall_fadeout2);
sys.wait (.3);
}
}
void elev_crash ()
{
$elev1.bind ($elev_mover);
$elev_mover.accelTime (.4);
$elev_mover.time (1.5);
$elev_mover.move (DOWN , 612);
}
/////////////////////
// mancubusroom
////////////////////
void walkway_fall ()
{
$walkway_anchor.startSoundShader ("rec1_bridge_fall", SND_CHANNEL_VOICE );
$walkway_anchor.time (.6);
$walkway_anchor.accelTime (.4);
$walkway_anchor.rotateOnce ('18 0 0');
$walkway_speaker.startSoundShader("smallpanel_impact", SND_CHANNEL_ANY );
sys.waitFor ($walkway_anchor);
$walkway_anchor.time (.2);
$walkway_anchor.decelTime (.1);
$walkway_anchor.rotateOnce ('-5 0 0');
$walkway_anchor.time (.1);
$walkway_anchor.rotateOnce ('5 0 0');
}
void cache_sounds() {
sys.cacheSoundShader ("player_cough");
sys.cacheSoundShader ("m1_start");
sys.cacheSoundShader ("m1_stop");
sys.cacheSoundShader ("m1_loop");
sys.cacheSoundShader ("m2_start");
sys.cacheSoundShader ("m2_stop");
sys.cacheSoundShader ("m2_loop");
sys.cacheSoundShader ("m3_start");
sys.cacheSoundShader ("m3_stop");
sys.cacheSoundShader ("m3_loop");
sys.cacheSoundShader ("sact1_vent_1s");
sys.cacheSoundShader ("sact1_vent_05s_close");
sys.cacheSoundShader ("sact1_vent_05s_open");
sys.cacheSoundShader ("rec2_pump_1s_01");
sys.cacheSoundShader ("rec2_pump_05s_01");
sys.cacheSoundShader ("smallpanel_impact");
sys.cacheSoundShader ("rec1_bridge_fall");
}
void main ()
{
cache_sounds();
setup_objects();
pump2piston_start();
}
}
+323
View File
@@ -0,0 +1,323 @@
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 ();
}
}