## XIDMaps
Class Hual04a

source: C:\XIII\XIDMaps\Classes\Hual04a.uc

    Core.Object
       |
       +--Engine.Actor
          |
          +--Engine.Info
             |
             +--XIII.MapInfo
                |
                +--XIDMaps.Map06_HualparBase
                   |
                   +--XIDMaps.Hual04a

Direct Known Subclasses:None

class Hual04a
extends XIDMaps.Map06_HualparBase

    //-----------------------------------------------------------
    //
    //-----------------------------------------------------------

Variables
`XIIIMover` | `CableCarLever`
`name` | `CablecarStartEvent`
`name` | `EventFocusSoldierWithKey`
`name` | `EventMagneticCardPick`
`CWndFocusTrigger` | `FocusTrigger`
`XIIIGoalTrigger` | `FuseInteraction`
`Hual04aDecoFusible` | `FusibleRemisEnPlace`
`XIIIPlayerController` | `PC`
`MagneticPassTrigger` | `PassTrigger`
`CWndSFXTrigger` | `SFXTriggerTelepherique`
`GenNMI` | `SoldiersEnRenforts[3]`
`BaseSoldier` | `SoldiersToKill[8]`
`bool` | `bFuseInPosition`
`bool` | `bTeleOn`
`int` | `eNbMorts,eNbVivants`

States
FinDeMission, RechercheFusible

