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