Code:
; Quest-Name
; Überfallkommando
; Exakte Beschreibung der Aufgabe, von Anfang bis Ende angezeigt
101 Säubere zusammen mit den Reilly Rangers das SatCom-Array NN03D, das von Raidern überrannt wurde.
102 Übernehme zusammen mit der Bruderschaft die Jefferson Akademie und töte alle Mutanten darin.
.
; Untergeordnete generische Aufgaben,bei Bedarf behandelt
11 Gehe zum vereinbarten Treffpunkt.
12 Warte auf deine Gruppe.
13 Führe deine Gruppe zum Ziel.
14 Erledige alle Feinde am Ziel.
15 Hole deine Belohnung ab.
; Unsichtbare Quest, gestartet durch erste Mission, behandelt alle Parameter aller Aufgaben-Typen
scn wlwQuestMissionScript
; Index Missionen
; 100 Typ der Mission: 100 Ueberfall, 200 Gefangenenbefreiung, 300 Schutztruppe
; [1-9][01-99]
short MissionIntervall
short MissionLocked101
short MissionLevel101
short MissionLocked102
short MissionLevel102
short MissionLocked103
short MissionLevel103
; FraktionsReaktionen
short FriendLockedReilly
short FriendLockedBrotherhood
short FriendLockedOutcast
short FriendLockedEnclave
short FriendLockedTalon
short FriendLockedRegulator
short FriendLockedRaider
short FriendLockedRailRoad
short FriendLockedTempleOfTheUnion
short FriendLockedPFSlavers
short EnemyLockedReilly
short EnemyLockedBrotherhood
short EnemyLockedOutcast
short EnemyLockedEnclave
short EnemyLockedTalon
short EnemyLockedRegulator
short EnemyLockedRaider
short EnemyLockedRailRoad
short EnemyLockedTempleOfTheUnion
short EnemyLockedPFSlavers
Begin GameMode
Set KarmaLevel To Player.GetAv Karma
If KarmaLevel <= KarmaEvil
Set FriendLockedTalon To 0
Set FriendLockedRegulator To 0
Set EnemyLockedTalon To 0
Set EnemyLockedRegulator To 0
ElseIf KarmaLevel >= KarmaGood
Else
EndIf
Set MissionIntervall To 9
; Missionen nach X Tagen wieder erlauben, ausgewertet in Terminals
Set GameDays To GameDaysPassed
If GameDays >= MissionLocked101
Set MissionLocked101 To 0
EndIf
If GameDays >= MissionLocked102
Set MissionLocked102 To 0
EndIf
If GameDays >= MissionLocked103
Set MissionLocked103 To 0
EndIf
End
; Mission Ueberfallkommando, gestartet durch Auftraggeber|Terminal
scn wlwQuestMissionAssaultScript
short CarmaState
short MissionState
short EnemySpawned
short EnemyDeadCount
short ObjectiveIndex
short ObjectiveGroup
short ObjectiveState
; Start-Ausruestung
ref FactionGearList ; Referenz Form-Liste
; Belohnung
short RewExp ; Integer
short RewKarma ; Integer
short RewCaps ; Integer
short RewGear ; 0|1 Belohnung Ausruestung
ref RewGearCont ; Referenz Belohnungscontainer
; Variablen von aussen gesetzt
short StartLocReached
short ObjectiveLocReached
short MissionCompleted
; Gestartet durch Auftraggeber|Terminal
short MissionID ; Beschreibung des Ueberfalls
short MissionLevel ; Aufsteigender Schwierigkeitsgrad
short FriendID ; Auftraggeber
short EnemyID ; Gegner Raider
Begin GameMode
If MissionState == 1 ; Start
Set StartLocReached To 0
Set ObjectiveLocReached To 0
Set MissionCompleted To 0
Set EnemyDeadCount To 0
Set EnemySpawned To 0
Set RewExp To 0
Set RewKarma To 0
Set RewCaps To 0
Set RewGear To 0
; Mission
If MissionID == 101
Set RewExp To 200
Set RewKarma To 100
Set RewCaps To 200
Set RewGear To 1
Set RewGearCont To wlwContMAReilly1
Set FriendID To 1
Set EnemyID To 1
Set StartLocation To wlwQMLocStartSatComArrayNN03d
Set SquadLocation To wlwQMLocSquadSatComArrayNN03d
Set ObjectiveLocation To wlwQMLocDestSatComArrayNN03d
Set MissionLevel To wlwQuestMission.MissionLevel101 + 1
If wlwQuestMission.MissionLevel101 < 9
Set wlwQuestMission.MissionLevel101 To MissionLevel
EndIf
Set wlwQuestMission.MissionLocked101 To GameDaysPassed + 10000
; Feindliches Squad
ElseIf MissionID == 2
ElseIf MissionID == 3
EndIf
; Auftraggeber
If FriendID == 1 ; Reillys
Set FriendOut1 To wlwQMReillyCommander
Set FriendCount1 To 1
Set FriendOut2 To wlwQMReillySpecialist
Set FriendCount2 To 2
Set FriendOut3 To wlwQMReillySoldier
Set FriendCount3 To 4
Set FriendOut4 To wlwQMReillyDog
Set FriendCount4 To 2
Set FactionGearList To wlwListMAStartGearReilly1
Set RetreatLocation To RangerCompoundMapMarker
ElseIf FriendID == 2
ElseIf FriendID == 3
EndIf
; Gegner
If EnemyID == 1 ; Raider
Set EnemyOut1 To wlwQMRaiderCommander
Set EnemyCount1 To 2
Set EnemyOut2 To wlwQMRaiderSpecialist
Set EnemyCount2 To 2
Set EnemyOut3 To wlwQMRaiderSoldier
Set EnemyCount3 To 4
Set EnemyOut4 To wlwQMRaiderDog
Set EnemyCount4 To 2
ElseIf EnemyID == 2
ElseIf EnemyID == 3
EndIf
wlwQMStartLocation.MoveTo StartLocation
wlwQMObjectiveLocation.MoveTo ObjectiveLocation
wlwQMRetreatLocation.MoveTo RetreatLocation
If Player.GetItemCount FactionGearList == 0
Player.AddItem FactionGearList 1
EndIf
SetObjectiveDisplayed wlwQuestMissionAssault MissionID 1
Set ObjectiveIndex To (FriendID * 10) + 1
SetObjectiveDisplayed wlwQuestMissionAssault ObjectiveIndex 1
Set MissionState To 2
ElseIf MissionState == 2 ; Sammelplatz erreichen
If wlwQMStartLocation.GetDistance Player < 600
SquadLocation.PlaceAtMe FriendOut1 FriendCount1
SquadLocation.PlaceAtMe FriendOut2 FriendCount2
SquadLocation.PlaceAtMe FriendOut3 FriendCount3
SquadLocation.PlaceAtMe FriendOut4 FriendCount4
Set ObjectiveIndex To (FriendID * 10) + 1
SetObjectiveCompleted wlwQuestMissionAssault ObjectiveIndex 1
Set ObjectiveIndex To (FriendID * 10) + 2
SetObjectiveDisplayed wlwQuestMissionAssault ObjectiveIndex 1
Set MissionState To 3
EndIf
ElseIf MissionState == 3 ; Sammeln abwarten, bestaetigt durch ersten Actor am Ziel
If StartLocReached == 1
Set ObjectiveIndex To (FriendID * 10) + 2
SetObjectiveCompleted wlwQuestMissionAssault ObjectiveIndex 1
Set ObjectiveIndex To (FriendID * 10) + 3
SetObjectiveDisplayed wlwQuestMissionAssault ObjectiveIndex 1
Set MissionState To 4
EndIf
ElseIf MissionState == 4 ; Ziel ansteuern, bestaetigt durch ersten Actor am Ziel
If EnemySpawned == 0
SquadLocation.PlaceAtMe EnemyOut1 EnemyCount1
SquadLocation.PlaceAtMe EnemyOut2 EnemyCount2
SquadLocation.PlaceAtMe EnemyOut3 EnemyCount3
SquadLocation.PlaceAtMe EnemyOut4 EnemyCount4
Set EnemySpawned To 1
EndIf
If ObjectiveLocReached == 1
Set ObjectiveIndex To (FriendID * 10) + 3
SetObjectiveCompleted wlwQuestMissionAssault ObjectiveIndex 1
Set ObjectiveIndex To (FriendID * 10) + 4
SetObjectiveDisplayed wlwQuestMissionAssault ObjectiveIndex 1
EndIf
ElseIf MissionState == 5 ; Ziel saeubern
If EnemyDeadCount >= EnemyCount1 && Player.IsInCombat == 0
Set ObjectiveIndex To (FriendID * 10) + 4
SetObjectiveCompleted wlwQuestMissionAssault ObjectiveIndex 1
Set ObjectiveIndex To (FriendID * 10) + 5
SetObjectiveDisplayed wlwQuestMissionAssault ObjectiveIndex 1
Set MissionState To 6
EndIf
ElseIf MissionState == 5 ; Belohnung abholen, gesetzt durch Questgeber|Terminal
If MissionCompleted == 1
If RewExp > 0
RewardXP RewExp
EndIf
If RewKarma > 0
RewardXP RewKarma
EndIf
If RewCaps > 0
Player.AddItem Caps01 RewCaps
EndIf
If RewGear == 1
RewGearCont.ResetInventory
RewGearCont.RemoveAllItems Player
EndIf
Set ObjectiveIndex To (FriendID * 10) + 5
SetObjectiveCompleted wlwQuestMissionAssault ObjectiveIndex 1
SetObjectiveCompleted wlwQuestMissionAssault MissionID 1
Set wlwQuestMission.MissionLocked101 To GameDaysPassed + wlwQuestMission.MissionIntervall
Set MissionState To 6
StopQuest wlwQuestMissionAssault
EndIf
EndIf
End
; Begleiter-Script des Squads
scn wlwQuestMissionAssaultFriendActorScript
short MissionState
short MissionID
short MissionLevel
Begin GameMode
If MissionState == 0 ; Init-Funktionen
Set GroupID To wlwQuestMissionAssault.FriendID
Set MissionState To 1
ElseIf MissionState == 1 ; Sammelplatz erreichen
If wlwQuestMissionAssault.StartLocReached == 1
RemoveScriptPackage
AddScriptPackage wlwQuestQMAFollowPlayer
Set MissionState To 2
ElseIf GetDistance Player < 500
Set wlwQuestMissionAssault.StartLocReached To 1
AddScriptPackage wlwQuestQMAFollowPlayer
Set MissionState To 2
EndIf
ElseIf MissionState == 2 ; Ueberwachung wahrend Mission
Set MissionState To 3
ElseIf MissionState == 3 ; Mission fertig
RemoveScriptPackage
AddScriptPackage wlwQuestQMARetreat
Set MissionState To 4
ElseIf MissionState == 4 ; Aufheben
If GetDistance Player < 5000
Set MissionState To 5
Disable
MarkForDelete
EndIf
EndIf
End
; Gegner-Script
scn wlwQuestMissionAssaultFriendActorScript
short MissionState
short MissionID
short MissionLevel
Begin GameMode
End