Subversion-Projekte sthq.gbs

Revision

Revision 435 | Revision 444 | Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

//-----------------------------------------------------------------
//  EF2 Level Script File
//
//  Level:              map4
//  Script By:          Nemo22, Argyle, TickNSwisted, LTiefland
//  Geometry By:        Argyle, TickNSwisted
//  Created on:         01/04/2004
//  Last Edited on:     15/06/2004
//  Last Edited By:     LTiefland
//-----------------------------------------------------------------



float cadet1_pos, crew1_pos, lift_a_height, lift_b_height, lift_a_pos, lift_b_pos, player_pos;

void main();
void init();
void trigger_shower_door();
void wall_exp();
void redalert();
void kraftfeld();
void poison_gas();
void before_lab();
void inside_lab();
void koi_swim();
void move_lifta();
void move_liftb();

#include "maps/global_scripts/global_common.scr"
#include "maps/global_scripts/global_math.scr"

void move_lifta()
{
        wait(3);
        $trigger_lift_a_low.nottriggerable();
        $trigger_lift_a_up.nottriggerable();
        if (crew1_pos==0)
        {
                $lift_a.moveup(lift_a_height);
                lift_a_pos=2;
                waitfor($lift_a);
                lift_a_pos=1;
                $crew1.walkto("$lift_a_nav2");
                waitfor($crew1);
                wait(3);
                $crew1.walkto("$lift_a_nav3");
                waitfor($crew1);
                $lift_a.movedown(lift_a_height);
                lift_a_pos=2;
                waitfor($lift_a);
                lift_a_pos=0;
                crew1_pos=1;
        }
        else
        {
                if (lift_a_pos==0)
                {
                        wait(3);
                        $lift_a.moveup(lift_a_height);
                        waitfor($lift_a);
                        lift_a_pos=1;
                }
                else
                {
                        wait(3);
                        $lift_a.movedown(lift_a_height);
                        waitfor($lift_a);
                        lift_a_pos=0;
                }
        }
        wait(10);
        $trigger_lift_a_low.triggerable();
        $trigger_lift_a_up.triggerable();
}

void move_liftb()
{
        $trigger_lift_b_low.nottriggerable();
        $trigger_lift_b_up.nottriggerable();
        if (cadet1_pos==1)
        {
                $lift_b.moveup(lift_b_height);
                lift_b_pos=2;
                wait(3);
                lift_b_pos=1;
                $cadet1.walkto("$lift_b_nav2");
                waitfor($cadet1);
                $lift_b.movedown(lift_b_height);
                lift_b_pos=2;
                waitfor($lift_b);
                lift_b_pos=0;
                $cadet1.walkto("$lift_b_nav3");
                waitfor($cadet1);
                $cadet1.walkto("$lift_b_nav4");
                waitfor($cadet1);
                cadet1_pos=0;
        }
        else
        {
                if (lift_b_pos==0)
                {
                        wait(3);
                        $lift_b.moveup(lift_b_height);
                        waitfor($lift_b);
                        lift_b_pos=1;
                }
                else
                {
                        wait(3);
                        $lift_b.movedown(lift_b_height);
                        waitfor($lift_b);
                        lift_b_pos=0;
                }
        }
        wait(10);
        $trigger_lift_b_low.triggerable();
        $trigger_lift_b_up.triggerable();
}

void main()
{
        $player.give( "models/weapons/worldmodel-tricorder-STX.tik" );

        thread init();
        thread redalert();
        koi_swim();

        lift_a_height=80;
        lift_b_height=192;
        lift_a_pos=0;
        lift_b_pos=0;
        crew1_pos=0;
        cadet1_pos=1;
}


void before_lab()
{
        $kraftfeld2.show();
        $kraftfeld_solid2.solid();
        triggerentity( $kraftfeld_sound2 );
}

void inside_lab()
{
        $kraftfeld3.show();
        $kraftfeld_solid3.solid();
        triggerentity( $kraftfeld_sound3 );
        $lab_exit2.time( 1.5 );
        wait( .1 );
        $lab_exit2.moveUp( 120 );
        triggerentity( $lab_exit2_sound );

        $crew1.ai_off();
        $crew1.walkto("$lift_a_nav1");

/*      $cadet1.ai_off();
        $cadet1.walkto("$lift_b_nav1");
        waitfor($cadet1);
        waitfor($lift_b);
        $cadet1.walkto("$lift_b");      */

}


void koi_swim()
{
        wait(1);
        $koi1.anim( "idle" );
        $koi1.followpath( $koi1_path , "loop" , "normalangles" );

        $koi2.anim( "idle" );
        $koi2.followpath( $koi2_path , "loop" , "normalangles" );
}

