Core.Object | +--Engine.Actor | +--Engine.Info | +--XIII.MapInfo | +--XIDMaps.Map12_PortUSA | +--XIDMaps.Usa01
Chronometre
Chrono
name
PrevState
bBombEventSent,
bBombInPosition
int
eNbSeconds
fHauteur,
fTime
sound
hBombReady
hCountDown
rotator
rRotatorInit
vector
vPosInit
void
FirstFrame()
//_____________________________________________________________________________
SetGoalComplete(int N)
00001 //----------------------------------------------------------- 00002 // 00003 //----------------------------------------------------------- 00004 class Usa01 extends Map12_PortUSA; 00005 00006 var(Usa01SetUp) Usa01DecoBombe BombeDeco; 00007 var(Usa01SetUp) float fBombDelay; 00008 var(Usa01SetUp) float fTempsAvantCamera; 00009 var(Usa01SetUp) float fTempsCamera; 00010 var(Usa01SetUp) float fDelayBeforeEndGame; 00011 var(Usa01SetUp) actor CibleExplosion; 00012 var(Usa01SetUp) int eHauteurCamera; 00013 var(Usa01SetUp) XIIIGoalTrigger BombInteraction; 00014 var float fBombEventDelay, fHauteur, fTime; 00015 var int eNbSeconds; 00016 var bool bBombEventSent, bBombInPosition; 00017 var chronometre Chrono; 00018 var sound hBombReady; 00019 var sound hCountDown; 00020 var rotator rRotatorInit; 00021 var vector vPosInit; 00022 var name PrevState; 00023 00024 //_____________________________________________________________________________ 00025 event ParseDynamicLoading(LevelInfo MyLI) 00026 { 00027 Log("ParseDynamicLoading Actor="$self); 00028 MyLI.ForcedClasses[MyLI.ForcedClasses.Length] = class'Usa01Bombe'; 00029 class'Usa01Bombe'.Static.StaticParseDynamicLoading(MyLI); 00030 MyLI.ForcedClasses[MyLI.ForcedClasses.Length] = class'Chronometre'; 00031 class'Chronometre'.Static.StaticParseDynamicLoading(MyLI); 00032 Super.ParseDynamicLoading(MyLI); 00033 } 00034 00035 //_____________________________________________________________________________ 00036 function FirstFrame() 00037 { 00038 local inventory Inv; 00039 00040 Super.FirstFrame(); 00041 00042 // on regarde si le joueur possede deja une bombe 00043 Inv = XIIIPawn.FindInventoryKind( 'Usa01Bombe' ); 00044 if ( Inv == none ) 00045 { 00046 Inv = GiveSomething(class'Usa01Bombe', XIIIPawn); 00047 } 00048 Usa01Bombe(Inv).BombInteraction = BombInteraction; 00049 00050 // on desactive le lieu de posage de bombe 00051 BombeDeco.bHidden = true; 00052 BombeDeco.RefreshDisplaying(); 00053 BombInteraction.bInteractive = false; 00054 00055 } 00056 00057 //_____________________________________________________________________________ 00058 event Timer2() 00059 { 00060 XIIIPawn.PlaySound(hCountDown); 00061 fBombEventDelay += 1.0; 00062 if ( !bBombEventSent && (fBombEventDelay > fBombDelay-2.5) ) 00063 { 00064 bBombEventSent = true; 00065 TriggerEvent('BombNearExplo', none, none); 00066 } 00067 // prise en main de la camera au bout de x secondes 00068 eNbSeconds ++; 00069 if (eNbSeconds == (fBombDelay - fTempsAvantCamera)) 00070 { 00071 PrevState = XIIIController.GetStateName(); 00072 //SetTimer( 0, false ); 00073 if ( XIIIController.bWeaponMode ) 00074 { 00075 XIIIController.OldWeap = XIIIPawn.Weapon.InventoryGroup; 00076 XIIIPawn.Weapon.PutDown(); 00077 } 00078 else 00079 { 00080 XIIIController.OldItem = XIIIItems(XIIIPawn.SelectedItem); 00081 XIIIController.OldItem.PutDown(); 00082 } 00083 XIIIController.bWeaponBlock = true; 00084 rRotatorInit = XIIIController.Rotation; 00085 vPosInit = XIIIController.Pawn.Location; 00086 if ( !XIIIPawn.bIsDead && !Level.Game.bGameEnded) 00087 { 00088 XIIIController.GotoState('NoControl'); 00089 GotoState('Waiting'); 00090 } 00091 } 00092 } 00093 00094 //_____________________________________________________________________________ 00095 function SetGoalComplete(int N) 00096 { 00097 local Usa01Bombe Bomb; 00098 00099 switch (N) 00100 { 00101 //case 99: // bomb placed 00102 case 97: 00103 log(self@"---> DEMARRAGE CHRONO, BOMBE AMORCEE"); 00104 BombeDeco.StaticMesh = StaticMesh'MeshArmesPickup.BombeMagnet'; 00105 BombeDeco.RefreshDisplaying(); 00106 Bomb = Usa01Bombe(XIIIPawn.FindInventoryType(class'Usa01Bombe')); 00107 if (Bomb != none ) 00108 Bomb.UsedUp(); 00109 // Give chrono 00110 TriggerEvent('GenPlong', self, XIIIPawn); 00111 Chrono = Chronometre(GiveSomething(class'Chronometre', XIIIPawn)); 00112 XIIIPawn.PlaySound(hBombReady); 00113 if (Chrono != none) 00114 Chrono.ReSetTimer(fBombDelay); 00115 XIIIPawn.PlaySound(hCountDown); 00116 BombInteraction.bInteractive = false; 00117 SetTimer2(1.0, true); 00118 //} 00119 break; 00120 case 98: // Chrono over 00121 // if pawn underwater, mission failed because bomb damage player 00122 SetTimer2(0.0,false); 00123 BombeDeco.Destroy(); 00124 if (Chrono != none) 00125 Chrono.Destroy(); 00126 if ( XIIIPawn.PhysicsVolume.bWaterVolume ) 00127 { 00128 GotoState('WaitForEndGame'); 00129 } 00130 // else mission continue 00131 break; 00132 case 0: 00133 SetPrimaryGoal(1); 00134 BombeDeco.bHidden = false; 00135 BombeDeco.RefreshDisplaying(); 00136 BombInteraction.bInteractive = true; 00137 break; 00138 case 1: 00139 SetPrimaryGoal(2); 00140 break; 00141 } 00142 00143 Super.SetGoalcomplete(N); 00144 } 00145 00146 State WaitForEndGame 00147 { 00148 event Beginstate() 00149 { 00150 SetTimer(fDelayBeforeEndGame, false); 00151 } 00152 00153 event Timer() 00154 { 00155 Level.Game.EndGame( XIIIController.PlayerReplicationInfo, "GoalIncomplete" ); 00156 } 00157 } 00158 00159 State Waiting 00160 { 00161 event BeginState() 00162 { 00163 XIIIPawn.SetPhysics(PHYS_None); 00164 } 00165 00166 event Tick(float dt) 00167 { 00168 local rotator r; 00169 local vector v; 00170 00171 fTime += dt; 00172 if ( XIIIPawn.bIsDead || Level.Game.bGameEnded ) 00173 { 00174 SetTimer2(0.0,false); 00175 00176 /* if ( !bBombEventSent ) 00177 { 00178 bBombEventSent = true; 00179 TriggerEvent('BombNearExplo', none, none); 00180 }*/ 00181 00182 GotoState( '' ); 00183 } 00184 00185 if (fTime < fTempsCamera) 00186 { 00187 r = rotator(CibleExplosion.location - XIIIController.location); 00188 r -= XIIIController.Rotation; 00189 r.Yaw= ((r.Yaw+32768)&65535)-32768; 00190 r.Roll= ((r.Roll+32768)&65535)-32768; 00191 r.Pitch= ((r.Pitch+32768)&65535)-32768; 00192 00193 XIIIController.SetRotation(r*0.03+XIIIController.Rotation); 00194 00195 fHauteur += 50*dt; 00196 fHauteur = fMin(fHauteur,eHauteurCamera); 00197 XIIIPawn.SetLocation( vPosInit + fHauteur*vect(0,0,1)); 00198 } 00199 else 00200 { 00201 fHauteur -= 50*dt; 00202 fHauteur = fMax(fHauteur,0); 00203 XIIIPawn.SetLocation( vPosInit + fHauteur*vect(0,0,1)); 00204 if (fHauteur == 0) 00205 { 00206 XIIIController.GotoState(PrevState); 00207 XIIIController.bWeaponBlock = false; 00208 if ( XIIIController.bWeaponMode ) 00209 { 00210 XIIIController.Switchweapon( XIIIController.OldWeap ); 00211 XIIIPawn.ChangedWeapon(); 00212 } 00213 else 00214 { 00215 if ( XIIIController.OldItem != none ) 00216 { 00217 XIIIController.cNextItem(); 00218 XIIIPawn.PendingItem = XIIIController.OldItem; 00219 } 00220 else 00221 { 00222 XIIIController.bWaitForWeaponMode = true; 00223 XIIIController.bWeaponMode = true; 00224 XIIIController.Switchweapon( 0 ); 00225 } 00226 XIIIPawn.ChangedWeapon(); 00227 } 00228 GotoState(''); 00229 } 00230 } 00231 } 00232 } 00233 00234 00235 00236 00237 defaultproperties 00238 { 00239 fBombDelay=40.000000 00240 fTempsAvantCamera=3.000000 00241 fTempsCamera=9.000000 00242 fDelayBeforeEndGame=7.000000 00243 eHauteurCamera=150 00244 hBombReady=Sound'XIIIsound.Items__BombFireSub.BombFireSub__hBombFire' 00245 hCountDown=Sound'XIIIsound.Interface__USA01_CountDown.USA01_CountDown__hPlayCounter' 00246 iLoadSpecificValue=142 00247 }