mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-12 08:11:10 +02:00
All Doom 3 AI is now native.
This commit is contained in:
@@ -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() {
|
||||
|
||||
}
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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 ();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user