void init()
{
//--Kraftfelder hiden
        $kraftfeld.hide();
        $kraftfeld2.hide();
        $kraftfeld3.hide();
        $kraftfeld_solid.notsolid();
        $kraftfeld_solid2.notsolid();
        $kraftfeld_solid3.notsolid();
        $kraft_feld_poison.hide();
        $kraft_feld_poison.notsolid();
        
//--Showergirl SetUp
        $showergirl1.ai_off();
        $showergirl1.anim("conv-gesture1");
        
//--Explosionstrigger
        $trigger1.nottriggerable();
        
//--Tür zum Badetimmer
        $shower_door_left.time( .1 );
        $shower_door_right.time( .1 );
        wait( .1 );
        $shower_door_left.moveWest( 40 );
        $shower_door_right.moveEast( 40 );
        
//--Gas im Korridor
        $gas.hide();
}

void trigger_shower_door()
{
        $shower_door_left.time( .35 );
        $shower_door_right.time( .35 );
        wait( .1 );
        $shower_door_left.playsound( "sound/doors/forever_door1.wav" );
        $shower_door_left.moveEast( 40 );
        $shower_door_right.moveWest( 40 );
        wait( 35 );
}

///////////////////////////
//Wand fliegt in die Luft//
///////////////////////////
void wall_exp()
{
        //$wall_puzzle.nottriggerable();
        triggerentity( $blabla_tut );
        triggerentity( $blabla_tut_overload );
        wait( 3.8 );
        $trigger1.triggerable();
        triggerentity( $trigger );
        $console.playsound( "sound/impact/explosion/expl_inside4.wav" );
        triggerentity( $console_exp );
        $player.earthquake( .75, 1.4 );
        $wall_hide.hide();
        wait( .2 );
        $console.playsound( "sound/impact/explosion/expl_inside3.wav" );
        triggerentity( $console_exp1 );
        $console.hide();
        $console.notsolid();
}

/////////////////////////////////////////////////////
/////////////////////Roter Alarm/////////////////////
//Wenn möglich nur target_speaker in den Korridoren//
/////////////////////////////////////////////////////
void redalert()
{
        $world.light_fade( "redalert", .85, .4 );
        $player.playsound( "sound/redalert.mp3" );
        wait( .7 );
        $world.light_fade( "redalert", .2, .6 );
        wait( 1.8 );
        thread redalert();
}

////////////////////////////////////////
//Kraffelder + Sound schalten sich ein//
////////////////////////////////////////
void kraftfeld()
{
        $gas.show();
        $kraftfeld.show();
        $kraftfeld_solid.solid();
        triggerentity( $kraftfeld_sound );
        wait( 1 );
        $player.simpleplaydialog( "localization/sound/dialog/map04/computer/intruder.mp3", 1, 20000 ); //Lieutenant Munro, you have a visitor waiting for you in the main entrance.
        waitDialogLength( "localization/sound/dialog/map04/computer/intruder.mp3" );
        thread poison_gas();
        $player.simpleplaydialog( "localization/sound/dialog/map04/computer/gas.mp3", 1, 20000 ); //Lieutenant Munro, you have a visitor waiting for you in the main entrance.
        waitDialogLength( "localization/sound/dialog/map04/computer/gas.mp3" );
}

void poison_gas()
{
//////////////////////////////30 SEKUNDEN/////////////////////////////////////////
/////////////////////////bis der Spieler stirbt///////////////////////////////////
        //Wenn er oder sie 100 Health hat.
        //"lebendesspielers", mir fiel nichts besseres ein!
        //Note:  Um den Timer zu verändern, kann man zwei Werte verändern.
        //               Der erste Wert ist dazu da, um festzulegen, wie wiel Schaden
        //               verursacht wird. Der zweite Wert ist dazu da, um festzulegen
        //               wann der Spieler wieder verletzt wird.
        //HINWEIS: Wenn du nicht durch das Loch kommst, dann duck dich!
        
        //First Get Initial Value of Chang's life
        float lebendesspielers;
        lebendesspielers = $player.gethealth();
        
        //Now, continue looping until chang is dead.  If chang is saved
        //before he dies, then killthread MUST be called on this thread
        //to stop this counter
        while( lebendesspielers > 1.0 )
        {       
                //Every iteration damage the player
                $player.hurt( 5 );
                lebendesspielers = $player.gethealth();
                //print ("end of cinematic thread life counter\n");
                //Check if chang is 'dead".  If he is, then fail the mission
                if ( lebendesspielers <= 1.0 )
                        {
                                wait( 1 );
                                stuffcmd ( "kill\n" );
                        }
                //Wait a specified interval before damaging again
                wait( 1.5 );            
        }
}

void stop_poison_gas()
{
        killthread( "poison_gas" );
        triggerentity( $kraft_feld_poison_sound );
        $kraft_feld_poison.show();
        $kraft_feld_poison.solid();
}