Function Summary
`void` | `FirstFrame()`
    /*
`void` | `GeneratedPawn(Actor Generator, Pawn Other)`
    /*
`void` | `SetGoalComplete(int N)`
    //_____________________________________________________________________________

State FinDeMission Function Summary

State RechercheFusible Function Summary

Source Code

    00001	//-----------------------------------------------------------
    00002	//
    00003	//-----------------------------------------------------------
    00004	class Hual04a extends Map06_HualparBase;
    00005
    00006	#exec obj load file=MeshObjetsPickup.usx package=MeshObjetsPickup
    00007
    00008	var() BaseSoldier SoldiersToKill[8];
    00009	var() GenNMI SoldiersEnRenforts[3];
    00010	var() name CablecarStartEvent;
    00011	var() Hual04aDecofusible FusibleRemisEnPlace;
    00012	var() XIIIMover CableCarLever;
    00013	var() CwndFocusTrigger FocusTrigger;
    00014	var() name EventFocusSoldierWithKey;
    00015	var() CWndSFXTrigger SFXTriggerTelepherique;
    00016	var() MagneticPassTrigger PassTrigger;
    00017	var() name EventMagneticCardPick;
    00018	var() XIIIGoalTrigger FuseInteraction;
    00019
    00020	var int eNbMorts,eNbVivants;
    00021	var bool bFuseInPosition;
    00022	var bool bTeleOn;
    00023	var XIIIPlayerController PC;
    00024
    00025
    00026
    00027	// Trouver le clef de l'armoire au fusible
    00028	// Active par le flingage de 6 mecs. ____ 6 x XIIIGoalTrigger Goal 99 avec les 6 tags == les 6 event des mecs a buter (differents !!)
    00029	// les 6 mecs à buter sont dans le tableau en variable mapinfo / SoldiersToKill.
    00030
    00031	// Obj 00 = trouver le moyen de fuir par le telepherique
    00032	      // Primary true pendant tous le jeu
    00033	// Obj 01 = Carrington ne doit pas mourrir
    00034	      // AntiGoal Primary true pendant tous le jeu
    00035	// Obj 02 = Trouver un fusible pour remettre en marche le telepherique
    00036	      // Active par l'ouverture d'une armoire (Mover) ____ XIIIGoalTrigger Goal 0 avec le Tag == Event du mover
    00037	      // Armoire vérouillée, Tag du mover == var mapinfo / FusibleLockedDoorEvent
    00038	      // Inactive par le fusible ramasse(obj suivant)
    00039	// Obj 03 = Placer le fusible dans la machinerie
    00040	      // Active par le ramassage du fusible ____ XIIIGoalTrigger Goal 2 avec Tag == Event du EventPick == 'FusibleRamasse'
    00041	      // bCauseEventOnPick true pour le EventPick fusible.
    00042	      // Inactive par l'utilisation du fusible sur un XIIIGoalTrigger (Obj suivant)
    00043	// Obj 04 = Activer le telepherique
    00044	      // Active par l'utilisation du fusible sur un XIIIGoalTrigger ____ XIIIGoalTrigger Goal 3 avec Tag =='FusibleEnPlace' (Modifier l'event du fusible une fois dans l'inventaire du joueur)
    00045	      // Inactive par l'utilisation d'un Mover.
    00046	// Obj 05 = Rejoindre Carrington
    00047	      // Active par l'objectif precedent ____ XIIIGoalTrigger Goal 4 avec Tag == Event du mover pour mettre en route le telepherique
    00048	// Obj 06 = Rdv dans le telepherique
    00049	      // Active en meme temps que le 5.
    00050
    00051	// mis en commentaire le 25/04/03 : enleve le staticmesh jaune au moment de l install !
    00052	/*function FirstFrame()
    00053	{
    00054	    Super.FirstFrame();
    00055
    00056	    if ( FusibleRemisEnPlace != none )
    00057		{
    00058	      FusibleRemisEnPlace.bHidden = true;
    00059		  FusibleRemisEnPlace.RefreshDisplaying();
    00060		}
    00061	}*/
    00062
    00063	//_____________________________________________________________________________
    00064	FUNCTION SetGoalComplete(int N)
    00065	{
    00066		local int i;
    00067		local Inventory Inv;
    00068		local EventItemPick PickU;
    00069		local EventItem EvItem;
    00070		local Hual04aFusible fuse;
    00071
    00072		if ( N < Objectif.Length )
    00073			Super.SetGoalComplete(N);
    00074
    00075		switch (N)
    00076		{
    00077			case 0:     // Activated when fusebox is open
    00078				if (!Objectif[2].bCompleted)     // if player doesn't have the fuse : the new objective is to find a fuse
    00079					SetPrimaryGoal(2);
    00080				else               // if player already have the fuse : the new objective is to installed it in the box
    00081					SetPrimaryGoal(3);
    00082				break;
    00083			case 2:     // Activated when fuse is taken
    00084			case 98:// Pseudo-objective if player found fuse before fusebox
    00085				Objectif[2].bCompleted = true;
    00086				SetSecondaryGoal(2);
    00087				SetPrimaryGoal(3);
    00088				foreach allactors(class'EventItemPick', PickU)
    00089				{
    00090					//        Log("        Grabbed Fusible checking "$PickU$" w/ event "$PickU.Event);
    00091					if ( caps(PickU.Event) == caps('FusibleRamasse') )
    00092					{
    00093					PickU.Event = 'FusibleEnPlace';
    00094					}
    00095				}
    00096				GotoState('RechercheFusible');
    00097				break;
    00098			case 93:   // remplacement du static mesh transparent par le static mesh du fusible
    00099				FusibleRemisEnPlace.StaticMesh = StaticMesh'MeshObjetsPickup.TLfusible';
    00100				FusibleRemisEnPlace.RefreshDisplaying();
    00101				break;
    00102			case 3:     // Activated when fuse is installed
    00103				SetSecondaryGoal(3);
    00104				SetPrimaryGoal(4);
    00105				// remplacement du static mesh transparent par le static mesh du fusible
    00106				FusibleRemisEnPlace.StaticMesh = StaticMesh'MeshObjetsPickup.TLfusible';
    00107				FusibleRemisEnPlace.RefreshDisplaying();
    00108				// Must remove fuse from inventory
    00109				Fuse = Hual04aFusible(XIIIPawn.FindInventoryType(class'Hual04aFusible'));
    00110				//Log("Found Fuse "$Fuse$" in player inventory");
    00111				if ( Fuse != none )
    00112					Fuse.UsedUp();
    00113				SFXTriggerTelepherique.Tag = CableCarLever.Event;
    00114				for (i=0;i<4;i++)
    00115				{
    00116					log(self@" ---> TEST SOLDATS"@SoldiersEnRenforts[i].SpawnActor);
    00117					if (( SoldiersEnRenforts[i] != none ) && ( !SoldiersEnRenforts[i].SpawnActor.bIsDead))
    00118					{
    00119						GotoState('FinDeMission');
    00120						break;
    00121					}
    00122				}
    00123				break;
    00124			case 5: // Activated when Carrington reaches the cable-car and XIII is near enough
    00125				Super.SetGoalComplete(6);
    00126				break;
    00127			case 94: // Activated when cablecar lever is used
    00128				if ( !Objectif[4].bPrimary )
    00129				{
    00130					// le levier n est pas encore en marche
    00131					if (CableCarLever != none )
    00132					{
    00133						CableCarLever.GoToState('PlayerTriggerToggle','Close');
    00134						TriggerEvent('PowerLow',none,none);
    00135					}
    00136					// condition d'échec
    00137					if ( Objectif[3].bPrimary )
    00138					{
    00139						for (i=0;i<4;i++)
    00140						{
    00141							if (( SoldiersEnRenforts[i] != none ) && ( !SoldiersEnRenforts[i].SpawnActor.bIsDead))
    00142							{
    00143								GotoState('FinDeMission');
    00144							}
    00145						}
    00146					}
    00147				}
    00148				else
    00149				{
    00150					// le levier fonctionne, le telepherique peut demarrer
    00151					TriggerEvent ( CableCarStartEvent, self, none );
    00152					CableCarLever.GoToState('Locked');
    00153					CableCarLever.bNoInteractionIcon = true;
    00154					Super.SetGoalComplete(4);
    00155					SetPrimaryGoal(5);
    00156					SetPrimaryGoal(6);
    00157				}
    00158				break;
    00159			case 99:// Activated when a soldier was killed
    00160				eNbMorts ++;
    00161				i = 0;
    00162				while (i<eNbVivants)
    00163				{
    00164					if ( SoldiersToKill[i].bIsDead )
    00165					{
    00166						SoldiersToKill[i] = SoldiersToKill[eNbVivants-1];
    00167						eNbVivants --;
    00168						if (eNbVivants < 2)
    00169						{
    00170							// le dernier soldat porte une carte magnétique
    00171							Inv = GiveSomething(class'MagneticCard', SoldiersToKill[0]);
    00172							Inv.Event = PassTrigger.tag;
    00173							XIIIItems(Inv).EventCausedOnPick = EventMagneticCardPick;
    00174
    00175							FocusTrigger.Focus = SoldiersToKill[0];
    00176							TriggerEvent(EventFocusSoldierWithKey,none,none);
    00177						}
    00178					}
    00179					else
    00180					{
    00181						i ++;
    00182					}
    00183				}
    00184				break;
    00185			case 97:
    00186				if ( bTeleOn )
    00187					SetTimer2(0.5, false);
    00188				break;
    00189			case 96:
    00190				bTeleOn = true;
    00191				break;
    00192		}
    00193	}
    00194
    00195
    00196	// Use this event to force the reactivation of the event if player placed fuse before killing all the gen. basesoldiers.
    00197	event Timer2()
    00198	{
    00199	  TriggerEvent('TeleOn', self, XIIIPawn);
    00200	}
    00201
    00202	State RechercheFusible
    00203	{
    00204		// on recherche le fusible dans l inventaire et on renseigne son acteur d interaction
    00205		event Tick( float dt )
    00206		{
    00207			local Hual04aFusible fuse;
    00208
    00209			Fuse = Hual04aFusible(XIIIPawn.FindInventoryType(class'Hual04aFusible'));
    00210			if ( Fuse != none )
    00211			{
    00212				Fuse.FuseInteraction = FuseInteraction;
    00213				GotoState('');
    00214			}
    00215		}
    00216	}
    00217
    00218	State FinDeMission
    00219	{
    00220	Begin:
    00221		Sleep(2);
    00222		PC = XIIIGameInfo(Level.Game).MapInfo.XIIIController;
    00223		while ( XIIIBaseHud(PC.MyHud).HudMsg != none )
    00224		{
    00225			XIIIBaseHud(PC.MyHud).HudMsg.RemoveMe();
    00226		}
    00227		Super.SetGoalComplete(1);
    00228	}
    00229
    00230
    00231	//_____________________________________________________________________________
    00232	/*function GeneratedPawn(Actor Generator, Pawn Other)
    00233	{
    00234	    if ( Generator == GeneratorForKey )
    00235	    {
    00236	      if ( SoldiersToKill[6] == none )
    00237	      {
    00238	        KillNb ++;
    00239
SoldiersToKill[6] = Basesoldier(Other); 00240 } 00241 else if ( SoldiersToKill[7] == none ) 00242 { 00243 KillNb ++; 00244 SoldiersToKill[7] = Basesoldier(Other); 00245 } 00246 } 00247 }*/ 00248 00249 // ATTENTION !!!!!!!!!!!!!!!!!!!!!! 00250 //EndMapVideo="cine05" 00251 // enlevé pour E3, à remettre impérativement par la suite ! 00252 00253 00254 00255 defaultproperties 00256 { 00257 CablecarStartEvent="TeleOn" 00258 eNbVivants=6 00259 Activate=True 00260 iLoadSpecificValue=81 00261 }

End Source Code