001package com.fs.starfarer.api.impl.campaign.intel.group;
002
003import com.fs.starfarer.api.Global;
004import com.fs.starfarer.api.campaign.CampaignFleetAPI;
005import com.fs.starfarer.api.impl.campaign.ids.Factions;
006import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
007import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
008import com.fs.starfarer.api.impl.campaign.missions.FleetCreatorMission;
009import com.fs.starfarer.api.util.IntervalUtil;
010import com.fs.starfarer.api.util.Misc;
011
012
013
014public class SindrianDiktatPunitiveExpedition extends GenericRaidFGI  {
015
016        public static final String SDPE_FLEET = "$SDPE_fleet";
017        
018        public static String KEY = "$SDPE_ref";
019        public static SindrianDiktatPunitiveExpedition get() {
020                return (SindrianDiktatPunitiveExpedition) Global.getSector().getMemoryWithoutUpdate().get(KEY);
021        }
022        
023        
024        protected IntervalUtil interval = new IntervalUtil(0.1f, 0.3f);
025        
026        
027        public SindrianDiktatPunitiveExpedition(GenericRaidParams params) {
028                super(params);
029                
030                Global.getSector().getMemoryWithoutUpdate().set(KEY, this);
031        }
032        
033        @Override
034        protected String getFleetCreationFactionOverride(int size) {
035                return Factions.LIONS_GUARD;
036        }
037
038        @Override
039        protected void notifyEnding() {
040                super.notifyEnding();
041                
042                Global.getSector().getMemoryWithoutUpdate().unset(KEY);
043        }
044        
045        @Override
046        protected void notifyEnded() {
047                super.notifyEnded();
048        }
049        
050
051        @Override
052        public String getNoun() {
053                return super.getNoun();
054                //return "punitive expedition";
055        }
056
057        @Override
058        public String getForcesNoun() {
059                return super.getForcesNoun();
060        }
061
062
063        @Override
064        public String getBaseName() {
065                return super.getBaseName();
066                //return Misc.ucFirst(getFaction().getPersonNamePrefix()) + " " + "Punitive Expedition";
067        }
068
069
070        @Override
071        protected void preConfigureFleet(int size, FleetCreatorMission m) {
072                m.setFleetTypeMedium(FleetTypes.TASK_FORCE); // default would be "Patrol", don't want that
073        }
074        
075        @Override
076        protected void configureFleet(int size, FleetCreatorMission m) {
077                m.triggerSetFleetFlag(SDPE_FLEET);
078                if (size >= 8) {
079                        m.triggerSetFleetDoctrineOther(5, 0); // more capitals in large fleets
080                }
081        }
082
083        
084        @Override
085        public void abort() {
086                if (!isAborted()) {
087                        for (CampaignFleetAPI curr : getFleets()) {
088                                curr.getMemoryWithoutUpdate().unset(SDPE_FLEET);
089                        }
090                }
091                super.abort();
092        }
093        
094        
095
096        @Override
097        public void advance(float amount) {
098                super.advance(amount);
099                
100                float days = Misc.getDays(amount);
101                interval.advance(days);
102                
103                if (interval.intervalElapsed()) {
104                        if (isCurrent(PAYLOAD_ACTION)) {
105                                String reason = "SDPunEx";
106                                for (CampaignFleetAPI curr : getFleets()) {
107                                        Misc.setFlagWithReason(curr.getMemoryWithoutUpdate(), MemFlags.MEMORY_KEY_MAKE_HOSTILE,
108                                                                                        reason, true, 1f);
109                                }
110                                
111                        }
112                }
113        }
114
115
116        
117}
118
119
120
121