Core.Object | +--Engine.Actor | +--Engine.Triggers | +--XIII.XIIITriggers | +--XIII.XIIIGoalTrigger
int
GoalNumber
float
TimeBeforeTrigger
void
CauseGoal()
//____________________________________________________________________
Trigger(Actor Other, Pawn EventInstigator)
//____________________________________________________________________ // If triggered then my goal is ok
00001 //----------------------------------------------------------- 00002 // 00003 //----------------------------------------------------------- 00004 class XIIIGoalTrigger extends XIIITriggers; 00005 00006 var() int GoalNumber; 00007 var() float TimeBeforeTrigger; 00008 00009 //____________________________________________________________________ 00010 // If triggered then my goal is ok 00011 function Trigger( actor Other, pawn EventInstigator ) 00012 { 00013 Log(self$" trigger w/ other="$Other$" EventInstigator="$EventInstigator$" GoalNumber="$GoalNumber); 00014 Instigator = EventInstigator; 00015 // EventInstigator should be player 00016 if ( XIIIGameInfo(Level.Game).MapInfo != none ) 00017 { 00018 if ( (EventInstigator != none) && EventInstigator.bIsDead ) 00019 { 00020 //Log("Can't trigger a goal when touched by a dead"); 00021 return; 00022 } 00023 // Log(self$" other.IsDead="$XIIIPawn(Other).bIsDead$" Other.HitDamageType="$Pawn(Other).HitDamageType); 00024 if ( (XIIIPawn(Other) == none) || ( !XIIIPawn(Other).bIsDead || ((XIIIPawn(Other).HitDamageType != class'DTStunned') && (XIIIPawn(Other).HitDamageType != class'DTSureStunned'))) ) 00025 { 00026 if ( TimeBeforeTrigger > 0.0 ) 00027 { 00028 SetTimer(TimeBeforeTrigger, false); 00029 return; 00030 } 00031 else 00032 CauseGoal(); 00033 } 00034 } 00035 else 00036 { 00037 //Log("PB on "$self$", can't trigger my goal, setting a wait of 0.2 to check again if the mapinfo was not initialized"); 00038 SetTimer2(0.2, false); 00039 } 00040 } 00041 00042 //____________________________________________________________________ 00043 event Timer2() 00044 { 00045 if ( XIIIGameInfo(Level.Game).MapInfo != none ) 00046 CauseGoal(); 00047 // else 00048 //Log("PB on "$self$" GOAL "$GoalNumber$" CAN'T BE TRIGGERED BECAUSE NO MAPINFO"); 00049 } 00050 00051 //____________________________________________________________________ 00052 event Timer() 00053 { 00054 CauseGoal(); 00055 } 00056 00057 //____________________________________________________________________ 00058 function CauseGoal() 00059 { 00060 if ( Level.Game.bGameEnded ) 00061 { 00062 log("Goal number "$GoalNumber$" not validated, Game Ended."); 00063 return; 00064 } 00065 00066 TriggerEvent(event, self, Instigator); 00067 if (GoalNumber>=90) 00068 { // Cheat to activate event that's not in the objectives [used for chronometre && nust-not-kill people] 00069 log("Goal number "$GoalNumber$" validated."); 00070 XIIIGameInfo(Level.Game).MapInfo.SetGoalComplete(GoalNumber); 00071 } 00072 else if ( XIIIGameInfo(Level.Game).MapInfo.Objectif[GoalNumber].bPrimary ) 00073 { 00074 log("Goal number "$GoalNumber$" validated."); 00075 XIIIGameInfo(Level.Game).MapInfo.SetGoalComplete(GoalNumber); 00076 destroy(); 00077 } 00078 else 00079 { 00080 log("Goal number "$GoalNumber$" could not be validated, it's not primary."); 00081 } 00082 } 00083 00084 00085 00086 defaultproperties 00087 { 00088 bInteractive=True 00089 }