001package com.fs.starfarer.api.impl.campaign.missions; 002 003import java.awt.Color; 004import java.util.List; 005import java.util.Map; 006 007import com.fs.starfarer.api.Global; 008import com.fs.starfarer.api.campaign.InteractionDialogAPI; 009import com.fs.starfarer.api.campaign.econ.MarketAPI; 010import com.fs.starfarer.api.campaign.rules.MemoryAPI; 011import com.fs.starfarer.api.characters.PersonAPI; 012import com.fs.starfarer.api.impl.campaign.ids.Factions; 013import com.fs.starfarer.api.impl.campaign.ids.FleetTypes; 014import com.fs.starfarer.api.impl.campaign.ids.People; 015import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithSearch; 016import com.fs.starfarer.api.ui.TooltipMakerAPI; 017import com.fs.starfarer.api.util.Misc; 018import com.fs.starfarer.api.util.Misc.Token; 019 020public class ANewHope extends HubMissionWithSearch { 021 022 public static enum Stage { 023 GO_TO_VOLTURN, 024 COMPLETED, 025 } 026 027 protected PersonAPI robed_man; 028 //protected PersonAPI some_kid; 029 //protected PersonAPI robot; 030 031 protected MarketAPI volturn; 032 //protected MarketAPI asharu; 033 034 public static float MISSION_DAYS = 120f; 035 036 protected int payment; 037 protected int paymentHigh; 038 039 @Override 040 protected boolean create(MarketAPI createdAt, boolean barEvent) { 041 // if already accepted by the player, abort 042 if (!setGlobalReference("$anh_ref", "$anh_inProgress")) { 043 return false; 044 } 045 046 setPersonOverride(null); 047 048 robed_man = getImportantPerson(People.ROBEDMAN); 049 if (robed_man == null) return false; 050 051 052 volturn = Global.getSector().getEconomy().getMarket("volturn"); 053 if (volturn == null) return false; 054 if (!volturn.getFactionId().equals("sindrian_diktat")) return false; 055 056 setStartingStage(Stage.GO_TO_VOLTURN); 057 addSuccessStages(Stage.COMPLETED); 058 059 setStoryMission(); 060 061 // yes, these exact numbers. 062 payment = 10000; 063 paymentHigh = 17000; 064 065 makeImportant(volturn, "$anh_tookTheJob", Stage.GO_TO_VOLTURN); 066 //setStageOnMemoryFlag(Stage.COMPLETED, baird.getMarket(), "$gaTTB_completed"); 067 068 setStageOnGlobalFlag(Stage.COMPLETED, "$anh_completed"); 069 070 setRepFactionChangesNone(); 071 setRepPersonChangesNone(); 072 073 // spawn Diktat Patrol fleet to intercept the player 074 beginEnteredLocationTrigger(volturn.getStarSystem(), false, Stage.GO_TO_VOLTURN); 075 triggerCreateFleet(FleetSize.SMALL, FleetQuality.DEFAULT, Factions.DIKTAT, FleetTypes.PATROL_SMALL, volturn.getStarSystem()); 076 triggerAutoAdjustFleetStrengthMajor(); 077 triggerMakeHostileAndAggressive(); 078 triggerFleetAllowLongPursuit(); 079 triggerSetFleetAlwaysPursue(); 080 triggerPickLocationTowardsPlayer(volturn.getPlanetEntity(), 90f, getUnits(0.25f)); 081 triggerSpawnFleetAtPickedLocation("$anh_diktatPatrol", null); 082 triggerSetFleetMissionRef("$ahn_ref"); 083 triggerOrderFleetInterceptPlayer(); 084 triggerFleetMakeImportant(null, Stage.GO_TO_VOLTURN); 085 endTrigger(); 086 087 beginStageTrigger(Stage.COMPLETED); 088 triggerSetGlobalMemoryValue("$anh_missionCompleted", true); 089 endTrigger(); 090 091 return true; 092 } 093 094 protected void updateInteractionDataImpl() { 095 set("$anh_stage", getCurrentStage()); 096 //set("$anh_robedman", robed_man); 097 set("$anh_payment", Misc.getWithDGS(payment)); 098 set("$anh_paymentHigh", Misc.getWithDGS(paymentHigh)); 099 } 100 101 @Override 102 protected boolean callAction(String action, String ruleId, final InteractionDialogAPI dialog, 103 List<Token> params, final Map<String, MemoryAPI> memoryMap) { 104// if ("THEDUEL".equals(action)) { 105// TextPanelAPI text = dialog.getTextPanel(); 106// text.setFontOrbitronUnnecessarilyLarge(); 107// Color color = Misc.getBasePlayerColor(); 108// color = Global.getSector().getFaction(Factions.HEGEMONY).getBaseUIColor(); 109// text.addPara("THE DUEL", color); 110// text.setFontInsignia(); 111// text.addImage("misc", "THEDUEL"); 112// return true; 113// } 114 115 return super.callAction(action, ruleId, dialog, params, memoryMap); 116 } 117 118 @Override 119 public void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height) { 120 float opad = 10f; 121 Color h = Misc.getHighlightColor(); 122 123 info.addImage(robed_man.getPortraitSprite(), width, 128, opad); 124 125 if (currentStage == Stage.GO_TO_VOLTURN) { 126 info.addPara("Deliver the mysterious old man, the kid, and their robot to Volturn in the Askonia system. Avoid patrols; they may be wanted by the authorities.", opad); 127 } 128 } 129 130 @Override 131 public boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad) { 132 Color h = Misc.getHighlightColor(); 133 if (currentStage == Stage.GO_TO_VOLTURN) { 134 info.addPara("Go to Volturn in the Askonia system", tc, pad); 135 return true; 136 } 137 return false; 138 } 139 140 @Override 141 public String getBaseName() { 142 return "Passage To Volturn"; 143 } 144 145 @Override 146 public String getPostfixForState() { 147 if (startingStage != null) { 148 return ""; 149 } 150 return super.getPostfixForState(); 151 } 152} 153 154 155 156 157