001package com.fs.starfarer.api.impl.campaign.missions.luddic; 002 003import java.awt.Color; 004import java.util.List; 005import java.util.Map; 006 007import org.lwjgl.util.vector.Vector2f; 008 009import com.fs.starfarer.api.Global; 010import com.fs.starfarer.api.campaign.CampaignFleetAPI; 011import com.fs.starfarer.api.campaign.InteractionDialogAPI; 012import com.fs.starfarer.api.campaign.RepLevel; 013import com.fs.starfarer.api.campaign.SectorEntityToken; 014import com.fs.starfarer.api.campaign.StarSystemAPI; 015import com.fs.starfarer.api.campaign.econ.MarketAPI; 016import com.fs.starfarer.api.campaign.rules.MemoryAPI; 017import com.fs.starfarer.api.characters.PersonAPI; 018import com.fs.starfarer.api.impl.campaign.ids.Factions; 019import com.fs.starfarer.api.impl.campaign.ids.FleetTypes; 020import com.fs.starfarer.api.impl.campaign.ids.People; 021import com.fs.starfarer.api.impl.campaign.ids.Tags; 022import com.fs.starfarer.api.impl.campaign.intel.bases.LuddicPathBaseIntel; 023import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithSearch; 024import com.fs.starfarer.api.impl.campaign.missions.hub.ReqMode; 025import com.fs.starfarer.api.ui.SectorMapAPI; 026import com.fs.starfarer.api.ui.TooltipMakerAPI; 027import com.fs.starfarer.api.util.Misc; 028import com.fs.starfarer.api.util.Misc.Token; 029 030public class BornanewFilesFalseIdols extends HubMissionWithSearch { 031 032 public static enum Stage { 033 PICK_UP_BORNANEW, 034 MEET_MENES_YARIBAY, 035 ATTEND_A_PARTY, 036 TALK_TO_HORUS, 037 TALK_TO_ENGINEER, 038 TALK_TO_ULMUS_POND, 039 GO_TO_CHALCEDON, 040 INVESTIGATE_PATHER_STATION, 041 RETURN_TO_HESPERUS_EARLY, 042 GO_TO_HESPERUS, 043 ARREST_THE_CURATE, 044 DELIVER_KEEPFAITH, 045 COMPLETED, 046 } 047 048 protected PersonAPI bornanew; 049 protected PersonAPI jaspis; 050 protected PersonAPI ulmus_pond; 051 protected PersonAPI sedge; 052 protected PersonAPI menes_yaribay; 053 protected PersonAPI horus_yaribay; 054 protected PersonAPI cedra_keepfaith; 055 056 protected MarketAPI asher; 057 protected MarketAPI chalcedon; 058 protected MarketAPI olinadu; 059 protected MarketAPI kazeron; 060 protected MarketAPI gilead; 061 protected MarketAPI hesperus; 062 protected MarketAPI tartessus; 063 protected MarketAPI bornanewLocation; 064 065 protected StarSystemAPI patherBaseSystem; 066 067 protected LuddicPathBaseIntel patherStation; 068 protected CampaignFleetAPI patherStationFleet; 069 070 protected int stationSalvorLoss; 071 072 073 @Override 074 protected boolean create(MarketAPI createdAt, boolean barEvent) { 075 // if already accepted by the player, abort 076 if (!setGlobalReference("$bffi_ref", "$bffi_inProgress")) { 077 return false; 078 } 079 080 // Places 081 chalcedon = Global.getSector().getEconomy().getMarket("chalcedon"); 082 if (chalcedon == null) return false; 083 if (!chalcedon.getFactionId().equals(Factions.LUDDIC_PATH)) return false; 084 085 gilead = Global.getSector().getEconomy().getMarket("gilead"); 086 if (gilead == null) return false; 087 if (!gilead.getFactionId().equals(Factions.LUDDIC_CHURCH)) return false; 088 089 kazeron = Global.getSector().getEconomy().getMarket("kazeron"); 090 if (kazeron == null) return false; 091 if (!kazeron.getFactionId().equals(Factions.PERSEAN)) return false; 092 093 olinadu = Global.getSector().getEconomy().getMarket("olinadu"); 094 if (olinadu == null) return false; 095 if (!olinadu.getFactionId().equals(Factions.PERSEAN)) return false; 096 097 hesperus = Global.getSector().getEconomy().getMarket("hesperus"); 098 if (hesperus == null) return false; 099 if (!hesperus.getFactionId().equals(Factions.LUDDIC_CHURCH)) return false; 100 101 tartessus = Global.getSector().getEconomy().getMarket("tartessus"); 102 if (tartessus == null) return false; 103 if (!tartessus.getFactionId().equals(Factions.LUDDIC_CHURCH)) return false; 104 105 asher = Global.getSector().getEconomy().getMarket("asher"); 106 if (asher == null) return false; 107 if (!asher.getFactionId().equals(Factions.LUDDIC_CHURCH)) return false; 108 109 110 // People 111 112 bornanew = getImportantPerson(People.BORNANEW); 113 if (bornanew == null) return false; 114 115 jaspis = getImportantPerson(People.JASPIS); 116 if (bornanew == null) return false; 117 118 ulmus_pond = getImportantPerson(People.ULMUS_POND); 119 if (ulmus_pond == null) return false; 120 121 menes_yaribay = getImportantPerson(People.MENES_YARIBAY); 122 if (menes_yaribay == null) return false; 123 124 horus_yaribay = getImportantPerson(People.HORUS_YARIBAY); 125 if (horus_yaribay == null) return false; 126 127 cedra_keepfaith = getImportantPerson(People.CEDRA_KEEPFAITH); 128 if (cedra_keepfaith == null) return false; 129 130 131 // Find a system to hide Pather base in 132 resetSearch(); 133 requireSystemTags(ReqMode.ANY, Tags.THEME_MISC, Tags.THEME_MISC_SKIP, Tags.THEME_RUINS); 134 requireSystemTags(ReqMode.NOT_ANY, Tags.THEME_UNSAFE, Tags.THEME_CORE, Tags.SYSTEM_ALREADY_USED_FOR_STORY); 135 requireSystemNotAlreadyUsedForStory(); 136 requireSystemNotHasPulsar(); // don't want the challenge to get blown up. 137 preferSystemOnFringeOfSector(); 138 preferSystemUnexplored(); 139 preferSystemInDirectionOfOtherMissions(); 140 patherBaseSystem = pickSystem(); 141 if (patherBaseSystem == null) return false; 142 143 setStoryMission(); 144 145 setStartingStage(Stage.PICK_UP_BORNANEW); 146 connectWithGlobalFlag(Stage.PICK_UP_BORNANEW, Stage.MEET_MENES_YARIBAY, "$bffi_goMeetMenesYaribay"); 147 setStageOnGlobalFlag(Stage.ATTEND_A_PARTY, "$bffi_gotPartyInvite"); 148 setStageOnGlobalFlag(Stage.TALK_TO_HORUS, "$bffi_goTalkToHorus"); 149 setStageOnGlobalFlag(Stage.TALK_TO_ENGINEER, "$bffi_talkToEngineer"); 150 setStageOnGlobalFlag(Stage.TALK_TO_ULMUS_POND, "$bffi_talkToUlmusPond"); 151 setStageOnGlobalFlag(Stage.GO_TO_CHALCEDON, "$bffi_followUlmusPond"); 152 setStageOnGlobalFlag(Stage.INVESTIGATE_PATHER_STATION, "$bffi_investigatePatherStation"); 153 154 setStageOnGlobalFlag(Stage.ARREST_THE_CURATE, "$bffi_arrestTheCurate"); // for testing. 155 156 setStageOnGlobalFlag(Stage.RETURN_TO_HESPERUS_EARLY, "$bffi_destroyedStationEarly"); // half-failure. 157 158 setStageOnGlobalFlag(Stage.GO_TO_HESPERUS, "$bffi_returnBornanewBody"); // definitely a failure 159 setStageOnGlobalFlag(Stage.GO_TO_HESPERUS, "$bffi_keepfaithEscapedTartessus"); // half-failure. 160 161 setStageOnGlobalFlag(Stage.ARREST_THE_CURATE, "$bffi_learnedAboutKeepfaith"); 162 setStageOnGlobalFlag(Stage.DELIVER_KEEPFAITH, "$bffi_arrestedKeepfaith"); 163 164 165 setStageOnGlobalFlag(Stage.COMPLETED, "$bffi_completed"); 166 addSuccessStages(Stage.COMPLETED); 167 168 makeImportant(bornanew, "$bffi_pickUpBornanew", Stage.PICK_UP_BORNANEW); 169 makeImportant(menes_yaribay, "$bffi_meetMenesYaribay", Stage.MEET_MENES_YARIBAY); 170 makeImportant(olinadu, "$bffi_attendAParty", Stage.ATTEND_A_PARTY); 171 makeImportant(horus_yaribay, "$bffi_talkToHorusAboutMenesParty", Stage.TALK_TO_HORUS); 172 173 makeImportant(asher, "$bffi_talkToEngineer", Stage.TALK_TO_ENGINEER); 174 175 makeImportant(ulmus_pond, "$bffi_talkToUlmusPond", Stage.TALK_TO_ULMUS_POND); 176 makeImportant(chalcedon, "$bffi_followUlmusPond", Stage.GO_TO_CHALCEDON); 177 178 makeImportant(tartessus, "$bffi_arrestTheCurate", Stage.ARREST_THE_CURATE); 179 makeImportant(hesperus, "$bffi_deliverKeepfaith", Stage.DELIVER_KEEPFAITH); 180 181 makeImportant(hesperus, "$bffi_goToHesperus", Stage.GO_TO_HESPERUS); 182 makeImportant(hesperus, "$bffi_goToHesperus", Stage.RETURN_TO_HESPERUS_EARLY); 183 184 setName("False Idols"); 185 setRepFactionChangesNone(); 186 setRepPersonChangesNone(); 187 188 // Spawn a PL patrol or two to spice up things around Olinadu pre Menes' party 189 beginStageTrigger(Stage.ATTEND_A_PARTY); 190 triggerCreateFleet(FleetSize.SMALL, FleetQuality.DEFAULT, Factions.PERSEAN, FleetTypes.PATROL_MEDIUM, olinadu.getPlanetEntity()); 191 triggerPickLocationAroundEntity(olinadu.getPlanetEntity(), 1600f); 192 triggerSpawnFleetAtPickedLocation("$gaDHO_arrayFleet", null); 193 triggerOrderFleetPatrol(false, olinadu.getPlanetEntity(), olinadu.getStarSystem().getJumpPoints().get(0)); 194 triggerSetFleetMissionRef("$bffi_ref"); 195 endTrigger(); 196 197 // And a couple PL patrols for after the party. 198 beginStageTrigger(Stage.TALK_TO_ENGINEER); 199 triggerCreateFleet(FleetSize.SMALL, FleetQuality.DEFAULT, Factions.PERSEAN, FleetTypes.PATROL_MEDIUM, olinadu.getPlanetEntity()); 200 triggerFleetAllowLongPursuit(); 201 triggerPickLocationAroundEntity(olinadu.getPlanetEntity(), 1000f); 202 triggerSetFleetMissionRef("$bffi_ref"); 203 triggerSpawnFleetAtPickedLocation("$bffi_postRaidPatrol", null); 204 //triggerOrderFleetPatrol(false, olinadu.getPlanetEntity(), olinadu.getStarSystem().getJumpPoints().get(0), olinadu.getStarSystem().getJumpPoints().get(1)); 205 //triggerOrderFleetInterceptPlayer(); // Could write a unique interaction, but I'd want it to have consequences... -dgb 206 endTrigger(); 207 208 beginStageTrigger(Stage.TALK_TO_ENGINEER); 209 triggerCreateFleet(FleetSize.SMALL, FleetQuality.DEFAULT, Factions.PERSEAN, FleetTypes.PATROL_MEDIUM, olinadu.getPlanetEntity()); 210 triggerSetFleetFaction(Factions.PERSEAN); 211 //triggerAutoAdjustFleetStrengthMajor(); 212 triggerPickLocationTowardsEntity(olinadu.getStarSystem().getHyperspaceAnchor(), 30f, getUnits(1.5f)); 213 //triggerFleetAllowLongPursuit(); 214 triggerSetFleetMissionRef("$bffi_ref"); 215 triggerSpawnFleetAtPickedLocation("$bffi_postRaidPatrol", null); 216 triggerOrderFleetPatrol(false, olinadu.getPlanetEntity(), olinadu.getStarSystem().getJumpPoints().get(1)); 217 //triggerOrderFleetInterceptPlayer(); // Could write a unique interaction, but I'd want it to have consequences... -dgb 218 endTrigger(); 219 220 221 // Spawn a Pather fleet near Chalcedon after Pond tips them off (inadvertantly or not) 222 beginWithinHyperspaceRangeTrigger(chalcedon.getPlanetEntity(), 1f, false,Stage.GO_TO_CHALCEDON); 223 triggerCreateFleet(FleetSize.MEDIUM, FleetQuality.DEFAULT, Factions.LUDDIC_PATH, FleetTypes.PATROL_MEDIUM, chalcedon.getPlanetEntity()); 224 triggerSetFleetFaction(Factions.LUDDIC_PATH); 225 triggerPickLocationAroundEntity(chalcedon.getPlanetEntity(), 800f); 226 triggerOrderFleetPatrol(chalcedon.getPlanetEntity()); 227 triggerSpawnFleetAtPickedLocation("$bffi_patherGoblins", null); 228 triggerSetFleetMissionRef("$bffi_ref"); 229 230 // if player is hostile to Path, Path fleet is hostile to player. 231 if( Global.getSector().getFaction(Factions.LUDDIC_PATH).getRelToPlayer().isAtBest(RepLevel.HOSTILE)){ 232 triggerMakeHostileAndAggressive(); 233 } 234 235 triggerFleetSetPatrolLeashRange(1400f); 236 triggerMakeFleetGoAwayAfterDefeat(); 237 endTrigger(); 238 239 // A *serious* Luddic intercept fleet post-Chalcedon 240 // Revenge for killing Sedge and/or the same but stopping player's meddling. 241 // Maybe they demand to talk to Bornanew? 242 beginWithinHyperspaceRangeTrigger(chalcedon, 3f, true, Stage.INVESTIGATE_PATHER_STATION); 243 triggerCreateFleet(FleetSize.LARGER, FleetQuality.HIGHER, Factions.LUDDIC_PATH, FleetTypes.PATROL_LARGE, chalcedon.getLocationInHyperspace()); 244 triggerSetFleetOfficers(OfficerNum.MORE, OfficerQuality.HIGHER); 245 triggerMakeHostileAndAggressive(); 246 triggerFleetMakeFaster(true, 2, true); 247 triggerSetFleetAlwaysPursue(); 248 triggerPickLocationTowardsEntity(chalcedon.getStarSystem().getHyperspaceAnchor(), 30f, getUnits(1.5f)); 249 triggerSpawnFleetAtPickedLocation("$bffi_patherIntercept", null); 250 triggerOrderFleetInterceptPlayer(); 251 triggerOrderFleetEBurn(1f); 252 triggerSetFleetMissionRef("$bffi_ref"); 253 triggerFleetMakeImportant(null, Stage.INVESTIGATE_PATHER_STATION); 254 endTrigger(); 255 256 beginStageTrigger(Stage.COMPLETED); 257 triggerMakeNonStoryCritical("asher", "chalcedon", "olinadu", "kazeron", "gilead", "hesperus", "tartessus"); 258 triggerSetGlobalMemoryValue("$bffi_missionCompleted", true); 259 endTrigger(); 260 261 return true; 262 } 263 264 protected void updateInteractionDataImpl() { 265 set("$bffi_stage", getCurrentStage()); 266 set("$bffi_patherStationSystem", patherBaseSystem.getName()); 267 } 268 269 @Override 270 protected boolean callAction(String action, String ruleId, final InteractionDialogAPI dialog, 271 List<Token> params, final Map<String, MemoryAPI> memoryMap) { 272 273 if ("spawnPatherBase".equals(action)) { 274 //new LuddicPathBaseIntel(patherBaseSystem, Factions.LUDDIC_PATH); 275 276 patherStation = new LuddicPathBaseIntel(patherBaseSystem, Factions.LUDDIC_PATH); 277 278 279 /* Don't need to actually simulate all of this. 280 patherStation.getMarket().addIndustry("heavyindustry"); 281 MarketAPI patherMarket = patherStation.getMarket(); 282 String itemId = "corrupted_nanoforge"; 283 InstallableItemEffect effect = ItemEffectsRepo.ITEM_EFFECTS.get(itemId); 284 Industry ind = patherMarket.getIndustry("heavyindustry"); 285 ind.setSpecialItem(new SpecialItemData(itemId, null)); 286 */ 287 288 MemoryAPI mem = patherStation.getEntity().getMemoryWithoutUpdate(); 289 mem.set("$bffi_patherStationTarget", true); 290 Global.getSector().addScript(patherStation); 291 292 CampaignFleetAPI patherStationFleet = Misc.getStationFleet(patherStation.getMarket()); 293 294 //makeImportant(patherStation, , Stage.INVESTIGATE_PATHER_STATION); 295 Misc.makeImportant(patherStation.getEntity(), "$bffi_investigatePatherStation"); 296 Misc.addDefeatTrigger(patherStationFleet, "BFFIpatherStationDefeated"); 297 298 /*patherStationFleet.addEventListener(new BaseFleetEventListener() { 299 @Override 300 public void reportFleetDespawnedToListener(CampaignFleetAPI fleet, FleetDespawnReason reason, Object param) { 301 if (reason == FleetDespawnReason.DESTROYED_BY_BATTLE) { 302 // TODO something. 303 //fleet.getMemoryWithoutUpdate().unset("$gaATG_hegScanFleet"); 304 //encounterGateHegemony.getMemoryWithoutUpdate().unset("$GAATGhegemonyScanFleet"); 305 } 306 } 307 });*/ 308 return true; 309 } 310 else if ("cleanUpPatherBase".equals(action)) { 311 312 Misc.makeUnimportant(patherStation.getEntity(), "$bffi_investigatePatherStation"); 313 // Is this implicit? 314 return true; 315 } 316 else if ("patherBaseLosses".equals(action)) 317 { 318 // ui_cargo_special_tech_drop 319 Global.getSoundPlayer().playSound("explosion_from_damage", 1, 1, Global.getSoundPlayer().getListenerPos(), new Vector2f()); 320 return true; 321 } 322 else if ("shootEm".equals(action)) 323 { 324 Global.getSoundPlayer().playSound("storyevent_diktat_execution", 1, 1, Global.getSoundPlayer().getListenerPos(), new Vector2f()); 325 return true; 326 } 327 else if ("ulmusPondMaskOff".equals(action)) { // unused, actually. 328 ulmus_pond.setFaction("luddic_path"); // Whaaaaa???? 329 return true; 330 } 331 else if ("setCourseChalcedon".equals(action)) { 332 Global.getSector().layInCourseFor(chalcedon.getPlanetEntity()); 333 return true; 334 } 335 /*else if ("transponderOff".equals(action)) { 336 Global.getSector().getPlayerFleet().getAbility(Abilities.TRANSPONDER).deactivate(); 337 return true; 338 } 339 else if ("transponderOn".equals(action)) { 340 Global.getSector().getPlayerFleet().getAbility(Abilities.TRANSPONDER).activate(); 341 return true; 342 }*/ 343 else if ("doCleanup".equals(action)) 344 { 345 Global.getSector().getMemoryWithoutUpdate().unset("$bffi_jethroCalledOutPond"); 346 //Global.getSector().getMemoryWithoutUpdate().unset("$bffi_intendToTalkHorus"); 347 // Jeez, anything else? 348 return true; 349 } 350 351 return super.callAction(action, ruleId, dialog, params, memoryMap); 352 } 353 354// if ("THEDUEL".equals(action)) { 355// TextPanelAPI text = dialog.getTextPanel(); 356// text.setFontOrbitronUnnecessarilyLarge(); 357// Color color = Misc.getBasePlayerColor(); 358// color = Global.getSector().getFaction(Factions.HEGEMONY).getBaseUIColor(); 359// text.addPara("THE DUEL", color); 360// text.setFontInsignia(); 361// text.addImage("misc", "THEDUEL"); 362// return true; 363// } 364/* 365 366 else if ("didMazalotRaid".equals(action)) 367 { 368 RecentUnrest.get(mazalot).add(10, "Raided Mazalot and caused a Luddic uprising"); 369 return true; 370 }*/ 371 372 373 /* 374 @Override 375 public void createSmallDescription(TooltipMakerAPI info, float width, float height) { 376 Color h = Misc.getHighlightColor(); 377 Color g = Misc.getGrayColor(); 378 float pad = 3f; 379 float opad = 10f; 380 381 FactionAPI faction = getFactionForUIColors(); 382 PersonAPI person = getPerson(); 383 384 //info.addImage(Global.getSettings().getSpriteName("illustrations", "luddic_shrine"), width, opad); 385 386 addDescriptionForCurrentStage(info, width, height); 387 388 addBulletPoints(info, ListInfoMode.IN_DESC); 389 } 390 */ 391 392 @Override 393 public void addDescriptionForNonEndStage(TooltipMakerAPI info, float width, float height) { 394 float opad = 10f; 395 //Color h = Misc.getHighlightColor(); 396 397 //Color h2 = Misc.getDarkHighlightColor(); 398 //FactionAPI church = Global.getSector().getFaction(Factions.LUDDIC_CHURCH); 399 400 //info.addImage(robed_man.getPortraitSprite(), width, 128, opad); 401 402 if (currentStage == Stage.PICK_UP_BORNANEW) { 403 info.addPara("Pick up Jethro Bornanew from Gilead.", opad); 404 addStandardMarketDesc("Go to " + gilead.getOnOrAt(), gilead, info, opad); 405 } 406 else if (currentStage == Stage.MEET_MENES_YARIBAY) { 407 info.addPara("Go to Olinadu and contact Menes Yaribay, the planetary administrator.", opad); 408 addStandardMarketDesc("Go to " + olinadu.getOnOrAt(), olinadu, info, opad); 409 } 410 else if (currentStage == Stage.TALK_TO_HORUS) { 411 info.addPara("Go to Kazeron and talk to Horus Yaribay about his cousin Menes.", opad); 412 addStandardMarketDesc("Go to " + kazeron.getOnOrAt(), kazeron, info, opad); 413 } 414 else if (currentStage == Stage.ATTEND_A_PARTY) { 415 416 if(Global.getSector().getMemoryWithoutUpdate().contains("$bffi_intendToSteal")) { 417 info.addPara("Attend Menes Yaribay's 'gathering' on Olinadu and find a way to steal the false relic.", opad); 418 addStandardMarketDesc("Go to " + olinadu.getOnOrAt(), olinadu, info, opad); 419 } 420 else if(Global.getSector().getMemoryWithoutUpdate().contains("$bffi_horusToParty")) { 421 info.addPara("Attend Menes Yaribay's 'gathering' on Olinadu with Horus Yaribay, the patriarch of Gens Yaribay.", opad); 422 addStandardMarketDesc("Go to " + olinadu.getOnOrAt(), olinadu, info, opad); 423 } 424 else { 425 info.addPara("Attend Menes Yaribay's 'gathering' on Olinadu and acquire the false relic.", opad); 426 addStandardMarketDesc("Go to " + olinadu.getOnOrAt(), olinadu, info, opad); 427 } 428 } 429 else if (currentStage == Stage.TALK_TO_ENGINEER) { 430 info.addPara("Bring the false relic to Asher so that a nanoforge engineer in the employ of the Church can examine it.", opad); 431 addStandardMarketDesc("Go to " + asher.getOnOrAt(), asher, info, opad); 432 } 433 else if (currentStage == Stage.TALK_TO_ULMUS_POND) { 434 info.addPara("Go to Olinadu and confront Ulmus Pond to get a confession.", opad); 435 addStandardMarketDesc("Go to " + asher.getOnOrAt(), asher, info, opad); 436 } 437 else if (currentStage == Stage.GO_TO_CHALCEDON) { 438 info.addPara("Go to Chalcedon and use Bornanew's intel to track down where Ulmus Pond is hiding.", opad); 439 addStandardMarketDesc("Go to " + chalcedon.getOnOrAt(), chalcedon, info, opad); 440 } 441 else if (currentStage == Stage.INVESTIGATE_PATHER_STATION) { 442 //info.addPara("Investigate the Pather Station in the " + patherStation.getSystem().getName() + " system and try to find out where their scan of the relic came from.", opad); 443 //addStandardMarketDesc("Go to the Pather station " + patherStation.getMarket().getOnOrAt(), patherStation.getMarket(), info, opad); 444 info.addPara(getGoToSystemTextShort(patherStation.getMarket().getStarSystem()) + " and investigate. Find where the glove came from and how it was made. Ensure no more will be created.",opad); 445 } 446 else if (currentStage == Stage.ARREST_THE_CURATE) { 447 info.addPara("Go to the Cathedral of Holy Exodus, on Tartessus, and arrest Subcurate Cedra Keepfaith.", opad); 448 addStandardMarketDesc("Go to " + tartessus.getOnOrAt(), tartessus, info, opad); 449 } 450 else if (currentStage == Stage.DELIVER_KEEPFAITH) { 451 info.addPara("Deliver Cedra Keepfaith to the Knights of Ludd on Hesperus to face their justice.", opad); 452 addStandardMarketDesc("Go to " + hesperus.getOnOrAt(), hesperus, info, opad); 453 } 454 else if (currentStage == Stage.GO_TO_HESPERUS) { 455 if(Global.getSector().getMemoryWithoutUpdate().contains("$bffi_keepfaithEscapedTartessus")){ 456 info.addPara("Report back to Excubitor Orbis Gideon Oak on Hesperus with news of Bornanew's quest.", opad); 457 addStandardMarketDesc("Go to " + hesperus.getOnOrAt(), hesperus, info, opad); 458 } 459 else { //Global.getSector().getMemoryWithoutUpdate().contains("$bffi_returnBornanewBody")) 460 info.addPara("Return Jethro Bornanew's body to the Knights of Ludd on Hesperus so he may rest with his fellow Knights.", opad); 461 addStandardMarketDesc("Go to " + hesperus.getOnOrAt(), hesperus, info, opad); 462 } 463 } 464 else if (currentStage == Stage.RETURN_TO_HESPERUS_EARLY) { 465 info.addPara("Report back to Excubitor Orbis Gideon Oak on Hesperus with news of Bornanew's quest.", opad); 466 addStandardMarketDesc("Go to " + hesperus.getOnOrAt(), hesperus, info, opad); 467 } 468 469 /*else if (currentStage == Stage.GO_TO_MAZALOT) { 470 info.addPara("A Pather, Sedge, claims that Jethro Bornanew travelled to Mazalot. Find him, or find where he has gone from there.", opad); 471 addStandardMarketDesc("Go to " + mazalot.getOnOrAt(), mazalot, info, opad); 472 } 473 else if (currentStage == Stage.CONTACT_VIRENS) { 474 info.addPara("Nile Virens runs the Luddic Path on Mazalot. If anyone knows where Bornanew is, it would be him or his organization. He might be persuaded to help by force or diplomacy.", opad); 475 addStandardMarketDesc("Contact Nile Virens " + mazalot.getOnOrAt(), mazalot, info, opad); 476 info.addImage(nile_virens.getPortraitSprite(), width, 128, opad); 477 info.addImage(nile_virens.getFaction().getCrest(), width, 128, opad); 478 } 479 else if (currentStage == Stage.CONTACT_BORNANEW) { 480 info.addPara("Nile Virens has provided you with the location of Jethro Bornanew, or so he claims. This consists of coordinates for a location on the surface of Mazalot, outside of a Luddic-majority settlement.", opad); 481 addStandardMarketDesc("Contact Jethro Bornanew " + mazalot.getOnOrAt(), mazalot, info, opad); 482 //info.addImage(bornanew.getPortraitSprite(), width, 128, opad); 483 } 484 else if (currentStage == Stage.RETURN_TO_GILEAD) { 485 info.addPara("Return with Jethro Bornanew to the office of Archcurate Jaspis.", opad); 486 addStandardMarketDesc("Go to " + gilead.getOnOrAt(), gilead, info, opad); 487 } 488 else if (currentStage == Stage.RETURN_TO_GILEAD2) { 489 info.addPara("Return to the office of Archcurate Jaspis with news of Jethro Bornanew's 'death'.", opad); 490 addStandardMarketDesc("Go to " + gilead.getOnOrAt(), gilead, info, opad); 491 }*/ 492 493 } 494 495 @Override 496 public boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad) { 497 //Color h = Misc.getHighlightColor(); 498 499 if (currentStage == Stage.PICK_UP_BORNANEW) { 500 info.addPara("Send a shuttle down to pick Novice Bornanew up from Gilead", tc, pad); 501 return true; 502 } 503 else if (currentStage == Stage.MEET_MENES_YARIBAY) { 504 info.addPara("Go to Olinadu and talk to the administrator, Menes Yaribay", tc, pad); 505 return true; 506 } 507 else if (currentStage == Stage.TALK_TO_HORUS) { 508 info.addPara("Go to Kazeron and talk to Horus Yaribay about Menes", tc, pad); 509 return true; 510 } 511 else if (currentStage == Stage.ATTEND_A_PARTY) { 512 if(Global.getSector().getMemoryWithoutUpdate().contains("$bffi_intendToSteal")) { 513 info.addPara("Attend the 'gathering' organized by Menes Yaribay on Olinadu", tc, pad); 514 } 515 else { 516 info.addPara("Attend the 'gathering' organized by Menes Yaribay on Olinadu", tc, pad); 517 } 518 519 return true; 520 } 521 else if (currentStage == Stage.TALK_TO_ENGINEER) { 522 info.addPara("Bring the false relic to Asher to be examined by a nanoforge engineer", tc, pad); 523 return true; 524 } 525 else if (currentStage == Stage.TALK_TO_ULMUS_POND) { 526 info.addPara("Go to Olinadu and talk to Ulmus Pond", tc, pad); 527 return true; 528 } 529 else if (currentStage == Stage.GO_TO_CHALCEDON) { 530 info.addPara("Go to Chalcedon and find Ulmus Pond", tc, pad); 531 return true; 532 } 533 else if (currentStage == Stage.INVESTIGATE_PATHER_STATION) { 534 info.addPara("Go to " + patherStation.getSystem().getName() + " and find the source of the 'relic'.", tc, pad); 535 return true; 536 } 537 else if (currentStage == Stage.ARREST_THE_CURATE) { 538 info.addPara("Go to the Cathedral of Holy Exodus on Tartessus and arrest Subcurate Cedra Keepfaith", tc, pad); 539 return true; 540 } 541 else if (currentStage == Stage.DELIVER_KEEPFAITH) { 542 info.addPara("Bring Cedra Keeptfaith to Hesperus to face the justice of the Knights of Ludd", tc, pad); 543 return true; 544 } 545 else if (currentStage == Stage.GO_TO_HESPERUS) { 546 if(Global.getSector().getMemoryWithoutUpdate().contains("$global.bffi_keepfaithEscapedTartessus")) 547 { 548 info.addPara("Report back to Excubitor Orbis Gideon Oak on Hesperus", tc, pad); 549 } 550 else { //Global.getSector().getMemoryWithoutUpdate().contains("$bffi_returnBornanewBody")) 551 info.addPara("Return Jethro Bornanew's body to the Knights of Ludd on Hesperus", tc, pad); 552 } 553 return true; 554 } 555 else if (currentStage == Stage.RETURN_TO_HESPERUS_EARLY) { 556 info.addPara("Report back to Excubitor Orbis Gideon Oak on Hesperus", tc, pad); 557 return true; 558 } 559 560 /* 561 Color h = Misc.getHighlightColor(); 562 if (currentStage == Stage.DROP_OFF) { 563 info.addPara("Deliver " + getWithoutArticle(thing) + " to specified location in the " + 564 system.getNameWithLowercaseTypeShort(), tc, pad); 565 return true; 566 } 567 */ 568 return false; 569 } 570 571 //@Override 572 //public String getBaseName() { 573 // return "False Idols"; 574 //} 575 576 @Override 577 public String getPostfixForState() { 578 if (startingStage != null) { 579 return ""; 580 } 581 return super.getPostfixForState(); 582 } 583 584 @Override 585 public SectorEntityToken getMapLocation(SectorMapAPI map) { 586 if (patherStation != null && currentStage == Stage.INVESTIGATE_PATHER_STATION) { 587 return patherStation.getEntity(); 588 } 589 return super.getMapLocation(map); 590 } 591} 592 593 594 595 596