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