001package com.fs.starfarer.api.impl.campaign.missions.cb;
002
003import com.fs.starfarer.api.campaign.StarSystemAPI;
004import com.fs.starfarer.api.campaign.econ.MarketAPI;
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.Tags;
008import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
009import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality;
010import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetSize;
011import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerNum;
012import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerQuality;
013
014public class CBPather extends BaseCustomBountyCreator {
015
016        public static float PROB_IN_SYSTEM_WITH_BASE = 0.5f;
017        
018        @Override
019        public float getFrequency(HubMissionWithBarEvent mission, int difficulty) {
020                if (Factions.LUDDIC_PATH.equals(mission.getPerson().getFaction().getId())) return 0f;
021                return super.getFrequency(mission, difficulty) * CBStats.PATHER_FREQ;
022        }
023        
024        public String getBountyNamePostfix(HubMissionWithBarEvent mission, CustomBountyData data) {
025                return " - Pather";
026        }
027        
028        @Override
029        public CustomBountyData createBounty(MarketAPI createdAt, HubMissionWithBarEvent mission, int difficulty, Object bountyStage) {
030                CustomBountyData data = new CustomBountyData();
031                data.difficulty = difficulty;
032                
033//              if (difficulty >= 4) {
034//                      mission.requireSystemTags(ReqMode.ANY, Tags.THEME_RUINS, Tags.THEME_MISC, Tags.THEME_REMNANT_SECONDARY,
035//                                                                        Tags.THEME_DERELICT, Tags.THEME_REMNANT_DESTROYED);
036//              } else {
037//                      mission.requireSystemTags(ReqMode.ANY, Tags.THEME_RUINS, Tags.THEME_MISC,
038//                                                                        Tags.THEME_DERELICT);
039//              }
040                mission.requireSystemInterestingAndNotUnsafeOrCore();
041                mission.requireSystemNotHasPulsar();
042                if (difficulty >= 4 && mission.rollProbability(PROB_IN_SYSTEM_WITH_BASE)) {
043                        mission.preferSystemHasBase(Factions.LUDDIC_PATH);
044                }
045                StarSystemAPI system = mission.pickSystem();
046                data.system = system;
047        
048                FleetSize size = FleetSize.MEDIUM;
049                FleetQuality quality = FleetQuality.DEFAULT;
050                String type = FleetTypes.PATROL_MEDIUM;
051                OfficerQuality oQuality = OfficerQuality.DEFAULT;
052                OfficerNum oNum = OfficerNum.DEFAULT;
053                
054                String factionId = Factions.LUDDIC_PATH;
055                
056                if (difficulty <= 0) {
057                        size = FleetSize.TINY;
058                        quality = FleetQuality.VERY_LOW;
059                        oQuality = OfficerQuality.LOWER;
060                        oNum = OfficerNum.FC_ONLY;
061                        type = FleetTypes.PATROL_SMALL;
062                } else if (difficulty == 1) {
063                        size = FleetSize.VERY_SMALL;
064                        quality = FleetQuality.VERY_LOW;
065                        oQuality = OfficerQuality.LOWER;
066                        oNum = OfficerNum.FC_ONLY;
067                        type = FleetTypes.PATROL_SMALL;
068                } else if (difficulty == 2) {
069                        size = FleetSize.SMALL;
070                        quality = FleetQuality.DEFAULT;
071                        oQuality = OfficerQuality.LOWER;
072                        oNum = OfficerNum.FEWER;
073                        type = FleetTypes.PATROL_SMALL;
074                } else if (difficulty == 3) {
075                        size = FleetSize.SMALL;
076                        quality = FleetQuality.DEFAULT;
077                        oQuality = OfficerQuality.DEFAULT;
078                        oNum = OfficerNum.DEFAULT;
079                        type = FleetTypes.PATROL_MEDIUM;
080                } else if (difficulty == 4 || difficulty == 5) {
081                        size = FleetSize.MEDIUM;
082                        quality = FleetQuality.DEFAULT;
083                        oQuality = OfficerQuality.DEFAULT;
084                        oNum = OfficerNum.DEFAULT;
085                        type = FleetTypes.PATROL_MEDIUM;
086                } else if (difficulty == 6) {
087                        size = FleetSize.LARGE;
088                        quality = FleetQuality.DEFAULT;
089                        oQuality = OfficerQuality.DEFAULT;
090                        oNum = OfficerNum.DEFAULT;
091                        type = FleetTypes.PATROL_LARGE;
092                } else if (difficulty == 7) {
093                        size = FleetSize.LARGE;
094                        quality = FleetQuality.HIGHER;
095                        oQuality = OfficerQuality.DEFAULT;
096                        oNum = OfficerNum.MORE;
097                        type = FleetTypes.PATROL_LARGE;
098                } else if (difficulty == 8) {
099                        size = FleetSize.VERY_LARGE;
100                        quality = FleetQuality.HIGHER;
101                        oQuality = OfficerQuality.DEFAULT;
102                        oNum = OfficerNum.MORE;
103                        type = FleetTypes.PATROL_LARGE;
104                } else if (difficulty == 9) {
105                        size = FleetSize.HUGE;
106                        quality = FleetQuality.HIGHER;
107                        oQuality = OfficerQuality.HIGHER;
108                        oNum = OfficerNum.MORE;
109                        type = FleetTypes.PATROL_LARGE;
110                } else {// if (difficulty == 10) {
111                        size = FleetSize.MAXIMUM;
112                        quality = FleetQuality.HIGHER;
113                        oQuality = OfficerQuality.HIGHER;
114                        //oNum = OfficerNum.ALL_SHIPS;
115                        oNum = OfficerNum.MORE;
116                        type = FleetTypes.PATROL_LARGE;
117                }
118                
119                beginFleet(mission, data);
120                mission.triggerCreateFleet(size, quality, factionId, type, data.system);
121                mission.triggerSetFleetOfficers(oNum, oQuality);
122                mission.triggerFleetPatherNoDefaultTithe();
123                mission.triggerAutoAdjustFleetSize(size, size.next());
124                mission.triggerSetStandardAggroPirateFlags();
125                mission.triggerPickLocationAtInSystemJumpPoint(data.system);
126                mission.triggerSpawnFleetAtPickedLocation(null, null);
127                //mission.triggerOrderFleetPatrol(data.system);
128                mission.triggerOrderFleetPatrol(data.system, true, Tags.JUMP_POINT, Tags.SALVAGEABLE, Tags.PLANET, Tags.STATION);
129                data.fleet = createFleet(mission, data);
130                if (data.fleet == null) return null;
131                
132                setRepChangesBasedOnDifficulty(data, difficulty);
133                data.baseReward = CBStats.getBaseBounty(difficulty, CBStats.PATHER_MULT, mission);
134                
135                return data;
136        }
137        
138}
139
140
141
142
143
144