Code:
; Allgemeine Variablen
short Reset ; Resetet Citadel
short State ; Status der Citadel
short IsHostile ; Citadel ist feindlich
short DayState ; Tages-Zeit 0 Nacht, 1 Morgen 2, Mittag 3: Nachmittag, 4: Abend
short PlayerLoc ; Standort des Players 0: Nicht anwesend, 1: Vor Citadel, 2: Citadel-Platz, 3: Citadel A, 4: Citadel B, 5 Labor
short CitadelDist ; Distanz Player aussen
short Blocked ; Neue Spawns geblockt wahrend Quests
short ActorCount ; Anzahl geladene Actors
short MaxAxtors ; Maximale Anzahl Actors, konfigurierbar
short Task ; Funktionen
short TaskShort1 ; Task-Parameter
short TaskShort2 ; Task-Parameter
short Short1 ; Generischer Parameter
short Short2 ; Generischer Parameter
short Float1 ; Generischer Parameter
short Float2 ; Generischer Parameter
; Area1n-Benutzung
short Area01 ; Schiessstand1
short Area02 ; Schiessstand2
short Area03 ; Schiessstand3
short Area04 ; Schiessstand4
short Area05 ; Zentrum/Vertibird
short Area06 ; Sportplatz vor Bar
short Area07 ; Nahkampf-Arena
short Area08 ; Pflanzen giessen
short Area09 ; Hof-Reinigung
short Area10 ; Bar-Reinigung
short Area11 ; Bar Pause
short Area12 ; Runde um ganzen Hof
short Area13 ; Runde Segment 1
short Area14 ; Runde Segment 2
short Area15 ; Runde Segment 3
short Area16 ; Runde Segment 4
short Area17 ; Runde Segment 5
; Gruppen-Tasks
short SquadTimer ; Squad-Interval-Timer
short SquadTimeOut ; Abstaende zwischen Squads, konfigurierbar
short SquadTimeMin ; Minimaler Abstand
short SquadTimeMax ; Maximaler Abstand
short SquadSize ; Groesse der einzelnen Gruppen, konfigurierbar
short SquadSizeMin ; Minimal Groesse
short SquadSizeMax ; Maximale Groesse, manche Gruppen begrenzen sich selbst auf die Anzahl Interaktionsmoeglichkeiten
short SquadsActive ; Anzahl von aktiven Gruppen, konfigurierbar
short SquadsMax ; Maximale Anzahl an aktiven Gruppen
short LastSquad ; Letzer Squad-Typ
short Squad01 ; Rekruten Putz-Kolonne
short Squad02 ; Rekruten Sniper
short Squad03 ; Rekruten Kleine Waffen
short Squad04 ; Rekruten Grosse Waffen
short Squad05 ; Rekruten Sportler
short Squad06 ; Flieger
short Squad07 ; Power-Ruestung
short Squad08 ; Kampf-Gruppe zuerueck
short Squad09 ; Kampf-Gruppe ausgehend
short Squad10 ; Gefangenen-Transport
; Events
short EventTimer ; Event-Interval-Timer
short EventTimeout ; Abstaende zwischen Events, konfigurierbar
short EventTimeMin ; Maximaler Abstand
short EventTimeMax ; Minimaler Abstand
short EvenRunning ; Nur ein Spawn pro Mal, entsperrt durch Leader
short Event1 ; Gefangenen-Ausbruch
short Event2 ; Invasion von Mutanten
short Event3 ; Vertibird-Landung BoS
short Event3 ; Vertibird-Landung Enklave
; Tasks
; Putzen
; Pflanzen giessen
; Rennen
; Liegestuetzen
; Waffen-Training
; Ins Oedland
; Vom Oedland
; Gefangenen-Transport
Begin GameMode
; Erster Start
If State == 0 || Reset == 1
wlwCitadelEnableMainRef.Enable
wlwQuestCitadelDisableCrapRef.Disable
Set Reset To 0
Set State To 1
EndIf
; Allgemeine Tasks
If State > 0
; Konfiguration
Set EventTimeMin To 5
Set EventTimeMax To 60
If EventTimeOut < EventTimeMin || EventTimeOut > EventTimeMax
Set EventimeOut To EventTimeMin + 5
Set EventTimer To EventTimeOut
EndIf
Set SquadTimeMin To 5
Set SquadTimeMax To 60
If SquadTimeOut < SquadTimeMin || SquadTimeOut > SquadTimeMax
Set SquadTimeOut To SquadTimeMin + 5
Set SquadTimer To SquadTimeOut
EndIf
Set SquadSizeMin To 3
Set SquadSizeMax To 9
If SquadSize < SquadSizeMin || SquadSize > SquadSizeMax
Set SquadSize To SquadSizeMin
EndIf
Set SquadsMax To 6
If SquadsActive == 0 || SquadsActive > SquadsMax
Set SquadsActive To 3
EndIf
; Event-Timer
If EventTimer > 0
Set EventTimer To EventTimer - 1
EndIf
; Squad-Timer
If SquadTimer > 0
Set SquadTimer To SquadTimer - 1
EndIf
; Geladnene Actors
Set ActorCount To GetActorsInHigh
; Tageszeit
If GetGameHour >= 5 && GetGameHour < 12
Set DayState To 1
ElseIf GetGameHour >= 12 && GetGameHour < 13
Set DayState To 2
ElseIf GetGameHour >= 13 && GetGameHour < 18
Set DayState To 3
ElseIf GetGameHour >= 18 && GetGameHour < 22
Set DayState To 4
Else
Set DayState To 0
EndIf
; Player-Standort
Set CitadelDist To CitadelMapMarker.Get Distance Player
If Player.GetInCell CitadelARing
Set PlayerLocTo 3
ElseIf Player.GetInCell CitadelBRing
Set PlayerLocTo 4
ElseIf Player.GetInCell CitadelLab
Set PlayerLocTo 5
ElseIf Player.GetInWorldSpace CitadelWorld
Set PlayerLocTo 2
ElseIf Player.GetInWorldSpace Wasteland == 1 && CitadelDist < 6000
Set PlayerLocTo 1
Else
Set SquadTimer To SquadTimeMin
Set EventimeOut To EventTimeMin
Set PlayerLocTo 0
EndIf
; Citadel-Events geblockt
If GetQuestRunning MQ09 && GetStage MQ09 == XX ; Erster Besuch
Set Blocked To 1
ElseIf GetQuestRunning MQ11 && GetStage MQ11 == XX ; Marsch zum Aufbereiter (Waehrend Besprechung bis Ausmarsch)
Set Blocked To 1
Else
Set Blocked To 0
EndIf
If Blocked == 0 && EventRunning == 0
; Allgemeine Ueberwachung aussen
; Allgemeine Ueberwachung innen
If PlayerLoc == 2
If SquadTimer == 0 && ActorCount < MaxAxtors && SquadsActive < SquadsMax
; Gruppe ermitteln
Set Short1 To 0
If Squad01 == 0 && GetRandomPercent < 30
Set Short1 To 1
ElseIf Squad02 == 0 && GetRandomPercent < 30
Set Short1 To 2
ElseIf Squad03 == 0 && GetRandomPercent < 30
Set Short1 To 3
ElseIf Squad04 == 0 && GetRandomPercent < 30
Set Short1 To 4
ElseIf Squad05 == 0 && GetRandomPercent < 30
Set Short1 To 5
ElseIf Squad06 == 0 && GetRandomPercent < 30
Set Short1 To 6
ElseIf Squad07 == 0 && GetRandomPercent < 30
Set Short1 To 7
ElseIf Squad08 == 0 && GetRandomPercent < 30
Set Short1 To 8
ElseIf Squad09 == 0 && GetRandomPercent < 30
Set Short1 To 9
ElseIf Squad10 == 0 && GetRandomPercent < 30
Set Short1 To 10
EndIf
; Gruppe ermittelt und ungleich letzte Gruppe
If Short1 > 0 && Short1 != LastSquad
Set LastSquad To Short1
; Naechster Interval berechnen
Set Short1 To (SquadTimeOut / 5) / (GetRandomPercent / 20)
Set SquadTimer To SquadTimeOut - Short1
If SquadTimer < SquadTimeMin
Set SquadTimer To SquadTimeMin
EndIf
; Gruppe starten
Set Task To 1
Set TaskShort1 To Short1
EndIf
EndIf
EndIf
EndIf
EndIf
; Vor Broken Steel
If State == 1
If GetQuestCompleted MQ11
wlwCitadelEnableEndGameRef.Enable
Set State To 2
EndIf
EndIf
; Wahrend Broken Steel
If State == 2
If GetQuestCompleted DLC03XXX
wlwCitadelEnableEndGameRef.Enable
Set State To 3
EndIf
EndIf
; Nach Broken Steel
If State == 3
EndIf
; Funktionen
; Squad spawnen
If Task == 1
If TaskShort1 == 1
wlwQuestCitadelSquadLeaderRef01.Enable
Set wlwQuestCitadelSquadLeaderRef01.State To 1
Set Squad01 To 1
ElseIf TaskShort1 == 2
wlwQuestCitadelSquadLeaderRef02.Enable
Set wlwQuestCitadelSquadLeaderRef02.State To 1
Set Squad02 To 1
ElseIf TaskShort1 == 3
wlwQuestCitadelSquadLeaderRef03.Enable
Set wlwQuestCitadelSquadLeaderRef03.State To 1
Set Squad03 To 1
ElseIf TaskShort1 == 4
wlwQuestCitadelSquadLeaderRef04.Enable
Set wlwQuestCitadelSquadLeaderRef04.State To 1
Set Squad04 To 1
ElseIf TaskShort1 == 5
wlwQuestCitadelSquadLeaderRef05.Enable
Set wlwQuestCitadelSquadLeaderRef05.State To 1
Set Squad05 To 1
ElseIf TaskShort1 == 6
wlwQuestCitadelSquadLeaderRef06.Enable
Set wlwQuestCitadelSquadLeaderRef06.State To 1
Set Squad06 To 1
ElseIf TaskShort1 == 7
wlwQuestCitadelSquadLeaderRef07.Enable
Set wlwQuestCitadelSquadLeaderRef07.State To 1
Set Squad07 To 1
ElseIf TaskShort1 == 8
wlwQuestCitadelSquadLeaderRef08.Enable
Set wlwQuestCitadelSquadLeaderRef08.State To 1
Set Squad08 To 1
ElseIf TaskShort1 == 9
wlwQuestCitadelSquadLeaderRef09.Enable
Set wlwQuestCitadelSquadLeaderRef09.State To 1
Set Squad09 To 1
ElseIf TaskShort1 == 10
wlwQuestCitadelSquadLeaderRef10.Enable
Set wlwQuestCitadelSquadLeaderRef10.State To 1
Set Squad10 To 1
EndIf
Set TaskShort1 To 0
Set Task To 0
; Funktion
ElseIf Task == 2
EndIf
End