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