001package com.fs.starfarer.api.impl.campaign.missions.academy;
002
003import org.lwjgl.util.vector.Vector2f;
004
005import com.fs.starfarer.api.EveryFrameScript;
006import com.fs.starfarer.api.Global;
007import com.fs.starfarer.api.campaign.FactionAPI.ShipPickMode;
008import com.fs.starfarer.api.impl.campaign.ids.Factions;
009import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
010import com.fs.starfarer.api.impl.campaign.ids.People;
011import com.fs.starfarer.api.impl.campaign.missions.DelayedFleetEncounter;
012import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality;
013import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetSize;
014import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerNum;
015import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerQuality;
016import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.SetMemoryValueAfterDelay;
017import com.fs.starfarer.api.util.Misc;
018
019public class GAPZPostEncounters implements EveryFrameScript {
020
021        public static boolean debug = false;
022        public static String id = "gaPZ";
023        
024        public static void init() {
025                //debug = true;
026                
027                float cottonDelay = 30f + (float) Math.random() * 30f;
028                if (debug) cottonDelay = 0f;
029                SetMemoryValueAfterDelay action = new SetMemoryValueAfterDelay(cottonDelay,
030                                Global.getSector().getMemoryWithoutUpdate(), "$gaPZ_brotherCottonEncounter", true);
031                action.doAction(null);
032                
033                
034                {
035                        DelayedFleetEncounter e = new DelayedFleetEncounter(Misc.getRandom(Misc.genRandomSeed(), 0), id);
036                        if (debug) {
037                                e.setDelayNone();
038                        } else {
039                                e.setDelayShort();
040                        }
041                        e.setLocationCoreOnly(true, Factions.HEGEMONY);
042                        e.setEncounterFromSomewhereInSystem();
043                        e.setRequireFactionPresence(Factions.HEGEMONY);
044                        e.setDoNotAbortWhenPlayerFleetTooStrong();
045                        
046                        e.beginCreate();
047                        e.triggerCreateFleet(FleetSize.HUGE, FleetQuality.VERY_HIGH, Factions.HEGEMONY, FleetTypes.TASK_FORCE, new Vector2f());
048                        e.setFleetSource("coatl", "chicomoztoc");
049                        
050                        e.triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER);
051                        e.triggerSetFleetFlag("$gaPZ_hegemony");
052                        e.triggerSetStandardAggroInterceptFlags();
053                        e.triggerFleetMakeImportantPermanent(null);
054                        e.triggerFleetAddDefeatTriggerPermanent("GAPZGoAwayTrigger");
055                        e.endCreate();
056                }
057                
058                {
059                        DelayedFleetEncounter e = new DelayedFleetEncounter(Misc.getRandom(Misc.genRandomSeed(), 0), id);
060                        if (debug) {
061                                e.setDelayNone();
062                        } else {
063                                e.setDelayShort();
064                        }
065                        e.setLocationCoreOnly(true, Factions.TRITACHYON);
066                        e.setEncounterFromSomewhereInSystem();
067                        e.setRequireFactionPresence(Factions.TRITACHYON);
068                        e.setDoNotAbortWhenPlayerFleetTooStrong();
069                        
070                        e.beginCreate();
071                        e.triggerCreateFleet(FleetSize.VERY_LARGE, FleetQuality.SMOD_1, Factions.TRITACHYON, FleetTypes.TASK_FORCE, new Vector2f());
072                        e.setFleetSource("culann", "eochu_bres");
073                        
074                        e.triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER);
075                        e.triggerSetFleetFlag("$gaPZ_tritachyon");
076                        e.triggerSetStandardAggroInterceptFlags();
077                        e.triggerFleetMakeImportantPermanent(null);
078                        e.triggerFleetAddDefeatTriggerPermanent("GAPZGoAwayTrigger");
079                        e.endCreate();
080                }
081                
082                {
083                        DelayedFleetEncounter e = new DelayedFleetEncounter(Misc.getRandom(Misc.genRandomSeed(), 0), id);
084                        if (debug) {
085                                e.setDelayNone();
086                        } else {
087                                e.setDelayShort();
088                        }
089                        String factionId = Factions.LUDDIC_CHURCH;
090                        e.setLocationCoreOnly(true, factionId);
091                        e.setEncounterFromSomewhereInSystem();
092                        e.setRequireFactionPresence(factionId);
093                        e.setDoNotAbortWhenPlayerFleetTooStrong();
094                        
095                        e.beginCreate();
096                        e.triggerCreateFleet(FleetSize.LARGE, FleetQuality.HIGHER, factionId, FleetTypes.TASK_FORCE, new Vector2f());
097                        e.setFleetSource("baetis");
098                        
099                        e.triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.DEFAULT);
100                        e.triggerSetFleetFlag("$gaPZ_luddic_church");
101                        e.triggerFleetAllowLongPursuit();
102                        e.triggerSetFleetAlwaysPursue();
103                        e.triggerOrderFleetInterceptPlayer();
104                        e.triggerMakeFleetAllowDisengage();
105                        e.triggerOrderFleetMaybeEBurn();
106                        e.triggerFleetMakeImportantPermanent(null);
107                        e.triggerFleetAddDefeatTriggerPermanent("GAPZGoAwayTrigger");
108                        e.endCreate();
109                }
110                
111                {
112                        DelayedFleetEncounter e = new DelayedFleetEncounter(Misc.getRandom(Misc.genRandomSeed(), 0), id);
113                        if (debug) {
114                                e.setDelayNone();
115                        } else {
116                                e.setDelayShort();
117                        }
118                        String factionId = Factions.PERSEAN;
119                        e.setLocationCoreOnly(true, factionId);
120                        e.setEncounterFromSomewhereInSystem();
121                        e.setRequireFactionPresence(factionId);
122                        e.setDoNotAbortWhenPlayerFleetTooStrong();
123                        
124                        e.beginCreate();
125                        e.triggerCreateFleet(FleetSize.MEDIUM, FleetQuality.HIGHER, factionId, FleetTypes.PATROL_MEDIUM, new Vector2f());
126                        e.triggerSetFleetFaction(Factions.PERSEAN);
127                        e.triggerSetFleetCommander(People.getPerson(People.SIYAVONG));
128                        //e.triggerSet
129                        e.triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER);
130                        e.triggerMakeNonHostile();
131                        e.triggerFleetAllowLongPursuit();
132                        e.triggerSetFleetAlwaysPursue();
133                        e.triggerOrderFleetInterceptPlayer();
134                        e.triggerMakeFleetAllowDisengage();
135                        e.triggerOrderFleetMaybeEBurn();
136                        
137                        e.setFleetSource("kazeron");
138                        
139                        e.triggerSetFleetFlag("$gaPZ_persean");
140                        e.triggerSetStandardAggroInterceptFlags();
141                        e.triggerFleetMakeImportantPermanent(null);
142                        e.triggerFleetAddDefeatTriggerPermanent("GAPZGoAwayTrigger");
143                        e.endCreate();
144                }
145                
146                {
147                        DelayedFleetEncounter e = new DelayedFleetEncounter(Misc.getRandom(Misc.genRandomSeed(), 0), id);
148                        if (debug) {
149                                e.setDelayNone();
150                        } else {
151                                e.setDelayShort();
152                        }
153                        
154                        String factionId = Factions.DIKTAT;
155                        e.setLocationCoreOnly(true, factionId);
156                        e.setEncounterFromSomewhereInSystem();
157                        e.setRequireFactionPresence(factionId);
158                        e.setDoNotAbortWhenPlayerFleetTooStrong();
159                        
160                        e.beginCreate();
161                        e.triggerCreateFleet(FleetSize.HUGE, FleetQuality.SMOD_1, Factions.LIONS_GUARD, FleetTypes.PATROL_LARGE, new Vector2f());
162                        e.setFleetSource("sindria");
163                        e.triggerSetFleetFaction(factionId);
164                        e.triggerFleetSetShipPickMode(ShipPickMode.PRIORITY_THEN_ALL);
165                        e.triggerFleetSetNoFactionInName();
166                        e.triggerMakeNoRepImpact();
167                        
168                        e.triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER);
169                        e.triggerSetFleetFlag("$gaPZ_diktat");
170                        e.triggerSetStandardAggroInterceptFlags();
171                        e.triggerFleetMakeImportantPermanent(null);
172                        e.triggerFleetAddDefeatTriggerPermanent("GAPZGoAwayTrigger");
173                        e.endCreate();
174                }
175        }
176
177        public static DelayedFleetEncounter createSecondDiktatEncounter() {
178                {
179                        DelayedFleetEncounter e = new DelayedFleetEncounter(Misc.getRandom(Misc.genRandomSeed(), 0), id);
180                        if (debug) {
181                                e.setDelayNone();
182                        } else {
183                                e.setDelay(10, 15);
184                        }
185                        
186                        String factionId = Factions.DIKTAT;
187                        e.setLocationCoreOnly(true, factionId);
188                        e.setEncounterFromSomewhereInSystem();
189                        e.setRequireFactionPresence(factionId);
190                        e.setDoNotAbortWhenPlayerFleetTooStrong();
191                        
192                        e.beginCreate();
193                        e.triggerCreateFleet(FleetSize.MEDIUM, FleetQuality.DEFAULT, Factions.DIKTAT, FleetTypes.INSPECTION_FLEET, new Vector2f());
194                        e.setFleetSource("sindria");
195                        e.triggerSetFleetFaction(factionId);
196                        //e.triggerFleetSetShipPickMode(ShipPickMode.PRIORITY_THEN_ALL);
197                        //e.triggerFleetSetNoFactionInName();
198                        //e.triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER);
199                        e.triggerSetFleetFlag("$gaPZ_diktatSecond");
200                        //e.triggerSetStandardAggroInterceptFlags();
201                        e.triggerFleetAllowLongPursuit();
202                        e.triggerSetFleetAlwaysPursue();
203                        e.triggerOrderFleetInterceptPlayer();
204                        e.triggerOrderFleetMaybeEBurn();
205                        e.triggerFleetMakeImportantPermanent(null);
206                        e.triggerFleetAddDefeatTriggerPermanent("GAPZGoAwayTrigger");
207                        e.endCreate();
208                        
209                        return e;
210                }
211        }
212
213        public void advance(float amount) {
214                
215        }
216
217        public boolean isDone() {
218                return false;
219        }
220
221        public boolean runWhilePaused() {
222                return false;
223        }
224
225}