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 CBRemnant extends BaseCustomBountyCreator { 018 019 public static float PROB_IN_SYSTEM_WITH_BASE = 0.5f; 020 public static float PROB_IN_SYSTEM_WITH_TAP = 0.25f; 021 022 @Override 023 public float getFrequency(HubMissionWithBarEvent mission, int difficulty) { 024 return super.getFrequency(mission, difficulty) * CBStats.REMNANT_FREQ; 025 } 026 027 public String getBountyNamePostfix(HubMissionWithBarEvent mission, CustomBountyData data) { 028 return " - Remnant Fleet"; 029 } 030 031 @Override 032 public String getIconName() { 033 return Global.getSettings().getSpriteName("campaignMissions", "remnant_bounty"); 034 } 035 036 @Override 037 public CustomBountyData createBounty(MarketAPI createdAt, HubMissionWithBarEvent mission, int difficulty, Object bountyStage) { 038 CustomBountyData data = new CustomBountyData(); 039 data.difficulty = difficulty; 040 041 //mission.requireSystem(this); 042 mission.requireSystemTags(ReqMode.NOT_ANY, Tags.THEME_CORE); 043// mission.requireSystemTags(ReqMode.ANY, Tags.THEME_RUINS, Tags.THEME_MISC, Tags.THEME_REMNANT, 044// Tags.THEME_DERELICT, Tags.THEME_REMNANT_DESTROYED); 045 mission.preferSystemInteresting(); 046 mission.preferSystemUnexplored(); 047 mission.requireSystemNotHasPulsar(); 048 if (difficulty >= 9 && mission.rollProbability(PROB_IN_SYSTEM_WITH_BASE)) { 049 mission.preferSystemTags(ReqMode.ANY, Tags.THEME_REMNANT_MAIN); 050 mission.requireSystemTags(ReqMode.NOT_ANY, Tags.THEME_REMNANT_DESTROYED); 051 } else if (mission.rollProbability(PROB_IN_SYSTEM_WITH_TAP)) { 052 mission.preferSystemTags(ReqMode.ANY, Tags.HAS_CORONAL_TAP); 053 } else { 054 mission.preferSystemBlackHoleOrNebula(); 055 mission.preferSystemOnFringeOfSector(); 056 } 057 058 StarSystemAPI system = mission.pickSystem(); 059 data.system = system; 060 061 FleetSize size = FleetSize.MEDIUM; 062 FleetQuality quality = FleetQuality.VERY_HIGH; 063 OfficerQuality oQuality = OfficerQuality.AI_MIXED; 064 OfficerNum oNum = OfficerNum.ALL_SHIPS; 065 String type = FleetTypes.PATROL_SMALL; 066 067 if (difficulty == 7) { 068 size = FleetSize.LARGE; 069 type = FleetTypes.PATROL_MEDIUM; 070 oQuality = OfficerQuality.AI_BETA_OR_GAMMA; 071 } else if (difficulty == 8) { 072 size = FleetSize.VERY_LARGE; 073 type = FleetTypes.PATROL_LARGE; 074 oQuality = OfficerQuality.AI_MIXED; 075 } else if (difficulty == 9) { 076 size = FleetSize.HUGE; 077 type = FleetTypes.PATROL_LARGE; 078 oQuality = OfficerQuality.AI_ALPHA; 079 } else if (difficulty >= 10) { 080 size = FleetSize.MAXIMUM; 081 type = FleetTypes.PATROL_LARGE; 082 oQuality = OfficerQuality.AI_ALPHA; 083 } 084 085 //setIconName("campaignMissions", "station_bounty"); 086 087 beginFleet(mission, data); 088 if (false) { 089 mission.triggerCreateFleet(FleetSize.LARGE, FleetQuality.SMOD_2, Factions.MERCENARY, FleetTypes.MERC_BOUNTY_HUNTER, data.system); 090 mission.triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER); 091 mission.triggerSetFleetFaction(Factions.TRITACHYON); 092 mission.triggerMakeHostileAndAggressive(); 093 mission.triggerMakeLowRepImpact(); 094 mission.triggerSetFleetDoctrineComp(0, 0, 5); 095 mission.triggerFleetMakeFaster(true, 1, true); 096 } else { 097 mission.triggerCreateFleet(size, quality, Factions.REMNANTS, type, data.system); 098 mission.triggerSetFleetDoctrineQuality(5, 3, 5); 099 mission.triggerSetFleetOfficers(oNum, oQuality); 100 mission.triggerAutoAdjustFleetSize(size, size.next()); 101 mission.triggerSetRemnantConfigActive(); 102 mission.triggerSetFleetNoCommanderSkills(); 103 mission.triggerFleetAddCommanderSkill(Skills.FLUX_REGULATION, 1); 104 //mission.triggerFleetAddCommanderSkill(Skills.ELECTRONIC_WARFARE, 1); 105 mission.triggerFleetAddCommanderSkill(Skills.COORDINATED_MANEUVERS, 1); 106 107 mission.triggerFleetSetAllWeapons(); 108 } 109// if (difficulty >= 9) { 110// mission.triggerSetFleetDoctrineOther(5, -1); 111// } 112 //mission.triggerSetFleetDoctrineRandomize(1f); 113 //mission.triggerSetFleetDoctrineRandomize(0f); 114 115 mission.triggerPickLocationAtInSystemJumpPoint(data.system); 116 mission.triggerSpawnFleetAtPickedLocation(null, null); 117 //mission.triggerFleetSetPatrolActionText("patrolling"); 118 mission.triggerOrderFleetPatrol(data.system, true, Tags.JUMP_POINT, Tags.NEUTRINO, Tags.NEUTRINO_HIGH, Tags.STATION, 119 Tags.SALVAGEABLE, Tags.GAS_GIANT); 120 121 data.fleet = createFleet(mission, data); 122 if (data.fleet == null) return null; 123 124 setRepChangesBasedOnDifficulty(data, difficulty); 125 data.baseReward = CBStats.getBaseBounty(difficulty, CBStats.REMNANT_MULT, mission); 126 127 return data; 128 } 129 130 131 @Override 132 public int getMaxDifficulty() { 133 return super.getMaxDifficulty(); 134 } 135 136 @Override 137 public int getMinDifficulty() { 138 return 7; 139 } 140 141} 142 143 144