001package com.fs.starfarer.api.impl.campaign.missions.cb; 002 003import com.fs.starfarer.api.campaign.FactionAPI; 004import com.fs.starfarer.api.campaign.FactionAPI.ShipPickMode; 005import com.fs.starfarer.api.campaign.StarSystemAPI; 006import com.fs.starfarer.api.campaign.econ.MarketAPI; 007import com.fs.starfarer.api.impl.campaign.ids.Factions; 008import com.fs.starfarer.api.impl.campaign.ids.FleetTypes; 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; 015 016public class CBDeserter extends BaseCustomBountyCreator { 017 018 @Override 019 public float getFrequency(HubMissionWithBarEvent mission, int difficulty) { 020 if (Factions.PIRATES.equals(mission.getPerson().getFaction().getId())) return 0f; 021 return super.getFrequency(mission, difficulty) * CBStats.DESERTER_FREQ; 022 } 023 024 public String getBountyNamePostfix(HubMissionWithBarEvent mission, CustomBountyData data) { 025 return " - Deserter"; 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// mission.requireSystemTags(ReqMode.ANY, Tags.THEME_RUINS, Tags.THEME_MISC, Tags.THEME_REMNANT_SECONDARY, 034// Tags.THEME_DERELICT, Tags.THEME_REMNANT_DESTROYED); 035 mission.requireSystemInterestingAndNotUnsafeOrCore(); 036 mission.requireSystemNotHasPulsar(); 037 StarSystemAPI system = mission.pickSystem(); 038 data.system = system; 039 040 FleetSize size = FleetSize.MEDIUM; 041 FleetQuality quality = FleetQuality.DEFAULT; 042 String type = FleetTypes.PATROL_MEDIUM; 043 OfficerQuality oQuality = OfficerQuality.DEFAULT; 044 OfficerNum oNum = OfficerNum.DEFAULT; 045 046 FactionAPI faction = mission.getPerson().getFaction(); 047 048 if (difficulty <= 4) { 049 size = FleetSize.SMALL; 050 quality = FleetQuality.DEFAULT; 051 oQuality = OfficerQuality.DEFAULT; 052 oNum = OfficerNum.DEFAULT; 053 type = FleetTypes.PATROL_SMALL; 054 } else if (difficulty <= 5) { 055 size = FleetSize.MEDIUM; 056 quality = FleetQuality.DEFAULT; 057 oQuality = OfficerQuality.DEFAULT; 058 oNum = OfficerNum.DEFAULT; 059 type = FleetTypes.PATROL_MEDIUM; 060 } else if (difficulty == 6) { 061 size = FleetSize.LARGE; 062 quality = FleetQuality.DEFAULT; 063 oQuality = OfficerQuality.DEFAULT; 064 oNum = OfficerNum.DEFAULT; 065 type = FleetTypes.PATROL_LARGE; 066 } else if (difficulty == 7) { 067 size = FleetSize.LARGE; 068 quality = FleetQuality.HIGHER; 069 oQuality = OfficerQuality.DEFAULT; 070 oNum = OfficerNum.MORE; 071 type = FleetTypes.PATROL_LARGE; 072 } else if (difficulty == 8) { 073 size = FleetSize.VERY_LARGE; 074 quality = FleetQuality.HIGHER; 075 oQuality = OfficerQuality.DEFAULT; 076 oNum = OfficerNum.MORE; 077 type = FleetTypes.PATROL_LARGE; 078 } else if (difficulty == 9) { 079 size = FleetSize.HUGE; 080 quality = FleetQuality.HIGHER; 081 oQuality = OfficerQuality.HIGHER; 082 oNum = OfficerNum.MORE; 083 type = FleetTypes.PATROL_LARGE; 084 } else { 085 size = FleetSize.MAXIMUM; 086 quality = FleetQuality.HIGHER; 087 oQuality = OfficerQuality.HIGHER; 088 oNum = OfficerNum.MORE; 089 type = FleetTypes.PATROL_LARGE; 090 } 091 092 beginFleet(mission, data); 093 mission.triggerCreateFleet(size, quality, faction.getId(), type, data.system); 094 mission.triggerSetFleetOfficers(oNum, oQuality); 095 mission.triggerAutoAdjustFleetSize(size, size.next()); 096 mission.triggerSetFleetFaction(Factions.PIRATES); 097 mission.triggerFleetSetShipPickMode(ShipPickMode.PRIORITY_THEN_ALL); 098 099 mission.triggerFleetSetNoFactionInName(); 100 if (faction.getEntityNamePrefix() == null || faction.getEntityNamePrefix().isEmpty()) { 101 mission.triggerFleetSetName("Deserter"); 102 } else { 103 mission.triggerFleetSetName(faction.getEntityNamePrefix() + " Deserter"); 104 } 105 106 mission.triggerSetStandardAggroPirateFlags(); 107 mission.triggerPickLocationAtInSystemJumpPoint(data.system); 108 mission.triggerSpawnFleetAtPickedLocation(null, null); 109 //mission.triggerOrderFleetPatrol(data.system); 110 mission.triggerOrderFleetPatrol(data.system, true, Tags.JUMP_POINT, Tags.SALVAGEABLE, Tags.PLANET); 111 data.fleet = createFleet(mission, data); 112 if (data.fleet == null) return null; 113 114 setRepChangesBasedOnDifficulty(data, difficulty); 115 data.baseReward = CBStats.getBaseBounty(difficulty, CBStats.DESERTER_MULT, mission); 116 117 return data; 118 } 119 120 121 @Override 122 public int getMaxDifficulty() { 123 return super.getMaxDifficulty(); 124 } 125 126 @Override 127 public int getMinDifficulty() { 128 return 4; 129 } 130 131} 132 133 134 135 136 137