001package com.fs.starfarer.api.impl.campaign.missions.cb;
002
003import com.fs.starfarer.api.Global;
004import com.fs.starfarer.api.campaign.StarSystemAPI;
005import com.fs.starfarer.api.campaign.econ.MarketAPI;
006import com.fs.starfarer.api.impl.campaign.ids.Factions;
007import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
008import com.fs.starfarer.api.impl.campaign.ids.Skills;
009import com.fs.starfarer.api.impl.campaign.ids.Tags;
010import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
011import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality;
012import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetSize;
013import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerNum;
014import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerQuality;
015import com.fs.starfarer.api.impl.campaign.missions.hub.ReqMode;
016
017public class CBDerelict extends BaseCustomBountyCreator {
018
019        @Override
020        public float getFrequency(HubMissionWithBarEvent mission, int difficulty) {
021                return super.getFrequency(mission, difficulty) * CBStats.DERELICT_FREQ;
022        }
023        
024        public String getBountyNamePostfix(HubMissionWithBarEvent mission, CustomBountyData data) {
025                return " - Derelict Fleet";
026        }
027        
028        @Override
029        public String getIconName() {
030                return Global.getSettings().getSpriteName("campaignMissions", "derelict_bounty");
031        }
032        
033
034        @Override
035        public CustomBountyData createBounty(MarketAPI createdAt, HubMissionWithBarEvent mission, int difficulty, Object bountyStage) {
036                CustomBountyData data = new CustomBountyData();
037                data.difficulty = difficulty;
038                
039                //mission.setIconName("campaignMissions", "derelict_bounty");
040                
041                //mission.requireSystem(this);
042                mission.requireSystemTags(ReqMode.NOT_ANY, Tags.THEME_CORE);
043                mission.requireSystemNotHasPulsar();
044                mission.preferSystemBlackHoleOrNebula();
045                mission.preferSystemOnFringeOfSector();
046                
047                StarSystemAPI system = mission.pickSystem();
048                data.system = system;
049        
050                FleetSize size = FleetSize.MEDIUM;
051                FleetQuality quality = FleetQuality.DEFAULT;
052                OfficerQuality oQuality = OfficerQuality.AI_GAMMA;
053                OfficerNum oNum = OfficerNum.ALL_SHIPS;
054                
055                if (difficulty <= 5) {
056                        size = FleetSize.MEDIUM;
057                } else if (difficulty == 6) {
058                        size = FleetSize.LARGE;
059                } else if (difficulty == 7) {
060                        size = FleetSize.LARGE;
061                } else if (difficulty == 8) {
062                        size = FleetSize.VERY_LARGE;
063                } else if (difficulty == 9) {
064                        size = FleetSize.HUGE;
065                } else if (difficulty >= 10) {
066                        size = FleetSize.MAXIMUM;
067                }
068                
069                beginFleet(mission, data);
070                mission.triggerCreateFleet(size, quality, Factions.DERELICT, FleetTypes.PATROL_MEDIUM, data.system);
071                mission.triggerSetFleetOfficers(oNum, oQuality);
072                mission.triggerAutoAdjustFleetSize(size, size.next());
073                mission.triggerSetRemnantConfigActive();
074                mission.triggerSetFleetFaction(Factions.DERELICT);
075                mission.triggerFleetSetName("Derelict Fleet");
076                mission.triggerFleetAddTags(Tags.NEUTRINO_HIGH);
077                mission.triggerFleetAddCommanderSkill(Skills.DERELICT_CONTINGENT, 1);
078                mission.triggerMakeHostileAndAggressive();
079                mission.triggerMakeNoRepImpact();
080                //mission.triggerSetFleetMemoryValue("$shownFleetDescAlready", true);
081                mission.triggerDoNotShowFleetDesc();
082                mission.triggerFleetForceAutofitOnAllShips();
083                mission.triggerFleetSetAllWeapons();
084                mission.triggerPickLocationAtInSystemJumpPoint(data.system);
085                mission.triggerSpawnFleetAtPickedLocation(null, null);
086                mission.triggerFleetSetPatrolActionText("taking scientific readings");
087                mission.triggerOrderFleetPatrol(data.system, true, Tags.JUMP_POINT, Tags.NEUTRINO, Tags.NEUTRINO_HIGH, Tags.GAS_GIANT);
088                
089                data.fleet = createFleet(mission, data);
090                if (data.fleet == null) return null;
091                
092                setRepChangesBasedOnDifficulty(data, difficulty);
093                data.baseReward = CBStats.getBaseBounty(difficulty, CBStats.DERELICT_MULT, mission);
094                
095                return data;
096        }
097        
098
099        @Override
100        public int getMaxDifficulty() {
101                return super.getMaxDifficulty();
102        }
103
104        @Override
105        public int getMinDifficulty() {
106                return 5;
107        }
108
109}
110
111
112
113
114
115