//--------------------------------------------------------------------------------------- // map_m05.script // // (c) Ritual 2005 // -Tetrad //--------------------------------------------------------------------------------------- #include "scripts/doom_defs.script" namespace map_m05 { // debug I-don't-want-to-play-through-the-entire-level-to-test-something variables // FOR THE LOVE OF GOD AND ALL THAT IS HOLY SET THESE TO ZERO FOR SHIP float CUT_THE_CRAP = 0; float DISABLE_QUICKSAVES = 0; // okay back to normal now float TAK_CAN_TALK = 1; float TAK_HAS_TALKED = 0; float REDSHIRT2_NEED_TELEPORT = 1; float PLAYER_TOOK_OUT_GENERATOR = 0; // function prototypes (not a complete list mind you) void getOnFreightElevator(); void freightElevTop(); void startFloorLightGroup1(); void startFloorLightGroup2(); void startFloorLightGroup3(); void startFloorLightGroup4(); void radioBattle1(); void radioBattle2(); //helper function prototypes void moveFaceWait(entity mover, entity location, entity target); //-------------------------------------------------------------------------- // FUNCTION DEFINITONS // (here there be code) //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // Level spawns, player's going down the big elevator //-------------------------------------------------------------------------- void extendInitialBridge() { sys.wait( 21 ); $drawbridge_origin1_1.time(9); $drawbridge_origin1_1.accelTime(4); $drawbridge_origin1_1.decelTime(4); $drawbridge_origin2_1.time(9); $drawbridge_origin2_1.accelTime(3); $drawbridge_origin2_1.decelTime(6); $drawbridge_origin1_1.rotateOnce( '-80 0 0' ); $drawbridge_origin2_1.rotateOnce( '180 0 0' ); sys.waitFor($drawbridge_origin2_1); } void goingDown() { sys.trigger( $introMusic ); $redshirt1.lookAt( $redshirt2 ); $redshirt1.setTalkState( TALK_WAIT ); $redshirt2.setTalkState( TALK_WAIT ); $redshirt1.disableHeal(); $redshirt2.disableHeal(); aiScriptedAnimLoop( $redshirt2, "Hub_elev_2", 4 ); sys.println("map_m05::goingDown()"); $elevator1mover.accelTime(0); $elevator1mover.decelTime(1); $elevator1mover.time(30); $elevator1mover.moveTo( $tar_el_move_here ); thread extendInitialBridge(); sys.wait(10); sys.trigger( $introscream ); aiScriptedAnim( $redshirt1, "idle_startled_1", 4, 1 ); sys.wait( 3 ); $redshirt1.lookAt( $redshirt2 ); aiSpeakWait( $redshirt2, "lipsync_mitch_whathelldo" ); $redshirt2.lookAt( $redshirt1 ); aiSpeakWait( $redshirt1, "lipsync_fox5_dntwntknw" ); sys.wait(1.5); sys.trigger( $introscream2 ); // nooooooo sys.wait( 4.5 ); $redshirt1.lookAt( $redshirt2 ); aiSpeakWait( $redshirt2, "lipsync_mitch_youheartht" ); $redshirt2.lookAt( $redshirt1 ); aiSpeakWait( $redshirt1, "lipsync_fox5_weallhrd" ); sys.wait(.5); $redshirt1.lookAt( $redshirt2 ); aiSpeakWait( $redshirt2, "lipsync_mitch_thatsndmar" ); $redshirt2.lookAt( $redshirt1 ); aiSpeakWait( $redshirt1, "lipsync_fox5_shutup" ); $redshirt1.lookAt( $redshirt2 ); aiSpeakWait( $redshirt2, "lipsync_mitch_butthose" ); $redshirt2.lookAt( $redshirt1 ); aiSpeakWait( $redshirt1, "lipsync_fox5_saidshutp" ); sys.waitFor( $elevator1mover ); aiScriptedStop( $redshirt1 ); aiScriptedStop( $redshirt2 ); sys.trigger( $obj0 ); sys.trigger( $target_objectivebeacon_1 ); $redshirt1.enableHeal(); $redshirt2.enableHeal(); $redshirt1.lookAt( $null_entity ); $redshirt2.lookAt( $null_entity ); $redshirt1.setTalkState( TALK_OK ); $redshirt2.setTalkState( TALK_OK ); thread moveFaceWait( $redshirt2, $tar_move_tak_here, $tar_teammates_face_me_el1 ); sys.wait( 1.5 ); thread moveFaceWait( $redshirt1, $tar_move_darnell_here, $tar_teammates_face_me_el1 ); } //-------------------------------------------------------------------------- // Stuff happens when they kill those little dudes //-------------------------------------------------------------------------- void seeSlimies() { aiSpeakWait( $redshirt2, "lipsync_mitch_whathell" ); // what the hell $redshirt2.flashlight( 1 ); $redshirt2.startSound( "snd_flashlight", SND_CHANNEL_ANY, 1); sys.wait(.5); aiSpeakWait( $redshirt1, "lipsync_fox5_whatmatt" ); // afraid of the dark? aiSpeakWait( $redshirt2, "lipsync_mitch_nahafraid" ); $redshirt1.flashlight( 1 ); $redshirt1.startSound( "snd_flashlight", SND_CHANNEL_ANY, 1); sys.trigger( $trigger_relay_firstenemies ); } //-------------------------------------------------------------------------- // When the room is cleared, somebody says we need to get up there //-------------------------------------------------------------------------- void toalsonIsSmart() { aiScriptedMoveWait( $redshirt1, $tar_toalson_jumpdown, 4, 0 ); aiScriptedFaceWait( $redshirt1, $scanUnitConsole, 0 ); aiScriptedAnimWait( $redshirt1, "idle_weapon_3_start", 4, 0 ); aiScriptedAnimLoop( $redshirt1, "idle_weapon_3_loop", 4 ); $redshirt1.lookAt( $func_door_68 ); sys.wait( 1.5 ); aiSpeakWait( $redshirt1, "lipsync_fox5_theoverr" ); $redshirt1.lookAt( $func_static_12052 ); sys.wait( 1.5 ); aiSpeakWait( $redshirt1, "lipsync_fox5_heyover" ); aiScriptedAnimWait( $redshirt1, "idle_weapon_3_end", 4, 0 ); aiSpeak( $redshirt1, "lipsync_fox5_thresupp" ); aiScriptedAnimWait( $redshirt1, "point_down", 4, 1 ); } void getUpThere() { $redshirt1.setLeader( $null_entity ); $redshirt2.setLeader( $null_entity ); $redshirt1.becomePassive( 1 ); aiScriptedMove( $redshirt2, $tar_darnell_a_4, 5, 1 ); thread toalsonIsSmart(); sys.wait( 1.5 ); aiSpeakWait( $redshirt2, "lipsync_mitch_wegonna" ); } //-------------------------------------------------------------------------- // Player uses a console to shut down the forcefield, but enables the // security system //-------------------------------------------------------------------------- void nudgePlayer() { sys.wait( 2 ); if ( !PLAYER_TOOK_OUT_GENERATOR ) { radioChatterPlayWait( $func_radiochatter_cin_1, "vo_mitch_thereexhaust" ); } else { return; } sys.wait( 8 ); if ( !PLAYER_TOOK_OUT_GENERATOR ) { radioChatterPlayWait( $func_radiochatter_cin_1, "vo_mitch_deklookex" ); } else { return; } sys.wait( 8 ); if ( !PLAYER_TOOK_OUT_GENERATOR ) { radioChatterPlayWait( $func_radiochatter_cin_1, "vo_mitch_dektryblow" ); } else { return; } } void unlockInterrDoor() { PLAYER_TOOK_OUT_GENERATOR = 1; $func_static_53895.hide(); float i = 0; float t; // TODO: would be cooler to just have it fade out or do some cool shut-off // sequence. For now, just adding a bit of flicker to the process for ( i; i < 6; i++ ) { t = sys.random(0.1) + 0.05; $scannerForceField.Toggle(); $scannerForceField.hide(); sys.wait(t); $scannerForceField.Toggle(); $scannerForceField.show(); sys.wait(0.05); } $func_fx_658.remove(); $func_fx_659.remove(); $scannerForceField.hide(); $scannerForceField.Toggle(); radioChatterPlayWait( $func_radiochatter_cin_1, "vo_mitch_fieldgen" ); // gj dekard } //------------------------------------------------------------------- // Guy doesn't know what the fuck //------------------------------------------------------------------- void throwGuy() { sys.trigger( $throwingGrunt ); //sys.trigger( $gruntintro_speaker ); // WHY DON'T YOU WORK sys.setCamera( $gruntintro_camera ); aiScriptedAnimWait( $throwingGrunt, "anger1", 4, 1 ); $player1.setViewAngles ( '0 180 0' ); sys.firstPerson(); aiSpeak( $redshirt1, "lipsync_fox5_incom" ); radioChatterPlay( $func_radiochatter_cin_1, "vo_fox5_incom" ); // "incoming strogg!" $breakawayGlass.hide(); // TEMP $redshirt1.hide(); $glassMarine.show(); //$glassMarine.becomeNonSolid(); aiSpeak( $glassMarine, "lipsync_fox5_arrg" ); aiScriptedAnimWait( $glassMarine, "prison_glass", 4, 0 ); $glassMarine.disableBlinking(); $glassMarine.setTalkState( TALK_NEVER ); $glassMarine.becomeNonSolid(); aiScriptedAnimLoop( $glassMarine, "prison_glass_idle", 4 ); sys.trigger( $trigger_relay_throwingguy ); } void mitchellMourns() { aiSpeak( $redshirt2, "lipsync_mitch_damnmarst" ); } //------------------------------------------------------------------- // The forcefield is down, but the scanning unit remains active... //------------------------------------------------------------------- void scanMe() { $redshirt2.setLeader( $player1 ); $scanningUnitLasers.time(.75); $scanningUnitLasers.accelTime(.25); $scanningUnitLasers.decelTime(0); $scanningUnitLaser_1.start(); $scanningUnitLaser_2.start(); $scanningUnitLaser_3.start(); $scanningUnitLaser_4.start(); $scanningUnitLaser_5.start(); $scanningUnitLaser_6.start(); $scanningUnitLaser_1.startSound("snd_scan", SND_CHANNEL_ANY, 0); $scanningUnitLasers.moveTo( $scanningUnitLasersTarget ); sys.waitFor($scanningUnitLasers); $scanUnitAlarm.activate($player1); $scanUnitAlarmLight.On(); $scanUnitAlarmFx.activate($player1); $alarmSound1.activate($player1); $scanningUnitLaser_1.startSound("snd_scan", SND_CHANNEL_ANY, 0); $scanningUnitLasers.moveTo( $scanningUnitLasersOrigin ); sys.waitFor($scanningUnitLasers); $scanningUnitLaser_1.stopSound(SND_CHANNEL_ANY, 0); $scanningUnitLaser_1.stop(); $scanningUnitLaser_2.stop(); $scanningUnitLaser_3.stop(); $scanningUnitLaser_4.stop(); $scanningUnitLaser_5.stop(); $scanningUnitLaser_6.stop(); $func_static_14064.setColor(1,0,0); $func_static_14063.setColor(1,0,0); $light_5015.setColor(.75,0,0); $railTurret1_Mover.time( 1 ); $light_5015.Off(); $railTurret1_Mover.moveTo( $target_railturret_position ); sys.waitFor( $railTurret1_Mover ); $scanUnitTurret.becomeAggressive(); $scanUnitTurret.enableTarget(); sys.wait(.5); // then the guy comes out sys.trigger( $grunty_1 ); } //-------------------------------------------------------------------------- // random YAY LET'S HOLD THE PLAYER IN PLACE stuff //-------------------------------------------------------------------------- void slowDoor() { $door_gui.setGuiParm( "noninteractive", "1" ); $func_mover_19.time( 30 ); $func_mover_19.moveTo( $tar_slimey_door_top ); sys.wait( 25 ); sys.trigger( $func_aas_obstacle_9 ); } //------------------------------------------------------------------- // Player hits the trigger on elevator 2, guys follow //------------------------------------------------------------------- void getGuysOnEl2() { $redshirt2.setMoveSpeed( AIMOVESPEED_DEFAULT ); aiScriptedMoveWait( $redshirt2, $tar_redshirt1_el2, 6, 0 ); $elevator2.setGuiParm( "noninteractive", "0" ); } //------------------------------------------------------------------- // Player hits the trigger on elevator 2, guys get out of the way //------------------------------------------------------------------- void getGuysOffEl2() { aiScriptedAnimLoop( $spireretch, "bio_flesh_spire", 4 ); aiScriptedAnimLoop( $spirescientist, "work_on_human3_loop", 4 ); $redshirt2.setLeader( $null_entity ); if ( !DISABLE_QUICKSAVES ) { sys.trigger( $func_savegame_1 ); } aiScriptedMoveWait( $redshirt2, $temp_cin_el2_move_redshirt2_here, 5, 1 ); if ( REDSHIRT2_NEED_TELEPORT == 0 ) { aiSpeakWait( $redshirt2, "lipsync_mitch_whatdonestrg" ); $redshirt2.setLeader( $player1 ); } } //------------------------------------------------------------------- // Check before elevator finishes descent as to whether the guys are on it //------------------------------------------------------------------- void rs2OnEl2() { sys.println("redshirt2 okay"); REDSHIRT2_NEED_TELEPORT = 0; } //---------------------------------------------------------------------------------- // meeting up with the bridge squad guys //---------------------------------------------------------------------------------- void radioCall() { radioChatterPlayWait( $func_radiochatter_ancillary, "vo_viper1_johnvip" ); } void dieStrogg() { aiSpeak( $squadx1, "lipsync_viper1_diestrgg" ); } void setupTech() { aiScriptedAnimLoop( $squadx2, "and_stimpack2b_loop", 4 ); aiSpeak( $squadx1, "lipsync_viper1_philipmed" ); $squadx2.disableHeal(); } void theirGuyMoves() { aiScriptedMoveWait( $squadx1, $theirguy, 4, 0 ); aiScriptedFaceWait( $squadx1, $squadx2, 0 ); $squadx1.lookAt( $redshirt2 ); aiScriptedAnimWait( $squadx1, "idle_weapon_3_start", 4, 0 ); aiScriptedAnimLoop( $squadx1, "idle_weapon_3_loop", 4 ); $squadx1.setTalkState( TALK_OK ); } void meetSquad() { aiScriptedMove( $redshirt2, $mitchell_spot_precatacombs, 4, 0 ); sys.wait( .5 ); // see the dude outside after he kills that strogg $squadx1.becomePassive( 1 ); $squadx1.lookAt( $player1 ); aiSpeakWait( $squadx1, "lipsync_viper1_johngld" ); $redshirt2.lookAt( $squadx1 ); aiSpeakWait( $redshirt2, "lipsync_mitch_mitchhowget" ); $squadx1.lookAt( $redshirt2 ); aiSpeakWait( $squadx1, "lipsync_viper1_weweresq" ); $squadx1.lookAt( $player1 ); aiScriptedAnim( $squadx1, "point_back", 4, 0 ); aiSpeakWait( $squadx1, "lipsync_viper1_cometech" ); sys.trigger( $trigger_once_22 ); $func_door_14.lock( 0 ); // moving to the tech thread theirGuyMoves(); aiScriptedMoveWait( $redshirt2, $yourguy, 4, 0 ); $redshirt2.setOrigin( $yourguy.getOrigin() ); $redshirt2.setAngles( $yourguy.getAngles() ); aiScriptedAnimWait( $redshirt2, "medic_treating_player_start", 4, 0 ); aiScriptedAnimLoop( $redshirt2, "medic_treating_player", 4 ); // BREAKS THINGS sys.wait(2.75); // pulls out a syringe aiSpeak( $redshirt2, "lipsync_mitch_somestim" ); $squadx1.lookAt( $redshirt2 ); sys.wait(3); // INSERT TRANSITIONAL ANIMS HERE // tech's healed, time to move out $squadx1.lookAt( $squadx2 ); aiScriptedAnim( $squadx2, "idle_stretching_3", 4, 0 ); aiScriptedAnim( $redshirt2, "medic_treating_player_end", 4, 1 ); aiSpeakWait( $squadx2, "lipsync_viper2_goodtogo" ); aiSpeakWait( $squadx2, "lipsync_viper2_twodoorsld" ); $squadx2.enableHeal(); sys.wait(0.5); aiScriptedAnim( $squadx1, "idle_weapon_3_end", 4, 0 ); aiSpeakWait( $squadx1, "lipsync_viper1_letsgo" ); $squadx1.becomeAggressive(); aiScriptedMove( $squadx1, $squadx1_1, 4, 1 ); aiScriptedMove( $redshirt2, $mitchell_spot_precatacombs, 4, 1 ); sys.wait( 1.5 ); aiScriptedMoveWait( $squadx2, $squadx2_1, 4, 0 ); // tech opening a locked door $squadx2.disableHeal(); aiScriptedMoveWait( $squadx2, $squadx2lockedDoorLoc, 4, 0 ); aiScriptedAnim( $squadx2, "point_forward", 16, 1 ); sys.wait( 1.6 ); $func_door_26.lock( 0 ); $func_door_27.lock( 0 ); $cortez_door_locked.hide(); //gui locked $cortez_door_unlocked.show(); //gui unlocked sys.trigger( $storageRoomEnemies ); $squadx2.enableHeal(); //sys.println( "WAITING ON YOU SIR" ); $squadx2.setTalkState( TALK_OK ); } //---------------------------------------------------------------------------------- // The firefight with the bridge squad guys //---------------------------------------------------------------------------------- void moveTechIntoPositionDialog() { aiSpeakWait( $squadx2, "lipsync_viper2_accbrid" ); sys.wait( 2 ); aiSpeakWait( $squadx2, "lipsync_viper2_takelong" ); } void moveTechIntoPosition() { $squadx2.disableHeal(); aiScriptedMoveWait( $squadx2, $squadx2_2, 4, 0 ); aiScriptedFaceWait( $squadx2, $squadx2_2face, 0 ); thread moveTechIntoPositionDialog(); aiScriptedAnimWait( $squadx2, "cine_console_stand_start", 4, 0 ); aiScriptedAnimLoop( $squadx2, "cine_console_stand_loop", 4 ); } void goingIn() { sys.wait( 1.8 ); $redshirt2.setLeader( $null_entity ); sys.trigger( $tetherTargets ); } void droppyDowny() { sys.trigger( $storageMetalPlate_1 ); sys.trigger( $storageMetalPlate_2 ); sys.trigger( $storageMetalPlate_3 ); sys.trigger( $storageMetalPlate_4 ); sys.trigger( $storageDropDown_1 ); } void startAlamoSequence() { sys.trigger( $relay_alamo_wave_1 ); sys.wait( 3 ); aiSpeakWait( $squadx1, "lipsync_viper1_diesqb" ); } void areaSecure() // initial guys are dead... { float techThread; techThread = thread moveTechIntoPosition(); sys.wait( 2 ); sys.waitForThread( techThread ); sys.wait( 2 ); thread startAlamoSequence(); } void gladiatorOut() { sys.wait( 2 ); aiSpeak( $squadx1, "lipsync_viper1_whthell" ); } //---------------------------------------------------------------------------------- // Firefire over, debriefing and handing the player a weapon mod //---------------------------------------------------------------------------------- void areaReallySecure() { aiScriptedAnimWait( $squadx2, "cine_console_stand_end", 4, 1 ); $squadx2.lookAt( $player1 ); aiScriptedFaceWait( $squadx2, $player1, 0 ); aiSpeakWait( $squadx2, "lipsync_viper2_bridgeext" ); aiSpeakWait( $squadx2, "lipsync_viper2_napalm" ); sys.trigger( $alamoDebriefingTrig ); } void alamoDebriefing() { $squadx2.hideSurface("models/weapons/mp_guns/w_mg_lo"); $player1.selectWeapon( "weapon_goobgun" ); aiScriptedFaceWait( $squadx2, $player1, 0 ); aiScriptedAnimWait( $squadx2, "recomp_mod_hyper", 8, 1 ); $squadx2.showSurface("models/weapons/mp_guns/w_mg_lo"); sys.trigger( $flameModSnd ); sys.trigger( $giveFire ); aiSpeakWait( $squadx2, "lipsync_viper2_therezoom" ); aiSpeakWait( $squadx2, "lipsync_viper2_staybeh" ); $squadx2.enableHeal(); $bridge_gui_2_fake.hide(); $bridge_gui_2_real.show(); $redshirt2.setLeader( $player1 ); sys.trigger( $unteatherYourGuy ); } //---------------------------------------------------------------------------------- // Seeing a random stream protector walking by //---------------------------------------------------------------------------------- void moveStreamProtector() { $monster_stream_protector_1.setMoveSpeed( AIMOVESPEED_WALK ); aiScriptedMoveWait( $monster_stream_protector_1, $stream_protector_moveto, 64, 0 ); $monster_stream_protector_1.remove(); } //---------------------------------------------------------------------------------- // extending out a gui that covers a bridge //---------------------------------------------------------------------------------- void bridgeGuiOut() { $gui_arm.time( .25 ); $gui_arm.move( WEST, 160 ); sys.trigger( $gui_panel_out ); sys.waitFor( $gui_arm ); } //---------------------------------------------------------------------------------- // ZOUNDS //---------------------------------------------------------------------------------- void straussOnTubes() { $env_medlabs_registration_2.playCycle( ANIMCHANNEL_ALL, "registration_loop" ); aiScriptedAnimLoop( $introtubemarine_1, "floating_tube", 4 ); sys.trigger( $introtubemarine_1 ); sys.wait( 22 ); $introtubemarine_1.remove(); } void seeStrauss1() { thread straussOnTubes(); sys.trigger( $straussMusic ); aiScriptedMoveWait( $redshirt2, $target_null_10, 4, 0 ); aiScriptedFaceWait( $redshirt2, $func_static_54295, 0 ); aiSpeak( $redshirt2, "lipsync_mitch_needtogetdown" ); aiScriptedAnimWait( $redshirt2, "point_forward", 4, 1 ); } //---------------------------------------------------------------------------------- // random radiochatter //---------------------------------------------------------------------------------- void almostThere() { radioChatterPlay( $func_radiochatter_cin_1, "vo_tak_watchdek" ); if ( !DISABLE_QUICKSAVES ) { sys.trigger( $func_savegame_1 ); } aiScriptedMoveWait( $redshirt2, $target_null_11, 4, 0 ); aiScriptedFaceWait( $redshirt2, $func_static_53940, 0 ); aiScriptedAnimWait( $redshirt2, "console_stand_start", 4, 0 ); aiScriptedAnimLoop( $redshirt2, "console_stand_loop", 4 ); sys.wait( 1 ); aiSpeakWait( $redshirt2, "lipsync_mitch_stopmachine" ); aiSpeakWait( $redshirt2, "lipsync_mitch_letout" ); aiSpeakWait( $redshirt2, "lipsync_mitch_dooropen" ); sys.wait( 1 ); aiSpeakWait( $redshirt2, "lipsync_mitch_there" ); aiScriptedAnim( $redshirt2, "console_stand_end", 4, 1 ); sys.trigger( $trigger_relay_14 ); } //---------------------------------------------------------------------------------- // tactical guys getting off a cat scan object thingie //---------------------------------------------------------------------------------- void catscanGuy1() { aiScriptedAnimWait( $catscan_tactical_1, "bio_catscan_getup", 4, 1 ); $catscan_tactical_1.becomeAggressive(); } void catscanGuy2() { aiScriptedAnimWait( $catscan_tactical_2, "bio_catscan_getup", 4, 1 ); $catscan_tactical_2.becomeAggressive(); } void catscanGetup() { thread catscanGuy1(); sys.wait( 2 ); thread catscanGuy2(); } //---------------------------------------------------------------------------------- // big guys post objective 1 floating up into player view //---------------------------------------------------------------------------------- void moveHHtanks() { aiScriptedMove( $monster_hh_tank_1, $null_monster_hh_tank_1, 32, 1 ); aiScriptedMove( $monster_hh_tank_2, $null_monster_hh_tank_2, 32, 1 ); } //-------------------------------------------------------------------------- // BOSS BAAAAAAAAAAAAAAAAAAATTLE //-------------------------------------------------------------------------- void prebossSave() { radioChatterPlay( $func_radiochatter_cin_1, "vo_tak_dekstrss" ); if ( !DISABLE_QUICKSAVES ) { sys.trigger( $func_savegame_1 ); } sys.killthread( "map_m05::radioBattle1" ); } void prebossCinematic() { sys.trigger( $obj0_complete ); sys.trigger( $target_objectivebeacon_1 ); sys.trigger( $painlordMusic ); $redshirt2.remove(); sys.trigger( $mitchell_to_die ); thread painlord::setupProcessing(); sys.setCamera( $painlord_intro_cam_1 ); $func_mover_painlord_introcam.time( 3 ); $func_mover_painlord_introcam.moveTo( $tar_mover_painlord_introcam ); aiScriptedMove( $mitchell_to_die, $painlordmitchellspot, 16, 0 ); sys.wait( 3 ); sys.setCamera( $painlord_intro_cam_3 ); aiScriptedWait( $mitchell_to_die ); aiScriptedFaceWait( $mitchell_to_die, $tar_cin_end_dekard_1, 0 ); aiSpeakWait( $mitchell_to_die, "lipsync_mitch_wecangetst" ); aiScriptedFaceWait( $theboss, $mitchell_to_die, 1 ); sys.setCamera( $painlord_intro_cam_2 ); aiSpeakWait( $mitchell_to_die, "lipsync_mitch_whathll" ); aiScriptedAnim( $theboss, "melee_attack1", 4, 1 ); aiSpeakWait( $mitchell_to_die, "lipsync_mitch_arrrg" ); $mitchell_to_die.kill(); sys.wait( .5 ); $player1.setOrigin( $tar_cin_end_dekard_1.getOrigin() ); sys.firstPerson(); $player1.setViewAngles( '0 90 0' ); sys.trigger( $target_bossbattle_1 ); $theboss.becomeAggressive(); $func_door_1630.lock( 1 ); // don't leave plz $func_door_1631.lock( 1 ); thread radioBattle2(); thread painlord::processingLine(); //sys.trigger( $obj1 ); } //------------------------------------------------------------------- // The Pain Lord(r) dies (omg) //------------------------------------------------------------------- void setupProcessingLineDeath() { $moverpod0.time( .1 ); $moverpod1.time( .1 ); $moverpod2.time( .1 ); $moverpod3.time( .1 ); $moverpod4.time( .1 ); $painlordMachinePushingDown.time( .1 ); $painlordMachinePushingDown.moveTo( $processingloc_up ); $moverpod0.moveTo( $processingloc4a ); $moverpod1.moveTo( $processingloc3a ); $moverpod2.moveTo( $processingloc2a ); $moverpod3.moveTo( $processingloc1a ); $moverpod4.moveTo( $pod_to_here ); $theboss.setOrigin( $painlord_death_spot.getOrigin() ); } void postBossHack() { sys.killthread( "map_m05::radioBattle2" ); sys.fadeOut( '0 0 0', 2 ); sys.wait( 2 ); sys.trigger( $painlordDeadMusic ); thread setupProcessingLineDeath(); sys.wait( .1 ); $pl_tubemarine_4.remove(); sys.trigger( $tak ); sys.trigger( $strauss ); sys.trigger( $darnell ); sys.trigger( $navajas ); sys.trigger( $dekard_boss_cinematic ); $func_door_1633.lock( 0 ); sys.setCamera( $painlord_outro_cam_2 ); sys.fadeIn( '0 0 0', 2 ); aiSpeakWait( $darnell, "lipsync_darn_dammitch" ); sys.setCamera( $painlord_outro_cam_1 ); $navajas.lookAt( $darnell ); aiSpeakWait( $navajas, "lipsync_nava_exttakecare" ); $navajas.lookAt( $strauss ); radioChatterPlayWait( $func_radiochatter_cin_1, "vo_marks_dekstatrep" ); $func_mover_painlord_outrocam_5.time( 9 ); sys.setCamera( $painlord_outro_cam_5 ); $func_mover_painlord_outrocam_5.moveTo( $tar_mover_painlord_outrocam_5 ); aiSpeakComlinkWait( $dekard_boss_cinematic, "lipsync_dek_wegotstrss" ); radioChatterPlayWait( $func_radiochatter_cin_1, "vo_marks_shitstrss" ); sys.setCamera( $painlord_outro_cam_3 ); $navajas.lookAt( $strauss ); aiSpeakWait( $navajas, "lipsync_nava_battfine" ); $navajas.lookAt( $dekard_boss_cinematic ); aiSpeakWait( $navajas, "lipsync_nava_couplehrs" ); sys.setCamera( $painlord_outro_cam_5 ); radioChatterPlayWait( $func_radiochatter_cin_1, "vo_marks_niceevac" ); aiSpeakComlinkWait( $dekard_boss_cinematic, "lipsync_dek_yessir5" ); sys.setCamera( $painlord_outro_cam_6 ); $tak.lookAt( $dekard_boss_cinematic ); $strauss.lookAt( $dekard_boss_cinematic ); $navajas.lookAt( $dekard_boss_cinematic ); aiSpeakWait( $dekard_boss_cinematic, "lipsync_dek_taknavast" ); sys.setCamera( $painlord_outro_cam_4 ); aiSpeakWait( $strauss, "lipsync_strauss_allthat2" ); sys.setCamera( $painlord_outro_cam_5 ); $dekard_boss_cinematic.lookAt( $tak ); aiSpeakWait( $dekard_boss_cinematic, "lipsync_dek_youtwoete" ); sys.setCamera( $painlord_outro_cam_4 ); $tak.lookAt( $strauss ); aiSpeakWait( $tak, "lipsync_tak_yessir6" ); aiSpeakWait( $strauss, "lipsync_strauss_gratitude" ); sys.fadeOut( '0 0 0', 2 ); sys.wait( 2 ); $dekard_boss_cinematic.remove(); sys.trigger( $teleport_postboss ); sys.firstPerson(); $tak.lookAt( $null_entity ); sys.fadeIn( '0 0 0', 2 ); $darnell.setTalkState( TALK_OK ); $navajas.setTalkState( TALK_OK ); $tak.setTalkState( TALK_OK ); $strauss.setTalkState( TALK_OK ); // $darnell.setLeader( $player1 ); $navajas.setLeader( $tak ); $strauss.setLeader( $tak ); $strauss.disableHeal(); // only need Tak to heal sys.trigger( $obj2 ); } void bossDies() { //sys.trigger( $obj1_complete ); thread postBossHack(); } void killBossHack() { $theboss.kill(); } //-------------------------------------------------------------------------- // dialog JERKOFF ROFFLECAUST //-------------------------------------------------------------------------- void takTalks() { if ( !TAK_HAS_TALKED ) { if ( TAK_CAN_TALK ) { TAK_CAN_TALK = 0; TAK_HAS_TALKED = 1; $tak.lookAt( $player1 ); aiSpeakWait( $tak, "lipsync_tak_strssdecrypt" ); $strauss.lookAt( $tak ); aiSpeakWait( $strauss, "lipsync_strauss_whatdata" ); $tak.lookAt( $strauss ); aiSpeakWait( $tak, "lipsync_tak_wefndunprot" ); $tak.lookAt( $null_entity ); $strauss.lookAt( $null_entity ); aiSpeakWait( $strauss, "lipsync_strauss_nowisee" ); } } } void darnellTest() { aiScriptedMoveWait( $darnell, $tar_DAMNYOU, 4, 1 ); $darnell.setLeader( $player1 ); } //-------------------------------------------------------------------------- // Darnell calls the guys to move up //-------------------------------------------------------------------------- void moveUp() { aiSpeakWait( $darnell, "lipsync_darn_allclr" ); aiSpeakComlinkWait( $darnell, "lipsync_darn_takmoveup" ); radioChatterPlayWait( $func_radiochatter_cin_1, "vo_tak_moving5" ); } //-------------------------------------------------------------------------- // lolz //-------------------------------------------------------------------------- void darnellPos() { aiScriptedMoveWait( $darnell, $pw_darnell_spot, 4, 1 ); aiSpeakComlinkWait( $darnell, "lipsync_darn_taklift" ); radioChatterPlayWait( $func_radiochatter_cin_1, "vo_tak_rogmoveup" ); } void takPos() { aiScriptedMoveWait( $tak, $pw_tak_spot, 4, 1 ); aiScriptedFaceWait( $tak, $elevDoor_lock_1, 1 ); aiScriptedAnimWait( $tak, "use_gui_standing_start", 4, 1 ); // use_gui_standing_start aiSpeak( $tak, "lipsync_tak_downmin" ); aiScriptedAnimLoop( $tak, "use_gui_standing_loop", 4 ); // use_gui_standing_loop } void straussPos() { aiScriptedMoveWait( $strauss, $pw_strauss_spot, 4, 1 ); aiScriptedFace( $strauss, $elevDoor_lock_1, 0 ); } void penisWaving() { $tak.becomePassive( 1 ); $strauss.becomePassive( 1 ); TAK_CAN_TALK = 0; float thread1; float thread2; $strauss.setLeader( $null_entity ); $darnell.setLeader( $null_entity ); $navajas.setLeader( $null_entity ); darnellPos(); aiScriptedMove( $navajas, $pw_navajas_spot, 4, 1 ); thread1 = thread takPos(); thread2 = thread straussPos(); sys.waitForThread( thread1 ); sys.waitForThread( thread2 ); sys.wait( 2 ); aiScriptedAnimWait( $strauss, "weaponless_idle4_start", 4, 0 ); aiScriptedAnimLoop( $strauss, "weaponless_idle4_loop", 4 ); aiSpeakWait( $strauss, "lipsync_strauss_dobypass" ); aiSpeakWait( $tak, "lipsync_tak_really2" ); aiSpeakWait( $strauss, "lipsync_strauss_stepas" ); aiScriptedAnimWait( $tak, "use_gui_standing_end", 4, 1 ); // use_gui_standing_end aiScriptedMoveWait( $tak, $pw_tak_spot_bak, 4, 1 ); aiScriptedFace( $tak, $elevDoor_lock_1, 0 ); aiScriptedMoveWait( $strauss, $pw_tak_spot, 4, 1 ); aiScriptedFaceWait( $strauss, $elevDoor_lock_1, 1 ); aiScriptedAnimWait( $strauss, "use_gui_standing_start", 4, 1 ); // use_gui_standing_start aiScriptedAnimLoop( $strauss, "use_gui_standing_loop", 4 ); // use_gui_standing_loop aiSpeakWait( $strauss, "lipsync_strauss_infutur" ); aiSpeakWait( $strauss, "lipsync_strauss_execcmd" ); $elevDoor_lock_1.hide(); $elevDoor_open_1.show(); sys.trigger( $elevDoor_1 ); //$elevDoor_1.lock( 0 ); aiScriptedAnimWait( $strauss, "use_gui_standing_end", 4, 0 ); // use_gui_standing_end aiSpeak( $tak, "lipsync_tak_damnfast" ); thread getOnFreightElevator(); } //-------------------------------------------------------------------------- // Getting the guys on the Freight Elevator and having it go up //-------------------------------------------------------------------------- void guysRunningOut() { sys.wait( 3 ); sys.trigger( $callRunningGuy_1 ); sys.trigger( $callRunningGuy_2 ); } void takElevPos() { aiScriptedMoveWait( $tak, $takElevSpot, 4, 0 ); } void darnellElevPos() { aiScriptedMoveWait( $darnell, $darnellElevSpot, 4, 0 ); aiScriptedAnimWait( $darnell, "stand_to_crouch_scripted", 4, 0 ); aiScriptedAnimLoop( $darnell, "crouch_idle", 4 ); } void navajasElevPos() { aiScriptedMoveWait( $navajas, $navajasElevSpot, 4, 0 ); aiScriptedAnimWait( $navajas, "stand_to_crouch_scripted", 4, 0 ); aiScriptedAnimLoop( $navajas, "crouch_idle", 4 ); } void straussElevPos() { aiScriptedMoveWait( $strauss, $straussElevSpot, 4, 0 ); aiScriptedFaceWait( $strauss, $elevAControls, 0 ); //$strauss.forcePosture( AIPOSTURE_CROUCH ); } void freightElevDialg() { sys.wait( 6 ); $tak.lookAt( $strauss ); aiSpeakWait( $tak, "lipsync_tak_docreat" ); $strauss.lookAt( $tak ); aiSpeakWait( $strauss, "lipsync_strauss_obvcap" ); aiSpeakWait( $strauss, "lipsync_strauss_revealnex" ); $darnell.lookAt( $strauss ); aiSpeakWait( $darnell, "lipsync_darn_sndtort" ); $strauss.lookAt( $darnell ); aiSpeakWait( $strauss, "lipsync_strauss_iassure" ); $strauss.lookAt( $player1 ); aiSpeakWait( $strauss, "lipsync_strauss_trunklines" ); $strauss.lookAt( $null_entity ); radioChatterPlayWait( $func_radiochatter_cin_1, "vo_marks_marinesget" ); } void getOnFreightElevator() { float thread1; float thread2; float thread3; float thread4; thread1 = thread takElevPos(); thread2 = thread darnellElevPos(); thread3 = thread navajasElevPos(); thread4 = thread straussElevPos(); sys.waitForThread( thread1 ); sys.waitForThread( thread2 ); sys.waitForThread( thread3 ); sys.waitForThread( thread4 ); sys.trigger( $trig_lastelevator ); } void playerOnFreightElev() { $assholePlayerClip.show(); thread guysRunningOut(); aiScriptedAnimWait( $tak, "point_forward", 5, 0 ); setNewTimes( $elevGateA_1 , 1, .5, .2 ); $elevGateA_1.rotateOnce( '0 0 90' ); sys.wait( 2 ); setNewTimes( $elevA, 50, 3, 8 ); $elevAControls.guiEvent( "anim_up" ); $elevA.moveTo( $LONGESTELEVATOREVERTOP ); aiScriptedFaceWait( $tak, $strauss, 0 ); aiScriptedAnimWait( $tak, "idle_weapon_3_start", 4, 0 ); aiScriptedAnimLoop( $tak, "idle_weapon_3_loop", 4 ); thread freightElevDialg(); sys.waitFor( $elevA ); $elevAControls.guiEvent( "anim_up_reset" ); setNewTimes( $elevGateA_2 , 1 , .5 , .2 ); $elevGateA_2.rotateOnce( '0 0 90' ); thread map_m05::freightElevTop(); } //-------------------------------------------------------------------------- // reached the top //-------------------------------------------------------------------------- void freightElevTop() { TAK_CAN_TALK = 1; //$strauss.forcePosture( AIPOSTURE_DEFAULT ); aiScriptedAnim( $navajas, "crouch_to_stand_scripted", 4, 1 ); aiScriptedAnim( $darnell, "crouch_to_stand_scripted", 4, 1 ); $strauss.setLeader( $tak ); $navajas.setLeader( $tak ); aiScriptedMove( $darnell, $elev_top_darnell_spot, 16, 1 ); aiScriptedMove( $navajas, $elev_top_navajas_spot, 16, 1 ); aiScriptedMove( $strauss, $elev_top_strauss_spot, 16, 1 ); aiScriptedAnimWait( $tak, "idle_weapon_3_end", 4, 0 ); aiScriptedMove( $tak, $elev_top_tak_spot, 16, 1 ); } //-------------------------------------------------------------------------- // Walking outside //-------------------------------------------------------------------------- void pressingTowardsEnd() { aiScriptedMove( $tak, $elev_top_tak_spot_1, 16, 1 ); aiScriptedMove( $darnell, $elev_top_darnell_spot_1, 16, 1 ); aiScriptedAnimWait( $planeMarine, "com_link_start", 4, 0 ); aiScriptedAnimLoop( $planeMarine, "com_link_loop", 4 ); } void reachedEnd() { sys.trigger( $obj2_complete ); radioChatterPlay( $func_radiochatter_cin_1, "vo_vansen_hannfalsq" ); sys.fadeOut( '0 0 0', 6 ); sys.wait( 6 ); sys.trigger( $target_endlevel_1 ); } //-------------------------------------------------------------------------- //========================================================================== // Random AI specialized and generalized helper functions //========================================================================== //-------------------------------------------------------------------------- void setLeader1() { $redshirt1.setLeader( $player1 ); $redshirt2.setLeader( $player1 ); } //-------------------------------------------------------------------------- // Redshirt flashlight scripts //-------------------------------------------------------------------------- void rs1FlashlightOn() { $redshirt1.flashlight(1); } void rs2FlashlightOn() { $redshirt2.startSound( "snd_flashlight", SND_CHANNEL_ANY, 1); $redshirt2.flashlight(1); } void rs1FlashlightOff() { $redshirt1.startSound( "snd_flashlight", SND_CHANNEL_ANY, 1); $redshirt1.flashlight(0); } void rs2FlashlightOff() { $redshirt2.startSound( "snd_flashlight", SND_CHANNEL_ANY, 1); $redshirt2.flashlight(0); } void mitchCallout1() { aiSpeak( $redshirt2, "lipsync_mitch_thereheis" ); } void mitchCallout2() { aiSpeak( $redshirt2, "lipsync_mitch_iseehim" ); } //------------------------------------------------------------------- // movement past elevator two cut scene (name_1 and tar_name_b_#) //------------------------------------------------------------------- void gotob1() { if ( REDSHIRT2_NEED_TELEPORT ) { $redshirt2.scriptedStop(); $redshirt2.setOrigin( $tar_redshirt2_el2_bottom.getOrigin() ); } thread radioBattle1(); } //-------------------------------------------------------------------------- //========================================================================== // ENVIRONMENTAL FUNCTIONS // moving bridges, special doors, anything that doesn't have to do with // ai-related activities or whatever //========================================================================== //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // Low level bridge helper, rotate the platform parts into position. // flip option to handle segments on the right vs. left half of room //-------------------------------------------------------------------------- void MoveBridgeSegment(entity plat, entity shaft, float flipped) { plat.bind(shaft); // plat becomes child of the shaft plat.time( 1.5 ); plat.decelTime( 0.5 ); plat.accelTime( 0.25 ); if ( flipped ) { plat.rotateTo('0 -90 0'); } else { plat.rotateTo('0 90 0'); } sys.wait( 0.5 ); shaft.time( 1 ); shaft.decelTime( 0.5 ); shaft.accelTime( 0.25 ); shaft.rotateUpTo( 0, 0 ); sys.waitFor(shaft); plat.unbind(); } //-------------------------------------------------------------------------- // Move the gui out of the way //-------------------------------------------------------------------------- void bridgeGuiIn() { sys.wait( 1.5 ); $gui_arm.time( .25 ); $gui_arm.move( EAST, 160 ); sys.trigger( $gui_panel_out ); sys.waitFor( $gui_arm ); } //-------------------------------------------------------------------------- // Move the bridge into place (long one) //-------------------------------------------------------------------------- void InitBridgeThree() { $bridge_gui_2_real.setGuiParm("noninteractive", "1"); thread bridgeGuiIn(); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_14, $bridgePlatSupport2_14, 1); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_13, $bridgePlatSupport2_13, 0); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_12, $bridgePlatSupport2_12, 1); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_11, $bridgePlatSupport2_11, 0); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_10, $bridgePlatSupport2_10, 1); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_9, $bridgePlatSupport2_9, 0); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_8, $bridgePlatSupport2_8, 1); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_7, $bridgePlatSupport2_7, 0); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_6, $bridgePlatSupport2_6, 1); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_5, $bridgePlatSupport2_5, 0); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_4, $bridgePlatSupport2_4, 1); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_3, $bridgePlatSupport2_3, 0); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_2, $bridgePlatSupport2_2, 1); sys.wait(0.25); thread MoveBridgeSegment($bridgePlat2_1, $bridgePlatSupport2_1, 0); } //---------------------------------------------------------------------------------- // A 'light group' consists of exactly 2 instances of 3 related objects. // These three related objects are as follows.. // 1) A floor panel that is the physical representation of a light emitter. // This must always be visible, but needs to change color. Named: floorPanel_# // 2) The actual light source...can just turn on/off. Named: floorLight_# // 3) The flare tied to the physical representation of the light emitter. // This is just shown/hid. Named: floorFlare_# // // The number trailing the name of each object designates a grouping of sorts. // Numbers 0 & 1 designate the first toggleable group, 2 & 3 the second group, etc. //---------------------------------------------------------------------------------- void DoLightGroupLights(entity _ent, float showIt) { if ( _ent ) { if ( showIt ) { _ent.fadeInLight(0.05);//show(); } else { _ent.fadeOutLight(0.1);//hide(); } } } void DoLightGroupPanels(entity _ent, float showIt) { if ( _ent ) { if ( showIt ) { _ent.setColor(0.84, 0.47, 0.24); } else { _ent.setColor(0,0,0); } } } void DoLightGroupFlares(entity _ent, float showIt) { if ( _ent ) { if ( showIt ) { _ent.show();//setColor(0.84, 0.47, 0.24); } else { _ent.hide();//setColor(0,0,0); } } } void DoLightGroup(float grpID, float showIt) { entity _ent; // ----Colored Light Panel -------------- _ent = sys.getEntity( "floorPanel_" + grpID); thread DoLightGroupPanels(_ent, showIt); _ent = sys.getEntity( "floorPanel_" + (grpID+1)); thread DoLightGroupPanels(_ent, showIt); // ----Toggle Colored Lights --------------- _ent = sys.getEntity( "floorLight_" + grpID ); thread DoLightGroupLights(_ent, showIt); _ent = sys.getEntity( "floorLight_" + (grpID+1) ); thread DoLightGroupLights(_ent, showIt); // ----Colored flare -------------------- _ent = sys.getEntity( "floorFlare_" + grpID ); thread DoLightGroupFlares(_ent, showIt); _ent = sys.getEntity( "floorFlare_" + (grpID+1) ); thread DoLightGroupFlares(_ent, showIt); } //-------------------------------------------------------------------------- // Run through name lights and make them do their thing. //-------------------------------------------------------------------------- void ToggleGroupLights(float startID, float endID) { float grpID; while(1) { for (grpID = startID; grpID <= endID; grpID += 2 ) { DoLightGroup(grpID,1); sys.wait(0.15); DoLightGroup(grpID,0); } } } //-------------------------------------------------------------------------- // The floor lights cycle in such a way as to give the feeling of directing // or pushing the player along through the scanning unit. //-------------------------------------------------------------------------- void startFloorLightGroup1() { //sys.println("startFloorLightGroup1()"); thread ToggleGroupLights(0,31); } //-------------------------------------------------------------------------- // After the holding cells //-------------------------------------------------------------------------- void startFloorLightGroup2() { //sys.println("startFloorLightGroup2()"); thread ToggleGroupLights(100,115); } //-------------------------------------------------------------------------- // After the fancy bridges //-------------------------------------------------------------------------- void startFloorLightGroup3() { //sys.println("startFloorLightGroup3()"); thread ToggleGroupLights(200,219); } //-------------------------------------------------------------------------- // Multiple threads going off for two reasons: // -- the period of an individual light stays reasonable // -- areas that diverge and converge and need to stay in sync //-------------------------------------------------------------------------- void startFloorLightGroup4() { //sys.println("startFloorLightGroup4()"); thread ToggleGroupLights(300, 323); thread ToggleGroupLights(400, 423); thread ToggleGroupLights(500, 523); thread ToggleGroupLights(600, 623); thread ToggleGroupLights(700, 723); thread ToggleGroupLights(800, 823); thread ToggleGroupLights(900, 923); thread ToggleGroupLights(1000, 1021); } //-------------------------------------------------------------------------- // Marines in tubes floating around //-------------------------------------------------------------------------- void tubeTransportSystem() { sys.trigger( $tubemarine1 ); aiScriptedAnimLoop( $tubemarine1, "floating_tube", 0 ); sys.trigger( $tubemarine2 ); aiScriptedAnimLoop( $tubemarine2, "floating_tube", 0 ); sys.trigger( $tubemarine3 ); aiScriptedAnimLoop( $tubemarine3, "floating_tube", 0 ); $transport_topclamp_1.time( 5.0 ); $transport_topclamp_2.time( 5.0 ); $transport_topclamp_3.time( 5.0 ); while( 1 ) { $transport_topclamp_1.hide(); $transport_pod_1.hide(); $tubemarine1.hide(); $transport_topclamp_3.show(); $transport_pod_3.show(); $tubemarine3.show(); $transport_topclamp_1.moveTo( $transport_target_3 ); $transport_topclamp_2.moveTo( $transport_target_1 ); $transport_topclamp_3.moveTo( $transport_target_2 ); sys.wait( 1.35 ); sys.trigger( $func_door_1643 ); sys.wait( 1.0 ); sys.trigger( $func_door_1570 ); sys.waitFor( $transport_topclamp_3 ); $transport_topclamp_2.hide(); $transport_pod_2.hide(); $tubemarine2.hide(); $transport_topclamp_1.show(); $transport_pod_1.show(); $tubemarine1.show(); $transport_topclamp_1.moveTo( $transport_target_2 ); $transport_topclamp_2.moveTo( $transport_target_3 ); $transport_topclamp_3.moveTo( $transport_target_1 ); sys.wait( 1.35 ); sys.trigger( $func_door_1643 ); sys.wait( 1.0 ); sys.trigger( $func_door_1570 ); sys.waitFor( $transport_topclamp_3 ); $transport_topclamp_2.show(); $transport_pod_2.show(); $tubemarine2.show(); $transport_topclamp_3.hide(); $transport_pod_3.hide(); $tubemarine3.hide(); $transport_topclamp_1.moveTo( $transport_target_1 ); $transport_topclamp_2.moveTo( $transport_target_2 ); $transport_topclamp_3.moveTo( $transport_target_3 ); sys.wait( 1.35 ); sys.trigger( $func_door_1643 ); sys.wait( 1.0 ); sys.trigger( $func_door_1570 ); sys.waitFor( $transport_topclamp_3 ); } } void tubeTransportSystem2() { sys.trigger( $tubemarine4 ); aiScriptedAnimLoop( $tubemarine4, "floating_tube", 0 ); sys.trigger( $tubemarine5 ); aiScriptedAnimLoop( $tubemarine5, "floating_tube", 0 ); sys.trigger( $tubemarine6 ); aiScriptedAnimLoop( $tubemarine6, "floating_tube", 0 ); $transport_topclamp_4.time( 7.0 ); $transport_topclamp_5.time( 7.0 ); $transport_topclamp_6.time( 7.0 ); while( 1 ) { $transport_topclamp_6.hide(); $transport_pod_6.hide(); $tubemarine6.hide(); $transport_topclamp_4.show(); $transport_pod_4.show(); $tubemarine4.show(); $transport_topclamp_6.moveTo( $transport_target_4 ); $transport_topclamp_5.moveTo( $transport_target_6 ); $transport_topclamp_4.moveTo( $transport_target_5 ); sys.wait( 1.45 ); sys.trigger( $func_door_1644 ); sys.wait( 3.0 ); sys.trigger( $func_door_1646 ); sys.waitFor( $transport_topclamp_4 ); $transport_topclamp_5.hide(); $transport_pod_5.hide(); $tubemarine5.hide(); $transport_topclamp_6.show(); $transport_pod_6.show(); $tubemarine6.show(); $transport_topclamp_6.moveTo( $transport_target_5 ); $transport_topclamp_5.moveTo( $transport_target_4 ); $transport_topclamp_4.moveTo( $transport_target_6 ); sys.wait( 1.45 ); sys.trigger( $func_door_1644 ); sys.wait( 3.0 ); sys.trigger( $func_door_1646 ); sys.waitFor( $transport_topclamp_4 ); $transport_topclamp_5.show(); $transport_pod_5.show(); $tubemarine5.show(); $transport_topclamp_4.hide(); $transport_pod_4.hide(); $tubemarine4.hide(); $transport_topclamp_6.moveTo( $transport_target_6 ); $transport_topclamp_5.moveTo( $transport_target_5 ); $transport_topclamp_4.moveTo( $transport_target_4 ); sys.wait( 1.45 ); sys.trigger( $func_door_1644 ); sys.wait( 3.0 ); sys.trigger( $func_door_1646 ); sys.waitFor( $transport_topclamp_4 ); } } void radioBattle1() // elevator -> strauss { /* float t; t = randomRoundFloat( 1, 30 ) + 20; sys.wait(t); radioChatterPlayWait( $func_radiochatter_ancillary, "vo_6_2_3" ); t = randomRoundFloat( 1, 30 ) + 60; sys.wait(t); radioChatterPlayWait( $func_radiochatter_ancillary, "vo_6_2_6" ); t = randomRoundFloat( 1, 30 ) + 60; sys.wait(t); radioChatterPlayWait( $func_radiochatter_ancillary, "vo_6_2_7" ); t = randomRoundFloat( 1, 30 ) + 60; sys.wait(t); radioChatterPlayWait( $func_radiochatter_ancillary, "vo_6_2_8" ); */ } void radioBattle2() // strauss -> ending intro { float t; radioChatterPlayWait( $func_radiochatter_ancillary, "vo_tak_holdtgt" ); t = randomRoundFloat( 1, 20 ) + 15; sys.wait(t); radioChatterPlayWait( $func_radiochatter_ancillary, "vo_tak_wontmuch" ); t = randomRoundFloat( 1, 20 ) + 15; sys.wait(t); radioChatterPlayWait( $func_radiochatter_ancillary, "vo_tak_evacdek" ); t = randomRoundFloat( 1, 20 ) + 15; sys.wait(t); radioChatterPlayWait( $func_radiochatter_ancillary, "vo_tak_wecntget" ); t = randomRoundFloat( 1, 20 ) + 15; sys.wait(t); radioChatterPlayWait( $func_radiochatter_ancillary, "vo_tak_almostshit" ); } //-------------------------------------------------------------------------- // RANDOM HELPER FUNCTIONS //-------------------------------------------------------------------------- //------------------------------------------------------------------------------- // void moveFaceWait(entity mover, entity location, entity target) // // This moves the entity to a location and faces a target. // // mekberg | Jan 2004 //------------------------------------------------------------------------------- void moveFaceWait(entity mover, entity location, entity target) { aiScriptedMoveWait(mover, location, 4, 1); aiScriptedFaceWait(mover, target, 1); } //-------------------------------------------------------------------------- void main() { thread startFloorLightGroup1(); thread startFloorLightGroup2(); thread startFloorLightGroup3(); thread startFloorLightGroup4(); thread tubeTransportSystem(); thread tubeTransportSystem2(); thread goingDown(); //temp $redshirt1.setUndying( 1 ); $gui_arm.time(.25); $gui_arm.move( EAST, 160 ); $elevator2.setGuiParm( "noninteractive", "1" ); $light_5015.Off(); $introPump1.playCycle( ANIMCHANNEL_ALL, "cycle"); $introPump2.playCycle( ANIMCHANNEL_ALL, "cycle"); $introPump3.playCycle( ANIMCHANNEL_ALL, "cycle"); $introPump4.playCycle( ANIMCHANNEL_ALL, "cycle"); $introPump5.playCycle( ANIMCHANNEL_ALL, "cycle"); $introPump6.playCycle( ANIMCHANNEL_ALL, "cycle"); // setting up the initial bridge $drawbridge_origin1_1.time(0.25); $drawbridge_origin1_1.accelTime(0); $drawbridge_origin1_1.decelTime(0); $drawbridge_origin2_1.time(0.25); $drawbridge_origin2_1.accelTime(0); $drawbridge_origin2_1.decelTime(0); $drawbridge_origin1_1.rotateOnce( '80 0 0' ); $drawbridge_origin2_1.rotateOnce( '-180 0 0' ); } } // end namespace