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