Subversion-Projekte sthq.gbs

Revision

Revision 430 | Revision 434 | Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

//-----------------------------------------------------------------
//  EF2 Level Script File
//
//  Level:        map4
//  Script By:    Nemo22
//  Geometry By:  Argyle
//  Created on:   01/04/2004
//
//  Last Edited By: Nemo22
//-----------------------------------------------------------------


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();

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

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

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


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 );
}


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();
}