Scripts/xenonreduxui.js |
(function () {
"use strict";
this.name = "XenonReduxUI";
this.author = "phkb";
this.copyright = "2016 phkb";
this.description = "Simplified versions of the Xenon UI backgrounds (no side panels).";
this.licence = "CC BY-NC-SA 3.0";
this._marketObserverInstalled = false; // flag to indicate when market observer is installed (for wide F8 display)
this._disableMissionScreen = []; // array of mission "screenID's" that will have the background disabled
this._chartExitScreenTimer = null;
this._missionOverlay = {}; // array of mission screen ID's and image names for overlays
this._backgroundOverride = []; // array of mission screen ID's we've forcefully added a background to
this._disableOverlays = false; // flag that indicates whether mission overlays will be applied to mission screens
this._enableLibGUIInt = true; // flag to indicate whether integration with LibGUI is on or off. true means it is on.
this._activeMode = true;
this._guiActive = ""; // monitors changes in the currently selected GUI (when Library is installed)
this._useBGS = "";
this._trueValues = ["yes", "1", 1, "true", true];
this._hdbgActive = false; // indicates that the HG Backgrounds OXP is active
this._addedID = {}; // keeps track of screen ID's we have added to Library GUI, so we can remove them if another GUI is selected
this._xn = null; // link to Xenon UI (if installed)
this._defaultBG = {};
this._amber = false; // indicates whether blue (false) or amber (true) backgrounds will be used
// configuration settings for use in Lib_Config
this._xenonReduxUIConfig = {
Name: this.name,
Alias: "Xenon Redux UI",
Display: "Config",
Alive: "_xenonReduxUIConfig",
Notify: "$changeSettings",
Bool: {
B0: {
Name: "_disableOverlays",
Def: false,
Desc: "Disable overlays"
},
B1: {
Name: "_activeMode",
Def: true,
Desc: "Active mode"
},
B2: {
Name: "_amber",
Def: false,
Desc: "Amber color"
},
Info: "0 - Disables the mission screen overlay images.\n1 - XenonReduxUI will actively attempt to apply backgrounds to all mission screens, except for those added as exceptions.\n2 - Switch amber color on."
},
};
/*
This OXP replaces all the backgrounds of all UI screens with new versions using a hi-tech-like design theme.
In most cases any individual backgrounds supplied by individual OXP's on their mission "runScreen" will overridden by these ones (but see below).
This OXP is designed to be compatible with the BackGroundSet (BGS). However, on some systems some BGS images may still be shown,
depending on the load order of the OXP's. If this OXP loads after BGS, these images will be used. If BGS loads after this OXP, it's images may be used.
If your OXP has backgrounds you want to keep, and you want to still use this OXP, use the "$addMissionScreenException" to your startUpComplete script:
Example:
var w = worldScripts.XenonReduxUI;
if (w) w.$addMissionScreenException("mymissionscreenid");
*/
//-------------------------------------------------------------------------------------------------------------
// adds a screen ID to the list of mission screen ID's for which this OXP will not override
this.$addMissionScreenException = function $addMissionScreenException(missionScreenID) {
var lib = worldScripts.Lib_GUI;
if (this._disableMissionScreen.indexOf(missionScreenID) === -1) this._disableMissionScreen.push(missionScreenID);
if (lib && this._enableLibGUIInt && (!this._addedID[missionScreenID] || this._addedID[missionScreenID] === 2) && lib.$cur === "XenonReduxUI") {
if (!lib.$IDRules[missionScreenID]) {
this._addedID[missionScreenID] = 2;
this.$passConfig(missionScreenID);
lib.$IDRules[missionScreenID] = {
mpic: 0
};
}
//lib.$IDRules[missionScreenID] = {
// mpic: 0
//};
}
}
//-------------------------------------------------------------------------------------------------------------
// function to add an overlay image to a mission screen
this.$addMissionOverlay = function $addMissionOverlay(missionScreenID, imagename) {
if (!this._missionOverlay[missionScreenID] && imagename == null) imagename = "";
if (imagename != null) this._missionOverlay[missionScreenID] = imagename;
var lib = worldScripts.Lib_GUI;
// lib_GUI stuff
if (lib && this._enableLibGUIInt) {
if (imagename != null && imagename != "") {
lib.$IDs.XenonReduxUI[missionScreenID] = {
pic: {
name: (this._amber === true ? "amber" : "xenon") + "_redux.png",
height: 546
},
picBig: {
name: (this._amber === true ? "amber" : "xenon") + "_redux_nohud.png",
height: 546
},
ov: {
name: imagename,
height: 546
},
sndRef: this._useBGS
};
if (lib.$cur === "XenonReduxUI") {
if (!this._addedID[missionScreenID] || this._addedID[missionScreenID] === 2) {
if (!lib.$IDRules[missionScreenID]) {
this._addedID[missionScreenID] = 2;
this.$passConfig(missionScreenID);
if (this._disableOverlays === true) {
lib.$IDRules[missionScreenID] = {
pic: 1,
ov: 0
};
} else {
lib.$IDRules[missionScreenID] = {
pic: 1,
ov: 1
};
}
}
/*if (this._disableOverlays === true) {
lib.$IDRules[missionScreenID] = {
pic: 1,
ov: 0
};
} else {
lib.$IDRules[missionScreenID] = {
pic: 1,
ov: 1
};
}*/
}
}
} else {
if (imagename === "") {
lib.$IDs.XenonReduxUI[missionScreenID] = {
pic: {
name: (this._amber === true ? "amber" : "xenon") + "_redux.png",
height: 546
},
picBig: {
name: (this._amber === true ? "amber" : "xenon") + "_redux_nohud.png",
height: 546
},
sndRef: this._useBGS
};
if (lib.$cur === "XenonReduxUI" && (!this._addedID[missionScreenID] || this._addedID[missionScreenID] === 2)) {
if (!lib.$IDRules[missionScreenID]) {
this._addedID[missionScreenID] = 2;
this.$passConfig(missionScreenID);
lib.$IDRules[missionScreenID] = {
pic: 1
};
}
//lib.$IDRules[missionScreenID] = {
// pic: 1
//};
}
}
}
}
}
//-------------------------------------------------------------------------------------------------------------
this.startUp = function () {
this._xn = worldScripts.XenonUI;
var disable = false;
if (worldScriptNames.indexOf("Xenon Redux UI Resource Pack") === -1) {
log(this.name, "ERROR! The Xenon Redux UI Resource pack is not installed. Xenon Redux UI cannot function without it.");
disable = true;
}
if (disable === true || (worldScripts.XenonUI && (!worldScripts.Lib_GUI || this._enableLibGUIInt === false))) {
// disable this OXP if XenonUI is installed along with it, but Library GUI isn't there to mediate.
delete this.startUpComplete;
delete this.guiScreenChanged;
delete this.playerWillSaveGame;
delete this.missionScreenEnded;
delete this.gameResumed;
delete this.startUp;
return;
}
var lib = worldScripts.Lib_GUI;
if (missionVariables.XenonReduxUI_ActiveMode) this._activeMode = (this._trueValues.indexOf(missionVariables.XenonReduxUI_ActiveMode) >= 0 ? true : false);
if (missionVariables.XenonReduxUI_DisableOverlays) this._disableOverlays = (this._trueValues.indexOf(missionVariables.XenonReduxUI_DisableOverlays) >= 0 ? true : false);
// only reload the amber setting if lib config is present - otherwise we'll just take the preset value
if (lib) {
if (missionVariables.XenonReduxUI_Amber) this._amber = (this._trueValues.indexOf(missionVariables.XenonReduxUI_Amber) >= 0 ? true : false);
this._lastAmber = this._amber;
}
if (!lib || lib.$cur === "XenonReduxUI") this.$updateGuiColorSettings();
if (worldScripts["BGS"]) this._useBGS = "BGS";
if (worldScripts["market_observer3"]) this._marketObserverInstalled = true;
if (worldScripts["hdbg"]) this._hdbgActive = true;
if (lib && this._enableLibGUIInt === true) {
// flag some screens as readonly
this._addedID["oolite-contracts-parcels-none"] = 1;
this._addedID["oolite-contracts-parcels-details"] = 1;
this._addedID["oolite-contracts-parcels-summary"] = 1;
this._addedID["oolite-contracts-passengers-none"] = 1;
this._addedID["oolite-contracts-passengers-details"] = 1;
this._addedID["oolite-contracts-passengers-summary"] = 1;
this._addedID["oolite-contracts-cargo-none"] = 1;
this._addedID["oolite-contracts-cargo-details"] = 1;
this._addedID["oolite-contracts-cargo-summary"] = 1;
this._addedID["oolite-primablemanager"] = 1;
this._addedID["oolite-register"] = 1;
this._addedID["Lib_Config"] = 1;
// disable our standard functions so LibGUI can take over
this.$previous_guiScreenChanged = this.guiScreenChanged;
delete this.guiScreenChanged;
delete this.missionScreenEnded;
delete this.gameResumed;
delete this.startUp;
this.$libGUISetup();
}
// if we don't have library to orchestrate backgrounds, disable "better screens" so xenon UI has priority
// otherwise, we end up with a clash of different background sets
if (!lib && worldScripts["smivs_screen-backgrounds_worldscript"]) {
worldScripts["smivs_screen-backgrounds_worldscript"].hide_guiScreenChanged = worldScripts["smivs_screen-backgrounds_worldscript"].guiScreenChanged;
delete worldScripts["smivs_screen-backgrounds_worldscript"].guiScreenChanged;
}
this.$addStandardMissionScreenOverlays();
this.$addStandardMissionScreenExceptions();
// make Ship's library compatible with XenonUI
if (worldScripts["Ships Library"] && !this._xn) {
var sl = worldScripts["Ships Library"];
sl._showPage = this._showPage;
}
if (worldScripts.sothis_tc && !this._xn) {
var stc = worldScripts.sothis_tc;
stc.missionScreenOpportunity = this._sothis_missionScreenOpportunity;
}
}
//-------------------------------------------------------------------------------------------------------------
this.startUpComplete = function () {
// register our settings, if Lib_Config is present
if (worldScripts.Lib_Config) {
worldScripts.Lib_Config._registerSet(this._xenonReduxUIConfig);
if (!worldScripts.XenonUI) this.$setBGSDefaultBackgrounds();
}
}
//-------------------------------------------------------------------------------------------------------------
this.guiScreenChanged = function (to, from) {
var p = player.ship;
var imagetype = "redux";
var redalert = "";
var nohud = "";
var imagename = "";
var startTimer = false;
var overlay = "";
if (this._marketObserverInstalled) {
if (from == "GUI_SCREEN_MARKET" || from == "GUI_SCREEN_MARKETINFO" || to == "GUI_SCREEN_MARKET" || to == "GUI_SCREEN_MARKETINFO")
// Because market observer uses a specialised HUD a slightly incorrect background image was being selected.
// This was unnoticable if the "allow_big_gui" was not enabled on the default HUD, but quite noticeable on the Xenon HUD.
// So we start a timer to force the correct background after Market Observer has set or reset the HUD.
startTimer = true;
}
// fix for the issue where exiting the ship library screen could sometimes result in the wrong background being displayed
// this would only be apparent with HUD's that don't implement the "allow_big_gui" setting.
if (from == "GUI_SCREEN_SHIPLIBRARY" && p && p.docked) startTimer = true;
if (p.alertCondition == 3) redalert = "_redalert";
if (p.hudHidden) nohud = "_nohud";
if (this.$isBigGuiActive() == true) nohud = "_nohud";
switch (guiScreen) {
case "GUI_SCREEN_MAIN":
return;
case "GUI_SCREEN_KEYBOARD":
if (this._disableOverlays === false) overlay = "xrui-keyboard.png";
break;
case "GUI_SCREEN_STICKMAPPER":
if (this._disableOverlays === false) overlay = "xrui-gamepad.png";
break;
case "GUI_SCREEN_OPTIONS":
if (this._disableOverlays === false) overlay = "xrui-settings.png";
break;
case "GUI_SCREEN_LOAD":
if (this._disableOverlays === false) overlay = "xrui-load.png";
break;
case "GUI_SCREEN_SAVE":
case "GUI_SCREEN_SAVE_OVERWRITE":
if (this._disableOverlays === false) overlay = "xrui-save.png";
break;
case "GUI_SCREEN_EQUIP_SHIP":
if (this._disableOverlays === false) overlay = "xrui-equipship.png";
break;
case "GUI_SCREEN_INTERFACES":
if (this._disableOverlays === false) overlay = "xrui-interfaces.png";
break;
case "GUI_SCREEN_STATUS":
// override BGS status and nocrowd image, if installed.
if (worldScripts["BGS-M"]) {
worldScripts["BGS-M"].bgsI.status = {
name: "xenon_" + imagetype + "_" + nohud + redalert + ".png",
height: 546
};
worldScripts["BGS-M"].bgsI.noCrowd = {
name: "xenon_" + imagetype + "_" + nohud + redalert + ".png",
height: 546
};
}
/*if (this._disableOverlays === false) {
if (this.$playerHasDamagedEquipment() === true) {
overlay = "xrui-warning.png";
} else {
overlay = "xrui-ok.png";
}
}*/
break;
case "GUI_SCREEN_MANIFEST":
if (this._disableOverlays === false) overlay = "xrui-clipboard.png";
break;
case "GUI_SCREEN_SHORT_RANGE_CHART":
break;
case "GUI_SCREEN_LONG_RANGE_CHART":
// override BGS lrc image, if installed.
if (worldScripts["BGS-M"]) {
worldScripts["BGS-M"].bgsI.lrc = {
name: "xenon_" + imagetype + nohud + redalert + ".png",
height: 546
};
}
break;
case "GUI_SCREEN_SYSTEM_DATA":
var sysinf = System.infoForSystem(galaxyNumber, p.targetSystem);
if (sysinf["sun_gone_nova"] || sysinf["sun_going_nova"]) imagename += "_nova";
break;
case "GUI_SCREEN_MARKET":
if (this._marketObserverInstalled) imagename += "_wide";
if (this._disableOverlays === false) overlay = "xrui-market.png";
break;
case "GUI_SCREEN_MARKETINFO":
if (this._marketObserverInstalled) imagename += "_wide";
if (this._disableOverlays === false) overlay = "xrui-tag.png";
break;
case "GUI_SCREEN_REPORT":
if (worldScripts.hdbg) return;
if (this._disableOverlays === false) overlay = "xrui-report.png";
if (this._hdbgActive === true) return;
break;
case "GUI_SCREEN_MISSION":
// look for any exceptions and jump out if found
if (this._disableMissionScreen.indexOf(mission.screenID) != -1) imagename = "disable";
// check if we have an overlay to apply to this mission screen
if (this._disableOverlays == false && this._disableMissionScreen.indexOf(mission.screenID) === -1) {
if (this._missionOverlay[mission.screenID]) overlay = this._missionOverlay[mission.screenID];
}
break;
}
// build the filename if it hasn't been disabled
if (imagename != "disable") {
imagename = (this._amber === true ? "amber" : "xenon") + "_" + imagetype + imagename + nohud + redalert + ".png";
// load the image to the background
setScreenBackground({
name: imagename,
height: 546
});
}
if (overlay != "") setScreenOverlay({
name: overlay,
height: 546
});
// start a timer to force the background, if required
if (startTimer) {
if (this._chartExitScreenTimer && this._chartExitScreenTimer.isRunning) this._chartExitScreenTimer.stop();
this._chartExitScreenTimer = new Timer(this, this.$addBackground, 0.25, 0);
}
}
//-------------------------------------------------------------------------------------------------------------
this.playerWillSaveGame = function () {
missionVariables.XenonReduxUI_ActiveMode = this._activeMode;
missionVariables.XenonReduxUI_DisableOverlays = this._disableOverlays;
missionVariables.XenonReduxUI_Amber = this._amber;
}
//-------------------------------------------------------------------------------------------------------------
this.missionScreenEnded = function () {
this.guiScreenChanged("", "");
}
//-------------------------------------------------------------------------------------------------------------
this.gameResumed = function () {
this.guiScreenChanged("", "");
}
//-------------------------------------------------------------------------------------------------------------
// adds overlays to the standard mission screens
this.$addStandardMissionScreenOverlays = function $addStandardMissionScreenOverlays() {
this.$addMissionOverlay("oolite-contracts-parcels-none", "xrui-briefcase.png");
this.$addMissionOverlay("oolite-contracts-parcels-summary", "xrui-briefcase.png");
this.$addMissionOverlay("oolite-contracts-passengers-none", "xrui-boardingpass.png");
this.$addMissionOverlay("oolite-contracts-passengers-summary", "xrui-boardingpass.png");
this.$addMissionOverlay("oolite-contracts-cargo-none", "xrui-cargo.png");
this.$addMissionOverlay("oolite-contracts-cargo-summary", "xrui-cargo.png");
this.$addMissionOverlay("oolite-primablemanager", "xrui-switch.png");
this.$addMissionOverlay("oolite-register", "xrui-register.png");
}
//-------------------------------------------------------------------------------------------------------------
// adds map screen exceptions for known screen ID's
this.$addStandardMissionScreenExceptions = function $addStandardMissionScreenExceptions() {
// each of these items can't be set using setScreenBackground - needs to be done via the plist file
this.$addMissionScreenException("oolite-contracts-parcels-details");
this.$addMissionScreenException("oolite-contracts-passengers-details");
this.$addMissionScreenException("oolite-contracts-cargo-details");
this.$addMissionScreenException("rrs_mission_map");
this.$addMissionScreenException("blackmonks-map");
this.$addMissionScreenException("ups-map");
this.$addMissionScreenException("escort-contracts");
if (worldScripts.Random_Hits) {
var ver = worldScripts.Random_Hits.version.split(".");
if (parseInt(ver[0]) > 1 ||
(parseInt(ver[0]) === 1 && parseInt(ver[1])) > 11 ||
(parseInt(ver[0]) === 1 && parseInt(ver[1]) === 11 && parseInt(ver[2]) > 2)) {
this.$addMissionScreenException("random_hits_map");
} else {
this.$addMissionScreenException("random_hits");
}
}
}
//-------------------------------------------------------------------------------------------------------------
// callback handler for when settings are changed
this.$changeSettings = function $changeSettings() {
var lib = worldScripts.Lib_GUI;
if (this._amber != this._lastAmber) {
this.$libGUISetup();
this._lastAmber = this._amber;
}
if (lib.$cur === "XenonReduxUI") {
if (global.setScreenBackgroundForKey) this.$setBackgroundDefaults(true);
this.$updateGuiColorSettings();
}
/*if (this._disableOverlays === true) {
if (this._enableLibGUIInt === true && lib && lib.$cur === "XenonReduxUI") {
var keys = Object.keys(this._missionOverlay);
for (var i = 0; i < keys.length; i++) {
if (!this._addedID[keys[i]] || this._addedID[keys[i]] === 2) {
if (!lib.$IDRules[keys[i]]) {
this._addedID[keys[i]] = 2;
this.$passConfig(keys[i]);
}
lib.$IDRules[keys[i]] = {
pic: 1,
ov: 0
};
}
}
}
} else {
if (this._enableLibGUIInt === true && lib && lib.$cur === "XenonReduxUI") {
var keys = Object.keys(this._missionOverlay);
for (var i = 0; i < keys.length; i++) {
if (!this._addedID[keys[i]] || this._addedID[keys[i]] === 2) {
if (!lib.$IDRules[keys[i]]) {
this._addedID[keys[i]] = 2;
this.$passConfig(keys[i]);
}
lib.$IDRules[keys[i]] = {
pic: 1,
ov: 1
};
}
}
}
}*/
// remove any background that we added forcefully
/*if (lib.$cur === "XenonReduxUI" && this._activeMode === false) {
for (var i = 0; i < this._backgroundOverride.length; i++) {
//delete lib.$IDs.XenonReduxUI[this._backgroundOverride[i]];
if (!this._addedID[this._backgroundOverride[i]] || this._addedID[this._backgroundOverride[i]] === 2) {
delete lib.$IDRules[this._backgroundOverride[i]];
}
}
}*/
// reset our monitoring array regardless of which gui is active
if (this._activeMode === false) this._backgroundOverrride = [];
this.$setupGeneralOverlays();
}
//-------------------------------------------------------------------------------------------------------------
// sets up the LibGUI parameters
this.$libGUISetup = function $libGUISetup() {
var lib = worldScripts.Lib_GUI;
// setup some event callbacks
this.guiScreenChanged = this.$guiScreenChanged;
//this.equipmentDamaged = this.$equipmentDamaged;
//this.equipmentRepaired = this.$equipmentRepaired;
//this.equipmentAdded = this.$equipmentAdded;
//this.equipmentRemoved = this.$equipmentRemoved;
this.missionScreenEnded = this.$missionScreenEnded;
var style = (this._amber === true ? "amber" : "xenon");
lib.$guis.XenonReduxUI = {
GUI_SCREEN_GAMEOPTIONS: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux.png",
height: 546
},
picRed: {
name: style + "_redux_redalert.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_LOAD: {
pic: {
name: style + "_redux.png",
height: 546
}
},
GUI_SCREEN_SAVE: {
pic: {
name: style + "_redux.png",
height: 546
}
},
GUI_SCREEN_SAVE_OVERWRITE: {
pic: {
name: style + "_redux.png",
height: 546
}
},
GUI_SCREEN_EQUIP_SHIP: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_INTERFACES: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_KEYBOARD: {
pic: {
name: style + "_redux_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux_nohud.png",
height: 546
}
},
GUI_SCREEN_MANIFEST: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux.png",
height: 546
},
picRed: {
name: style + "_redux_redalert.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_MARKET: {
pic: {
name: style + "_redux" + (this._marketObserverInstalled === true ? "_wide" : "") + ".png",
height: 546
},
picBig: {
name: style + "_redux" + (this._marketObserverInstalled === true ? "_wide" : "") + "_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux" + (this._marketObserverInstalled === true ? "_wide" : "") + ".png",
height: 546
},
picRed: {
name: style + "_redux" + (this._marketObserverInstalled === true ? "_wide" : "") + "_redalert.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_MARKETINFO: {
pic: {
name: style + "_redux" + (this._marketObserverInstalled === true ? "_wide" : "") + ".png",
height: 546
},
picBig: {
name: style + "_redux" + (this._marketObserverInstalled === true ? "_wide" : "") + "_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux" + (this._marketObserverInstalled === true ? "_wide" : "") + ".png",
height: 546
},
picRed: {
name: style + "_redux" + (this._marketObserverInstalled === true ? "_wide" : "") + "_redalert.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_OPTIONS: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux.png",
height: 546
},
picRed: {
name: style + "_redux_redalert.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_SHIPLIBRARY: {
pic: {
name: style + "_redux_nohud.png",
height: 546
}
},
GUI_SCREEN_SHIPYARD: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_STATUS: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux.png",
height: 546
},
picRed: {
name: style + "_redux_redalert.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_STICKMAPPER: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_STICKPROFILE: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_SYSTEM_DATA: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
picNova: {
name: style + "_redux_nova.png",
height: 546
},
picNovaBig: {
name: style + "_redux_nova_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux.png",
height: 546
},
picRed: {
name: style + "_redux_redalert.png",
height: 546
},
picNovaRed: {
name: style + "_redux_nova_redalert.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_SHORT_RANGE_CHART: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux.png",
height: 546
},
picRed: {
name: style + "_redux_redalert.png",
height: 546
},
sndRef: this._useBGS
},
GUI_SCREEN_LONG_RANGE_CHART: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux.png",
height: 546
},
picRed: {
name: style + "_redux_redalert.png",
height: 546
},
sndRef: this._useBGS
},
};
if (this._hdbgActive === false) {
lib.$guis.XenonReduxUI.generic = {
pic: {
name: style + "_redux.png",
height: 546
},
sndRef: this._useBGS
};
lib.$guis.XenonReduxUI.GUI_SCREEN_REPORT = {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
sndRef: this._useBGS
};
}
this.$setupVariableScreens();
this.$setupGeneralOverlays();
// mission screen IDs
lib.$IDs.XenonReduxUI = {
generic: {
pic: {
name: style + "_redux.png",
height: 546
},
picBig: {
name: style + "_redux_nohud.png",
height: 546
},
picFlight: {
name: style + "_redux.png",
height: 546
},
picRed: {
name: style + "_redux_redalert.png",
height: 546
},
sndRef: this._useBGS
}
};
}
//-------------------------------------------------------------------------------------------------------------
// adjust background images on F5 screen based on availability/status of equipment
this.$setupVariableScreens = function $setupVariableScreens() {
/*if (this._disableOverlays === false) {
if (this.$playerHasDamagedEquipment() === true) {
worldScripts.Lib_GUI.$guis.XenonReduxUI.GUI_SCREEN_STATUS["ov"] = {name:"xrui-warning.png", height:546};
} else {
worldScripts.Lib_GUI.$guis.XenonReduxUI.GUI_SCREEN_STATUS["ov"] = {name:"xrui-ok.png", height:546};
}
}*/
}
//-------------------------------------------------------------------------------------------------------------
// adjust overlay images on general (non-mission) screens
this.$setupGeneralOverlays = function $setupGeneralOverlays() {
var lib = worldScripts.Lib_GUI.$guis.XenonReduxUI;
if (this._disableOverlays) {
delete lib.GUI_SCREEN_GAMEOPTIONS["ov"];
delete lib.GUI_SCREEN_LOAD["ov"];
delete lib.GUI_SCREEN_SAVE["ov"];
delete lib.GUI_SCREEN_SAVE_OVERWRITE["ov"];
delete lib.GUI_SCREEN_EQUIP_SHIP["ov"];
delete lib.GUI_SCREEN_INTERFACES["ov"];
delete lib.GUI_SCREEN_KEYBOARD["ov"];
delete lib.GUI_SCREEN_MANIFEST["ov"];
delete lib.GUI_SCREEN_MARKET["ov"];
delete lib.GUI_SCREEN_MARKETINFO["ov"];
delete lib.GUI_SCREEN_OPTIONS["ov"];
delete lib.GUI_SCREEN_REPORT["ov"];
//delete lib.GUI_SCREEN_STATUS["ov"];
delete lib.GUI_SCREEN_STICKMAPPER["ov"];
} else {
lib.GUI_SCREEN_GAMEOPTIONS["ov"] = {
name: "xrui-settings.png",
height: 546
};
lib.GUI_SCREEN_LOAD["ov"] = {
name: "xrui-load.png",
height: 546
};
lib.GUI_SCREEN_SAVE["ov"] = {
name: "xrui-save.png",
height: 546
};
lib.GUI_SCREEN_SAVE_OVERWRITE["ov"] = {
name: "xrui-question.png",
height: 546
};
lib.GUI_SCREEN_EQUIP_SHIP["ov"] = {
name: "xrui-equipship.png",
height: 546
};
lib.GUI_SCREEN_INTERFACES["ov"] = {
name: "xrui-interfaces.png",
height: 546
};
lib.GUI_SCREEN_KEYBOARD["ov"] = {
name: "xrui-keyboard.png",
height: 546
};
lib.GUI_SCREEN_MANIFEST["ov"] = {
name: "xrui-clipboard.png",
height: 546
};
lib.GUI_SCREEN_MARKET["ov"] = {
name: "xrui-market.png",
height: 546
};
lib.GUI_SCREEN_MARKETINFO["ov"] = {
name: "xrui-tag.png",
height: 546
};
lib.GUI_SCREEN_OPTIONS["ov"] = {
name: "xrui-settings.png",
height: 546
};
if (this._hdbgActive === false) lib.GUI_SCREEN_REPORT["ov"] = {
name: "xrui-report.png",
height: 546
};
lib.GUI_SCREEN_STICKMAPPER["ov"] = {
name: "xrui-gamepad.png",
height: 546
};
}
}
//-------------------------------------------------------------------------------------------------------------
// alternate version for use with Lib_GUI
this.$missionScreenEnded = function $missionScreenEnded() {
var lib = worldScripts.Lib_GUI;
if (this._guiActive != lib.$cur && (this._guiActive === "XenonReduxUI" || lib.$cur === "XenonReduxUI")) {
if (lib.$cur === "XenonReduxUI") {
// if we've got it available (v1.85/86) then force the default screen background to be Xenon Redux
if (global.setScreenBackgroundForKey) this.$setBackgroundDefaults(true);
this.$updateGuiColorSettings();
for (var i = 0; i < this._disableMissionScreen.length; i++) {
if (!this._addedID[this._disableMissionScreen[i]] || this._addedID[this._disableMissionScreen[i]] === 2) {
if (!lib.$IDRules[this._disableMissionScreen[i]]) {
this._addedID[this._disableMissionScreen[i]] = 2;
this.$passConfig(this._disableMissionScreen[i]);
lib.$IDRules[this._disableMissionScreen[i]] = {
mpic: 0
};
}
/*lib.$IDRules[this._disableMissionScreen[i]] = {
mpic: 0
};*/
}
}
var keys = Object.keys(this._missionOverlay);
for (var i = 0; i < keys.length; i++) {
// update Lib_GUI with our settings for mission screens
if (!this._addedID[keys[i]] || this._addedID[keys[i]] === 2) {
if (!lib.$IDRules[keys[i]]) {
this._addedID[keys[i]] = 2;
this.$passConfig(keys[i]);
if (this._missionOverlay[keys[i]] != "") {
if (this._disableOverlays === true) {
lib.$IDRules[keys[i]] = {
pic: 1,
ov: 0
};
} else {
lib.$IDRules[keys[i]] = {
pic: 1,
ov: 1
};
}
} else {
lib.$IDRules[keys[i]] = {
pic: 1
};
}
}
/*if (this._missionOverlay[keys[i]] != "") {
if (this._disableOverlays === true) {
lib.$IDRules[keys[i]] = {
pic: 1,
ov: 0
};
} else {
lib.$IDRules[keys[i]] = {
pic: 1,
ov: 1
};
}
} else {
lib.$IDRules[keys[i]] = {
pic: 1
};
}*/
}
}
} else {
// if we've got it available (v1.85/86) then reset the default screen backgrounds to be what it was previously
if (global.setScreenBackgroundForKey) this.$setBackgroundDefaults(false);
/*var items = Object.keys(this._addedID);
for (var i = 0; i < items.length; i++) {
if (this._addedID[items[i]] === 2) {
delete lib.$IDRules[items[i]];
}
}*/
}
this._guiActive = lib.$cur;
}
}
//-------------------------------------------------------------------------------------------------------------
// activated when Library GUI is in use
// gets any unrecorded mission ScreenID's add add them to the list of rules to use Xenon
this.$guiScreenChanged = function $guiScreenChanged(to, from) {
if (guiScreen === "GUI_SCREEN_STATUS") {
// this bit should only be run once after load
if (this._guiActive === "") {
// force all the screen rego stuff to happen if xenon was set after loading
if (worldScripts.Lib_GUI.$cur === "XenonReduxUI") this.missionScreenEnded();
// make sure our local copy gets updated
this._guiActive = worldScripts.Lib_GUI.$cur;
}
}
if (guiScreen === "GUI_SCREEN_MISSION" && this._guiActive === "XenonReduxUI" && this._activeMode === true) {
if (mission.screenID && mission.screenID != "" && this._disableMissionScreen.indexOf(mission.screenID) === -1) {
this.$addMissionOverlay(mission.screenID, null);
// make a note of any screen we add this way
if (this._backgroundOverride.indexOf(mission.screenID) === -1) this._backgroundOverride.push(mission.screenID);
// force an update
worldScripts.Lib_GUI.guiScreenChanged();
}
// we'll try to override LibGUI if a mission screen is displayed without a screenID
if (!mission.screenID) {
this.$previous_guiScreenChanged(to, from);
}
}
}
//-------------------------------------------------------------------------------------------------------------
// activated when Library GUI is in use
this.$equipmentAdded = function $equipmentAdded(equipmentKey) {
this.$setupVariableScreens();
}
//-------------------------------------------------------------------------------------------------------------
// activated when Library GUI is in use
this.$equipmentRemoved = function $equipmentRemoved(equipmentKey) {
this.$setupVariableScreens();
}
//-------------------------------------------------------------------------------------------------------------
// activated when Library GUI is in use
this.$equipmentDamaged = function $equipmentDamaged(equipmentKey) {
this.$setupVariableScreens();
}
//-------------------------------------------------------------------------------------------------------------
// activated when Library GUI is in use
this.$equipmentRepaired = function $equipmentRepaired(equipmentKey) {
this.$setupVariableScreens();
}
//-------------------------------------------------------------------------------------------------------------
// forces a background after the timer has expired
// used when mission screens exit to the short or long range chart.
this.$addBackground = function $addBackground() {
this.guiScreenChanged("", "");
}
//-------------------------------------------------------------------------------------------------------------
// returns true if a HUD with allowBigGUI is enabled, otherwise false
this.$isBigGuiActive = function $isBigGuiActive() {
if (oolite.compareVersion("1.83") <= 0) {
return player.ship.hudAllowsBigGui;
} else {
var bigGuiHUD = ["XenonHUD.plist", "coluber_hud_ch01-dock.plist"]; // until there is a property we can check, I'll be listing HUD's that have the allow_big_gui property set here
if (bigGuiHUD.indexOf(player.ship.hud) >= 0) {
return true;
} else {
return false;
}
}
}
//-------------------------------------------------------------------------------------------------------------
// returns true if any of the visible equipment items are damaged
this.$playerHasDamagedEquipment = function $playerHasDamagedEquipment() {
var p = player.ship;
var eq = p.equipment;
for (var i = 0; i < eq.length; i++) {
var itm = eq[i];
if (itm.isVisible === true && p.equipmentStatus(itm.equipmentKey) === "EQUIPMENT_DAMAGED") return true;
}
return false;
}
//-------------------------------------------------------------------------------------------------------------
this.$setBackgroundDefaults = function $setBackgroundDefaults(onOff) {
if (onOff === true) {
this._defaultBG["long_range_chart_mission"] = getScreenBackgroundForKey("long_range_chart_mission");
this._defaultBG["short_range_chart_mission"] = getScreenBackgroundForKey("short_range_chart_mission");
this._defaultBG["custom_chart_mission"] = getScreenBackgroundForKey("custom_chart_mission");
this._defaultBG["long_range_chart"] = getScreenBackgroundForKey("long_range_chart");
this._defaultBG["short_range_chart"] = getScreenBackgroundForKey("short_range_chart");
this._defaultBG["keyboardsettings"] = getScreenBackgroundForKey("keyboardsettings");
this._defaultBG["load_save"] = getScreenBackgroundForKey("load_save");
this._defaultBG["mount_weapon"] = getScreenBackgroundForKey("mount_weapon");
this._defaultBG["newgame"] = getScreenBackgroundForKey("newgame");
this._defaultBG["settings"] = getScreenBackgroundForKey("settings");
this._defaultBG["shiplibrary"] = getScreenBackgroundForKey("shiplibrary");
var nohud = "";
if (this.$isBigGuiActive() === true) nohud = "_nohud";
var style = (this._amber === true ? "amber" : "xenon");
var imagename = style + "_redux" + nohud + ".png";
setScreenBackgroundForKey("short_range_chart_mission", {
name: imagename,
height: 546
});
setScreenBackgroundForKey("long_range_chart_mission", {
name: imagename,
height: 546
});
setScreenBackgroundForKey("short_range_chart", {
name: imagename,
height: 546
});
setScreenBackgroundForKey("long_range_chart", {
name: imagename,
height: 546
});
setScreenBackgroundForKey("keyboardsettings", {
name: style + "_redux_nohud.png",
height: 546
});
setScreenBackgroundForKey("load_save", {
name: style + "_redux.png",
height: 546
});
setScreenBackgroundForKey("mount_weapon", {
name: style + "_redux.png",
height: 546
});
setScreenBackgroundForKey("newgame", {
name: style + "_redux_nohud.png",
height: 546
});
setScreenBackgroundForKey("settings", {
name: style + "_redux.png",
height: 546
});
setScreenBackgroundForKey("shiplibrary", {
name: style + "_redux_nohud.png",
height: 546
});
} else {
var keys = Object.keys(this._defaultBG);
for (var i = 0; i < keys.length; i++) {
var bg = getScreenBackgroundForKey(keys[i]);
// are xenon's backgrounds still set?
if (bg.hasOwnProperty("name") === true && bg.name.indexOf(style + "_redux") >= 0) {
// ok, we can reset things now
setScreenBackgroundForKey(keys[i], this._defaultBG[keys[i]]);
}
}
}
}
//-------------------------------------------------------------------------------------------------------------
this.$updateGuiColorSettings = function $updateGuiColorSettings() {
if (global.setGuiColorSettingForKey) {
global.setGuiColorSettingForKey("screen_divider_color", (this._amber === false ? "0 74 127 200" : "127 74 0 200"));
global.setGuiColorSettingForKey("screen_title_color", (this._amber === false ? "0 148 255 200" : "255 148 0 200"));
}
}
//-------------------------------------------------------------------------------------------------------------
this.$setBGSDefaultBackgrounds = function $setBGSDefaultBackgrounds() {
// until BGS has something similar
if (worldScripts.Lib_GUI.$cur == "BGS" && global.setGuiColorSettingForKey) {
setGuiColorSettingForKey("screen_title_color", "0.9 0.9 0.8");
setGuiColorSettingForKey("screen_divider_color", "0.0 0.0 0.0 0.0");
setScreenBackgroundForKey("paused_docked_overlay", "bgs_ov_paused.png");
setScreenBackgroundForKey("paused_overlay", "bgs_ov_paused.png");
setScreenBackgroundForKey("intro", "bgs_intro.png");
setScreenBackgroundForKey("keyboardsettings", "bgs_fullscr.png");
setScreenBackgroundForKey("load_save", "bgs_options.png");
setScreenBackgroundForKey("newgame", "bgs_intro.png");
setScreenBackgroundForKey("oxz-manager", "bgs_fullscr.png");
setScreenBackgroundForKey("settings", "bgs_options.png");
setScreenBackgroundForKey("shiplibrary", "bgs_fullscr.png");
setScreenBackgroundForKey("long_range_chart_mission", "lib_black.png");
setScreenBackgroundForKey("short_range_chart_mission", "lib_black.png");
}
}
//-------------------------------------------------------------------------------------------------------------
// used to allow XenonUI and XenonReduxUI to co-exist
this.$xenonCrossConfig = function $xenonCrossConfig(screenID) {
this._addedID[screenID] = 2;
}
this.$passConfig = function $passConfig(screenID) {
if (this._xn) this._xn.$xenonCrossConfig(screenID);
}
//-------------------------------------------------------------------------------------------------------------
// to make Ships Library compatible with XenonUI
this._showPage = function() {
var chapter = this.$contents[this.$chapter];
var text = this._textFromOffset(this.$chapter,this.$offset,this.$msStore,this.$msRows,this.$msCols);
var opts = {
screenID: "ships-library",
titleKey: chapter.key+"-title",
allowInterrupt: true,
exitScreen: "GUI_SCREEN_INTERFACES",
choices: {
"01_PREV":expandMissionText("ships-library-page-back"),
"09_NEXT":expandMissionText("ships-library-page-next"),
"10_CONTENTS":expandMissionText("ships-library-contents"),
"99_EXIT":expandMissionText("ships-library-exit"),
},
initialChoicesKey: this.$lastchoice?this.$lastchoice:"09_NEXT",
message: text
};
if (chapter.opts) {
var extras = Object.keys(chapter.opts)
for (var k=0;k<extras.length;k++) {
opts[extras[k]] = chapter.opts[extras[k]];
}
}
if (chapter.backgrounds) {
var page = this._pageOfOffset(chapter,this.$offset,this.$msStore);
if (page < chapter.backgrounds.length) {
var backg = chapter.backgrounds[page];
} else {
var backg = chapter.backgrounds[chapter.backgrounds.length-1];
}
if (backg != "") {
opts.overlay = backg;
}
}
mission.runScreen(opts,this._manualHandler,this);
this.$fcbM = addFrameCallback(this._moveShip.bind(this));
}
//-------------------------------------------------------------------------------------------------------------
// to make Sothis TC compatible with XenonUI
this._sothis_missionScreenOpportunity = function() {
if (!this.$showWelcome) return;
var messText = expandDescription("[STC_welcome]");
if (this.$new_cargoes)
messText = messText + expandDescription("[STC_new_cargoes]");
var tcbgpic = "OOmap_G"+(galaxyNumber+1)+".png";
mission.runScreen({
title: "Sothis Trade Center",
message: messText,
overlay: tcbgpic
});
this.$showWelcome = false;
}
}).call(this); |
Scripts/xenonreduxui_compatibility.js |
"use strict";
this.name = "XenonReduxUI_Compatibility";
this.author = "phkb";
this.copyright = "2021 phkb";
this.description = "OXP Compatibility function overrides";
this.licence = "CC BY-NC-SA 3.0";
this.startUp = function () {
// if xenon UI is also installed, then let it do this work.
if (worldScripts.XenonUI) return;
// make Ship's library compatible
if (worldScripts["Ships Library"] && worldScripts["Ships Library"].version == "0.8") {
var sl = worldScripts["Ships Library"];
sl._showPage = this._showPage;
}
// make sothis tc compatible
if (worldScripts.sothis_tc && worldScripts.sothis_tc.version == "1.0.3") {
var stc = worldScripts.sothis_tc;
stc.missionScreenOpportunity = this._sothis_missionScreenOpportunity;
}
// make New Cargoes compatible
if (worldScripts["CargoTypeExtension-Auctions"] && worldScripts["CargoTypeExtension-Auctions"].version == "1.2.3") {
worldScripts["CargoTypeExtension-Auctions"].runOffer = this._auctions_runOffer;
worldScripts["CargoTypeExtension-Auctions"].endAuction = this._auctions_endAuction;
worldScripts["CargoTypeExtension-Auctions"].playSantaariAuction = this.playSantaariAuction;
worldScripts["CargoTypeExtension-Auctions"].playAngianaAuction = this.playAngianaAuction;
worldScripts["CargoTypeExtension-Auctions"].playColesqueAuction = this.playColesqueAuction;
worldScripts["CargoTypeExtension-Auctions"].playJaftraAuction = this.playJaftraAuction;
worldScripts["CargoTypeExtension-Auctions"].playLaratanAuction = this.playLaratanAuction;
worldScripts["CargoTypeExtension-Auctions"].playProximusAuction = this.playProximusAuction;
worldScripts["CargoTypeExtension-Auctions"].playSolansAuction = this.playSolansAuction;
worldScripts["CargoTypeExtension-Auctions"].playXrataAuction = this.playXrataAuction;
worldScripts["CargoTypeExtension"].startTrading = this.startTrading;
worldScripts["CargoTypeExtension"].showBuyScreen = this.showBuyScreen;
worldScripts["CargoTypeExtension"].showNoBuyScreen = this.showNoBuyScreen;
worldScripts["CargoTypeExtension"].showSellScreen = this.showSellScreen;
worldScripts["CargoTypeExtension"].showNoSellScreen = this.showNoSellScreen;
worldScripts["CargoTypeExtension"].gatherInformation = this.gatherInformation;
worldScripts["CargoTypeExtension"].gatherInformation2 = this.gatherInformation2;
worldScripts["CargoTypeExtension"].tradeFloor = this.tradeFloor;
worldScripts["CargoTypeExtension"].tradeFloorEncounter = this.tradeFloorEncounter;
worldScripts["CargoTypeExtension"].detailedManifest = this.detailedManifest;
worldScripts["CargoTypeExtension"].permitListing = this.permitListing;
worldScripts["CargoTypeExtension"].readTraderNet = this.readTraderNet;
worldScripts["CargoTypeExtension-FetchContracts"].runNewOffer = this.runNewOffer;
worldScripts["CargoTypeExtension-FetchContracts"].newOfferChoice = this.newOfferChoice;
worldScripts["CargoTypeExtension-FetchContracts"].runOldOffer = this.runOldOffer;
worldScripts["CargoTypeExtension-FetchContracts"].oldOfferChoice = this.oldOfferChoice;
worldScripts["CargoTypeExtension-OpenContract"].runOffer = this._contract_runOffer;
worldScripts["CargoTypeExtension-OpenContract"].dealOpenC = this.dealOpenC;
worldScripts["CargoTypeExtension-OpenContract"].openContractWin = this.openContractWin;
worldScripts["CargoTypeExtension-OpenContract"].openContractLose = this.openContractLose;
worldScripts["CargoTypeExtension-Permits"].runOffer = this._permits_runOffer;
worldScripts["CargoTypeExtension-Permits"].permitDealings = this.permitDealings;
worldScripts["CargoTypeExtension-Scavenger"].runOffer = this._scavenger_runOffer;
worldScripts["CargoTypeExtension-Scavenger"].dealScavenger = this.dealScavenger;
}
// make Iron Raven compatible
if (worldScripts["IR-main-script.js"] && worldScripts["IR-main-script.js"].version == "1.4.2.1") {
worldScripts["IR-main-script.js"].questionScreens = this.questionScreens;
worldScripts["IR-main-script.js"].shipDockedWithStation = this._ir_shipDockedWithStation;
worldScripts["IR-main-script.js"].missionScreens = this.missionScreens;
worldScripts["IR-main-script.js"].choiceEvaluation = this.choiceEvaluation;
}
}
//-------------------------------------------------------------------------------------------------------------
// to make Ships Library compatible
this._showPage = function () {
var chapter = this.$contents[this.$chapter];
var text = this._textFromOffset(this.$chapter, this.$offset, this.$msStore, this.$msRows, this.$msCols);
var opts = {
screenID: "ships-library",
titleKey: chapter.key + "-title",
allowInterrupt: true,
exitScreen: "GUI_SCREEN_INTERFACES",
choices: {
"01_PREV": expandMissionText("ships-library-page-back"),
"09_NEXT": expandMissionText("ships-library-page-next"),
"10_CONTENTS": expandMissionText("ships-library-contents"),
"99_EXIT": expandMissionText("ships-library-exit"),
},
initialChoicesKey: this.$lastchoice ? this.$lastchoice : "09_NEXT",
message: text
};
if (chapter.opts) {
var extras = Object.keys(chapter.opts)
for (var k = 0; k < extras.length; k++) {
opts[extras[k]] = chapter.opts[extras[k]];
}
}
if (chapter.backgrounds) {
var page = this._pageOfOffset(chapter, this.$offset, this.$msStore);
if (page < chapter.backgrounds.length) {
var backg = chapter.backgrounds[page];
} else {
var backg = chapter.backgrounds[chapter.backgrounds.length - 1];
}
if (backg != "") {
opts.overlay = backg;
}
}
mission.runScreen(opts, this._manualHandler, this);
this.$fcbM = addFrameCallback(this._moveShip.bind(this));
}
//-------------------------------------------------------------------------------------------------------------
// to make Sothis TC compatible
this._sothis_missionScreenOpportunity = function () {
if (!this.$showWelcome) return;
var messText = expandDescription("[STC_welcome]");
if (this.$new_cargoes)
messText = messText + expandDescription("[STC_new_cargoes]");
var tcbgpic = "OOmap_G" + (galaxyNumber + 1) + ".png";
mission.runScreen({
title: "Sothis Trade Center",
message: messText,
overlay: tcbgpic
});
this.$showWelcome = false;
}
//-------------------------------------------------------------------------------------------------------------
// to make New Cargoes compatible
this._auctions_runOffer = function () {
var auc = this.activeAuction();
var msg = "Welcome, Trader. Bidding doesn't start until " + clock.clockStringForTime(auc.time) + ", so feel free to get your ship and credit ready before we start. We've got " + auc.quantity + " TC of " + worldScripts["CargoTypeExtension"].cargoDefinition(auc.cargo, "specificType") + " to sell.\n\nRemember, you must have sufficient cargo space to take the goods, and cover all fees and bids from your current credits.\n\nWe'll be using " + this.auctionTypeName(auc.atype) + " bidding:\n" + expandDescription("[cte_auc_rules" + auc.atype + "]");
mission.runScreen({
title: this.traderName(),
message: msg,
overlay: "cte_auction.png",
choicesKey: "cte_auc_opening"
}, this.checkAuction, this);
}
this._auctions_endAuction = function () {
mission.runScreen({
title: "Auction over",
overlay: "cte_auction.png",
message: this.auctionmessage + "\nThe auction is over."
});
this.localAuctioneer();
}
this.playSantaariAuction = function () {
if (this.currentauction.quantity < 1) {
this.endAuction();
} else {
var title = this.currentauction.quantity + " TC of " + worldScripts["CargoTypeExtension"].cargoDefinition(this.currentauction.cargo, "specificType");
var msg = "Auction: Santaari (" + this.blockSize(this.currentauction) + " TC blocks)\n";
if (this.auctionmessage != "") {
msg += "* " + this.auctionmessage + "\n";
this.auctionmessage = "";
}
msg += this.auctionStatus();
mission.runScreen({
title: title,
overlay: "cte_auction.png",
message: msg,
choicesKey: "cte_auc_santaari_bid"
}, this.choiceSantaariAuction, this);
}
}
this.playColesqueAuction = function () {
if (this.currentauction.quantity < 1) {
this.endAuction();
} else {
var title = this.currentauction.quantity + " TC of " + worldScripts["CargoTypeExtension"].cargoDefinition(this.currentauction.cargo, "specificType");
var msg = "Auction: Colesque (minimum increment " + this.colesqueIncrement(this.currentbid) + "₢)\n";
if (this.auctionmessage != "") {
msg += "* " + this.auctionmessage + "\n";
this.auctionmessage = "";
}
msg += this.auctionStatus();
mission.runScreen({
title: title,
overlay: "cte_auction.png",
message: msg,
choicesKey: "cte_auc_colesque_bid"
}, this.choiceColesqueAuction, this);
}
}
this.playLaratanAuction = function () {
if (this.lastcall == 6) {
this.endLaratanAuction();
} else {
var title = this.currentauction.quantity + " TC of " + worldScripts["CargoTypeExtension"].cargoDefinition(this.currentauction.cargo, "specificType");
var msg = "You: " + player.ship.cargoSpaceAvailable + " TC free, " + player.credits.toFixed(1) + "₢ available\n";
msg += "Auction: Lara'tan (ticket price " + this.currentbid + "₢)\n";
msg += "Round " + this.lastcall + "/5\n";
msg += "-----------------------------------\n";
for (var i = 0; i < this.currentbidders.length; i++) {
var line = this.currentbidders[i].name + ": ";
if (this.currentbidders[i].lastbid == 0) {
line += "no bid";
} else {
line += this.currentbidders[i].lastbid + " ticket(s)";
}
line += "\n";
msg += line;
}
var line = "Commander " + player.name + ": ";
if (this.playerbid == 0) {
line += "no bid";
} else {
line += this.playerbid + " ticket(s)";
}
line += "\n";
msg += line;
mission.runScreen({
title: title,
overlay: "cte_auction.png",
message: msg,
choicesKey: "cte_auc_laratan_bid"
}, this.choiceLaratanAuction, this);
}
}
this.playAngianaAuction = function () {
if (this.currentauction.quantity < 1) {
this.endAuction();
} else {
var title = this.currentauction.quantity + " TC of " + worldScripts["CargoTypeExtension"].cargoDefinition(this.currentauction.cargo, "specificType");
var msg = "Auction: Angiana (minimum increment " + this.colesqueIncrement(this.currentbid) + "₢, buyout " + this.angianaBuyout() + "₢/TC)\n";
if (this.auctionmessage != "") {
msg += "* " + this.auctionmessage + "\n";
this.auctionmessage = "";
}
msg += this.auctionStatus();
mission.runScreen({
title: title,
overlay: "cte_auction.png",
message: msg,
choicesKey: "cte_auc_angiana_bid"
}, this.choiceAngianaAuction, this);
}
}
this.playProximusAuction = function () {
if (this.currentauction.quantity < 1) {
this.endAuction();
} else {
var title = this.currentauction.quantity + " TC of " + worldScripts["CargoTypeExtension"].cargoDefinition(this.currentauction.cargo, "specificType");
var msg = "Auction: Proximus (minimum increment " + this.colesqueIncrement(this.currentbid) + "₢)\n";
if (this.auctionmessage != "") {
msg += "* " + this.auctionmessage + "\n";
this.auctionmessage = "";
}
msg += this.auctionStatus();
mission.runScreen({
title: title,
overlay: "cte_auction.png",
message: msg,
choicesKey: "cte_auc_proximus_bid"
}, this.choiceProximusAuction, this);
}
}
this.playSolansAuction = function () {
if (this.currentauction.quantity < 1) {
this.endAuction();
} else {
var title = this.currentauction.quantity + " TC of " + worldScripts["CargoTypeExtension"].cargoDefinition(this.currentauction.cargo, "specificType");
var msg = "Auction: Solans (increment " + this.colesqueIncrement(this.currentbid) + "₢)\n";
if (this.auctionmessage != "") {
msg += "* " + this.auctionmessage + "\n";
this.auctionmessage = "";
}
msg += this.auctionStatus();
mission.runScreen({
title: title,
overlay: "cte_auction.png",
message: msg,
choicesKey: "cte_auc_solans_bid"
}, this.choiceSolansAuction, this);
}
}
this.playJaftraAuction = function () {
if (this.currentauction.quantity < 1) {
this.endAuction();
} else {
var title = this.currentauction.quantity + " TC of " + worldScripts["CargoTypeExtension"].cargoDefinition(this.currentauction.cargo, "specificType");
var msg = "Auction: Jaftra\n";
if (this.auctionmessage != "") {
msg += "* " + this.auctionmessage + "\n";
this.auctionmessage = "";
}
msg += this.auctionStatus();
mission.runScreen({
title: title,
overlay: "cte_auction.png",
message: msg,
choicesKey: "cte_auc_jaftra_bid"
}, this.choiceJaftraAuction, this);
}
}
this.playXrataAuction = function () {
if (this.currentauction.quantity < 1) {
this.endAuction();
} else {
var title = this.currentauction.quantity + " TC of " + worldScripts["CargoTypeExtension"].cargoDefinition(this.currentauction.cargo, "specificType");
var msg = "Auction: Xrata (minimum increment " + this.colesqueIncrement(this.currentbid) + "₢)\n";
if (this.auctionmessage != "") {
msg += "* " + this.auctionmessage + "\n";
this.auctionmessage = "";
}
msg += this.auctionStatus();
mission.runScreen({
title: title,
overlay: "cte_auction.png",
message: msg,
choicesKey: "cte_auc_xrata_bid"
}, this.choiceXrataAuction, this);
}
}
this.startTrading = function () {
var choices = "cte_initscreenchoice";
if (missionVariables.cargotypeextension_tradernet && missionVariables.cargotypeextension_tradernet >= clock.days) {
choices = "cte_initscreenchoice_wtn";
}
mission.runScreen({
title: "Specialist Trade Goods Market",
message: this.showManifest(),
overlay: "cte_containers.png",
choicesKey: choices
},
this.initScreenChoice, this);
}
this.showNoBuyScreen = function () {
mission.runScreen({
title: "Buy Specialist Trade Goods",
overlay: "cte_containers.png",
message: "No specialist trade goods available for purchase"
},
this.startTrading, this);
}
this.showBuyScreen = function () {
var goods = this.stationMarket[this.pointer];
mission.runScreen({
title: "Buy " + this.specialCargoRegister[goods.type].specificType,
overlay: "cte_containers.png",
message: this.buyMessage(goods),
choicesKey: "cte_buyscreenchoice",
initialChoicesKey: this.lastscreenchoice
},
this.handleBuyDecision, this);
}
this.showNoSellScreen = function () {
mission.runScreen({
overlay: "cte_containers.png",
title: "Sell Specialist Trade Goods",
message: "No specialist trade goods in hold"
},
this.startTrading, this);
}
this.showSellScreen = function () {
var goods = this.holdgoods[this.pointer];
mission.runScreen({
overlay: "cte_containers.png",
title: "Sell " + this.specialCargoRegister[goods].specificType,
message: this.sellMessage(goods),
choicesKey: "cte_sellscreenchoice",
initialChoicesKey: this.lastscreenchoice
},
this.handleSellDecision, this);
}
this.gatherInformation = function () {
mission.runScreen({
title: "Local imports/exports",
overlay: "cte_tradefloor.png",
message: this.localTradeGoods()
},
this.gatherInformation2, this);
}
this.gatherInformation2 = function () {
mission.runScreen({
title: "Gossip in the trade district",
overlay: "cte_tradefloor.png",
message: this.localGossip()
},
this.startTrading, this);
}
this.tradeFloor = function () {
var choice = "cte_tradefloorchoice";
this.debug("Building trade floor");
var traders = new Array;
var srole = "";
if (player.ship.dockedStation != system.mainStation) {
var srole = player.ship.dockedStation.primaryRole;
}
for (var i = 0; i < this.personalities.length; i++) {
if (worldScripts[this.personalities[i]].traderHere && worldScripts[this.personalities[i]].traderHere(srole)) {
traders.push(this.personalities[i]);
this.debug(this.personalities[i] + " is present");
}
}
if (traders.length == 0) {
this.tradeflooractive = 0;
mission.runScreen({
title: "No-one about",
overlay: "cte_tradefloor.png",
message: "The trade floor is deserted."
},
this.startTrading, this
);
} else {
if (traders.length == 1) {
choice = "cte_tradeflooronlychoice";
}
this.tradeFloorEncounter(traders[this.tradefloorpointer % traders.length], choice);
}
}
this.tradeFloorEncounter = function (traderscript, choice) {
var title = worldScripts[traderscript].traderName();
var desc = worldScripts[traderscript].traderDesc();
this.traderscript = traderscript;
mission.runScreen({
title: title,
overlay: "cte_tradefloor.png",
message: desc,
choicesKey: choice
}, this.tradeFloorChoice, this);
}
this.detailedManifest = function () {
var manlines = this.detailedManifestLines();
var maxlines = 15;
if (manlines.length <= maxlines) {
mission.runScreen({
title: "Detailed Manifest",
overlay: "cte_containers.png",
message: this.viewDetailedManifest(manlines, 0, maxlines),
choicesKey: "cte_manifestlast"
},
this.startTrading, this);
} else {
var pages = 1 + Math.floor((manlines.length - 1) / maxlines);
var cpage = 1 + Math.floor((this.dmanoffset) / maxlines);
var fn = this.startTrading;
var choice = "cte_manifestlast";
if (this.dmanoffset + maxlines < manlines.length) {
fn = this.detailedManifest;
var choice = "cte_manifestnext";
}
mission.runScreen({
title: "Detailed Manifest (" + cpage + "/" + pages + ")",
overlay: "cte_containers.png",
message: this.viewDetailedManifest(manlines, this.dmanoffset, maxlines),
choicesKey: choice
},
fn, this);
this.dmanoffset += maxlines;
}
}
this.permitListing = function () {
var msg = "";
for (var k = 0; k < this.permits.length; k++) {
this.debug("Trying " + this.permits[k]);
msg += worldScripts[this.permits[k]].describePermits();
}
for (var k = 0; k < this.personalities.length; k++) {
this.debug("Trying " + this.personalities[k]);
msg += worldScripts[this.personalities[k]].describeContracts();
}
if (msg == "") {
msg = "You have no permits or active contracts, and no local regulations apply to trading.";
}
mission.runScreen({
title: "Permits, Contracts and Regulations",
overlay: "cte_permit.png",
message: msg
},
this.startTrading, this);
}
this.readTraderNet = function () {
var background = worldScripts["CargoTypeExtension-TraderNet"].getPic();
var messages = worldScripts["CargoTypeExtension-TraderNet"].numMessages();
if (messages == 0) {
mission.runScreen({
title: "TraderNet News",
overlay: background,
message: "\n\n\n\n\n\n\n\nNo news available.",
choicesKey: "cte_tradernet_last"
},
this.startTrading, this);
} else {
if (this.tradernetpointer >= messages) {
var article = worldScripts["CargoTypeExtension-TraderNet"].getMessage(messages);
var ckey = "cte_tradernet_last";
} else {
var ckey = "cte_tradernet";
var article = worldScripts["CargoTypeExtension-TraderNet"].getMessage(this.tradernetpointer++);
}
mission.runScreen({
title: "TraderNet News",
overlay: background,
message: "\n\n\n\n\n\n\n\n" + article,
choicesKey: ckey
},
function (choice) {
if (choice == "01_NEXT") {
this.readTraderNet();
} else {
this.startTrading();
}
}, this);
}
}
this.runNewOffer = function () {
var offer = this.currentOffer();
var msg = "This is a standard procurement contract - you bring me " + offer.amount + " TC of " + worldScripts["CargoTypeExtension"].cargoDefinition(offer.good, "specificType") + " by " + offer.deadline + ", at a rate of " + offer.price + "₢/TC.\nYou can bring them in more than one load, if you want, and how you obtain the goods is up to you.\nIf you fail to fulfil the contract, there will be a penalty charge of " + offer.price + "₢ for every TC you are short, to cover my risk of being short on what I need, so it's in your interests to have a good idea of how you're going to deliver the goods.\n";
mission.runScreen({
title: this.traderName(),
message: msg,
overlay: "cte_tradefloor.png",
choicesKey: "cte_fetch_deal"
}, this.newOfferChoice, this);
}
this.newOfferChoice = function (choice) {
if (choice == "01_ACCEPT") {
this.fetchContracts.push(this.localOffer);
this.localOffer = false;
var msg = "Thank you, Trader " + player.name + ". I look forward to you returning with the goods.";
} else {
var msg = "If you change your mind after a look at your charts, then I'll be around here for a little bit longer.";
}
mission.runScreen({
title: this.traderName(),
message: msg,
overlay: "cte_tradefloor.png"
}, this.leaveFetch, this);
}
this.runOldOffer = function () {
var offer = this.currentOffer();
var carried = worldScripts["CargoTypeExtension"].hasSpecialCargo(offer.good);
if (carried == 0) {
mission.runScreen({
title: this.traderName(),
message: "You don't seem to have any " + worldScripts["CargoTypeExtension"].cargoDefinition(offer.good, "specificType") + " in your hold right now, Trader. Remember, I still need you to deliver " + offer.amount + " TC by " + offer.deadline + ".",
overlay: "cte_tradefloor.png"
}, this.leaveFetch, this);
} else {
var msg = "Welcome back, Trader " + player.name + ". Your manifest indicates that you have " + carried + " TC of " + worldScripts["CargoTypeExtension"].cargoDefinition(offer.good, "specificType") + " in your hold. Would you like to transfer them now, for the agreed price of " + offer.price + "₢ up to the " + offer.amount + " TC remaining on this contract?";
mission.runScreen({
title: this.traderName(),
message: msg,
overlay: "cte_tradefloor.png",
choicesKey: "cte_fetch_transfer"
}, this.oldOfferChoice, this);
}
}
this.oldOfferChoice = function (choice) {
if (choice != "01_ACCEPT") {
mission.runScreen({
title: this.traderName(),
message: "Don't forget to drop them off here before you leave, then!",
overlay: "cte_tradefloor.png"
}, this.leaveFetch, this);
return;
}
var offer = this.currentOffer();
var transferred = 0;
while (offer.amount > 0 && worldScripts["CargoTypeExtension"].hasSpecialCargo(offer.good) > 0) {
if (worldScripts["CargoTypeExtension"].removeSpecialCargo(offer.good)) {
transferred++;
offer.amount--;
} else {
worldScripts["CargoTypeExtension"].error("Unable to transfer expected good in fetch contract?!");
player.consoleMessage("Warning: Unexpected error in NewCargoes OXP. Please see Latest.Log");
return;
}
}
var price = offer.price * transferred;
var msg = "Thank you. " + transferred + " TC has been transferred, and " + price + "₢ has been credited to your account.\n";
player.credits += price;
if (offer.amount > 0) {
msg += offer.amount + " TC remain to be delivered by " + offer.deadline + ", Trader - I hope to see you back soon with more.";
} else {
msg += "Thank you, Trader. This is all of the goods we agreed. I hope to see you again soon.";
}
mission.runScreen({
title: this.traderName(),
message: msg,
overlay: "cte_tradefloor.png"
}, this.leaveFetch, this);
}
this._contract_runOffer = function () {
var price = worldScripts["CargoTypeExtension"].cargoPriceExport("CTE_CTOC_1", 15, worldScripts["CargoTypeExtension"].defaultMarketInfo()) / 10;
var totalprice = price * this.contractdata.amount;
if (player.ship.cargoSpaceCapacity < this.contractdata.amount) {
var msg = "Trader, I appreciate your enthusiasm, but unfortunately my buyer isn't interested in partial deliveries. Come back and see me when you've got a proper freighter.";
if (player.ship.equipmentStatus("EQ_HYPERCARGO") === "EQUIPMENT_OK" || player.ship.equipmentStatus("EQ_MULTIBAY") === "EQUIPMENT_OK") {
msg = "Unfortunately, Trader, my buyer is somewhat old-fashioned, and doesn't approve of all these new hyperspatial storage arrangements. I'm afraid I can only offer this contract to people with a sufficiently large primary cargo bay.";
}
mission.runScreen({
title: this.traderName(),
overlay: "cte_tradefloor.png",
message: msg
}, this.leaveOpenC, this);
} else if (player.ship.cargoSpaceAvailable < this.contractdata.amount) {
var msg = "I'm sorry, Trader. You'll need to free up some hold space before we can discuss this contract.";
if (player.ship.equipmentStatus("EQ_HYPERCARGO") === "EQUIPMENT_OK" || player.ship.equipmentStatus("EQ_MULTIBAY") === "EQUIPMENT_OK") {
msg = "Unfortunately, Trader, my buyer is somewhat old-fashioned, and doesn't approve of all these new hyperspatial storage arrangements. You'll have to reorganise your cargo to get enough space in the main hold area for the goods before I can transfer them.";
}
mission.runScreen({
title: this.traderName(),
overlay: "cte_tradefloor.png",
message: msg
}, this.leaveOpenC, this);
} else if (totalprice > player.credits) {
var msg = "I'm sorry, Trader. You don't have enough credits to afford the security deposit. Come back some day when you're a little richer.";
mission.runScreen({
title: this.traderName(),
overlay: "cte_tradefloor.png",
message: msg
}, this.leaveOpenC, this);
} else {
var msg = "Here's the deal, " + player.name + ". I'll sell you " + this.contractdata.amount + " of " + this.contractdata.cargospecific + " for " + price.toFixed(1) + "₢/TC (" + totalprice + "₢) security deposit. When you get to " + System.infoForSystem(galaxyNumber, this.contractdata.dest).name + " station, " + this.contractdata.buyer + " will pay you over ten times that for delivery. I can't tell you the exact price, unfortunately, because that obsolete Galcop regulation is still being enforced. They'll then pay me the rest of the goods cost minus your delivery fee and the security deposit. Everyone's a winner.\n\nWhat's that? What's the catch? Well, you're not the only one taking this contract. " + this.contractdata.buyer + " is only going to pay the first one there, so you'll need to be fast. You're one of the first to show up, so your odds are pretty good.";
if (player.ship.equipmentStatus("EQ_HYPERCARGO") === "EQUIPMENT_OK" || player.ship.equipmentStatus("EQ_MULTIBAY") === "EQUIPMENT_OK") {
msg = "\n\nOh, by the way, Trader, my buyer is somewhat old-fashioned, and doesn't approve of all these new hyperspatial storage arrangements. For auditing purposes, you should keep the cargo in your main hold throughout the trip.";
}
mission.runScreen({
title: this.traderName(),
overlay: "cte_tradefloor.png",
message: msg,
choicesKey: "cte_oc_deal"
}, this.dealOpenC, this);
}
}
this.dealOpenC = function (choice) {
if (choice == "01_DEAL") {
var price = worldScripts["CargoTypeExtension"].cargoPriceExport("CTE_CTOC_1", 15, worldScripts["CargoTypeExtension"].defaultMarketInfo()) / 10;
for (var i = 1; i <= this.contractdata.amount; i++) {
worldScripts["CargoTypeExtension"].addSpecialCargo("CTE_CTOC_1", price.toFixed(1) + "₢ for open contract in " + system.info.name);
}
worldScripts["CargoTypeExtension"].debug(price + " " + this.contractdata.amount);
player.credits = player.credits - (price * this.contractdata.amount);
this.contractdata.active = 1;
var msg = "Thank you, Trader. The cargo is being loaded on to your ship as we speak. I recommend you launch as soon as possible.";
if (player.ship.equipmentStatus("EQ_HYPERCARGO") === "EQUIPMENT_OK" || player.ship.equipmentStatus("EQ_MULTIBAY") === "EQUIPMENT_OK") {
msg += "\n\nRemember that the buyer doesn't approve of hyperspatial cargo storage. You can carry the cargo there in flight at your own risk if you must, but make sure that all the goods are in your primary cargo hold when you dock at the destination station, or they probably won't take them.";
}
} else {
var msg = "Understood, Trader. Now, if you'll excuse me, I have a few other potential couriers to talk to. I'll still be here for a little while if you change your mind.";
}
mission.runScreen({
title: this.traderName(),
overlay: "cte_tradefloor.png",
message: msg
}, this.leaveOpenC, this);
}
this.openContractWin = function () {
var price = worldScripts["CargoTypeExtension"].cargoPriceImport("CTE_CTOC_1", 15, worldScripts["CargoTypeExtension"].defaultMarketInfo()) / 10;
var carried = worldScripts["CargoTypeExtension"].hasSpecialCargo("CTE_CTOC_1");
var msg = "Welcome, Trader " + player.name + ". Let's see those " + this.contractdata.cargospecific + " then.\n\n";
if (carried == this.contractdata.amount) {
msg += "Ah, excellent. All present and correct. If you'll just authorise the cargo transfer, the " + price.toFixed(1) + " ₢/TC will be yours.";
} else if (carried >= this.contractdata.amount) { // shouldn't be possible, in general. Well, they probably deserve a small bonus.
msg += "Ah, excellent. All present and correct. If you'll just authorise the cargo transfer, the " + price.toFixed(1) + " ₢/TC will be yours. I'll take the spares off your hands for the same price, I think. Don't tell " + this.contractdata.seller + ", though, or they'll be wanting their cut.";
} else if (carried > 0) {
price = Math.floor(price * (carried / this.contractdata.amount));
msg += "You appear to be missing some of the cargo I need. I'll take what you have off your hands, now it's here, but your payment has been reduced to " + price.toFixed(1) + " ₢/TC to account for my costs in obtaining replacements.";
} else if (carried == 0) {
msg += "Ah. Apologies. I seem to have been misinformed. I thought you were carrying some goods for me, but it must have been someone with a similar name.";
}
player.credits += price * carried;
for (var i = 1; i <= carried; i++) {
worldScripts["CargoTypeExtension"].removeSpecialCargo("CTE_CTOC_1");
}
this.contractdata.active = 0;
mission.runScreen({
title: this.contractdata.buyer,
overlay: "cte_tradefloor.png",
message: msg
}, function () {}, this);
}
this.openContractLose = function () {
this.contractdata.active = 0;
var missed = clock.adjustedSeconds - this.contractdata.deadline;
var msg = "You can't find " + this.contractdata.buyer + " when you dock. You ask the harbourmaster if they've seen them.\n\n"
if (missed < 60) {
msg += "You've literally just missed them. Some trader in a Boa Clipper was unloading cargo with them over there.";
} else if (missed < 3600) {
msg += "They were here a moment ago. I think they left a few minutes ago with a Boa II pilot.";
} else if (missed < 86400) {
msg += "I saw them around earlier today. An L-Crate full of cargo came in for them, I think, so they were supervising the unloading.";
} else if (missed < (86400 * 7)) {
msg += "Not for a few days, no. They were taking some cargo from a Boa planetside.";
} else {
msg += "No, they've not been up here for a while, not since that Anaconda came in last week.";
}
mission.runScreen({
title: "Too late...",
overlay: "cte_tradefloor.png",
message: msg
}, function () {}, this);
}
this._permits_runOffer = function () {
if (player.ship.targetSystem == system.ID) {
this.permitDealings("Please set your navigation computer's destination system to your desired importer.");
return;
}
this.currentpermit = this.decodePermit(this.permitSeller.permitcode);
this.currentpermit.good = this.permitSeller.good;
this.currentpermit.dest = player.ship.targetSystem;
this.currentpermit.real = this.permitSeller.real;
this.currentpermit.deadline = this.calculatePermitDeadline(this.currentpermit.dest, this.currentpermit.timenoise);
if (this.currentpermit.deadline == 0) {
this.permitDealings("I'm afraid we don't have a trade agreement with " + System.infoForSystem(galaxyNumber, player.ship.targetSystem).name + ", Trader.");
return;
} else {
var price = this.permitPrice(this.currentpermit);
var desc = this.permitDescription(this.currentpermit);
var msg = "We can offer the following permit:\n";
msg += "-------------------------\n";
msg += desc + "\n";
msg += "-------------------------\n";
msg += "Inclusive of all fees and taxes, this will cost " + price + "₢";
mission.runScreen({
title: this.traderName(),
message: msg,
choicesKey: "cte_permit_deal",
overlay: "cte_permit.png"
}, this.permitChoice, this);
}
}
this.permitDealings = function (msg) {
mission.runScreen({
title: this.traderName(),
message: msg,
overlay: "cte_permit.png"
}, this.permitExit, this);
}
this._scavenger_runOffer = function () {
var scav = this.activeScavenger();
var spec = worldScripts["CargoTypeExtension"].cargoDefinition(this.scavengerCargoes[scav], "specificType");
var gen = worldScripts["CargoTypeExtension"].cargoDefinition(this.scavengerCargoes[scav], "genericType");
var amount = worldScripts["CargoTypeExtension"].hasSpecialCargo(this.scavengerCargoes[scav]);
if (amount == 0) {
var msg = "I'm sorry, Trader. I'm sure the contents of your hold are fascinating to the right buyer, but I'm only looking for " + spec + ". I won't take up your time any further.";
mission.runScreen({
title: this.traderName(),
overlay: "cte_tradefloor.png",
message: msg
}, this.leaveScavenger, this);
} else {
var price = Math.floor(1000 * amount * (Math.pow(amount, 0.25)));
if (gen == "slaves" || gen == "narcotics" || gen == "firearms") {
price *= 2; // illegal goods
}
var msg = "Excellent work, Trader. In exchange for the " + amount + " TC of " + spec + " in your hold, I will pay " + price + "₢. Do we have a deal?";
mission.runScreen({
title: this.traderName(),
overlay: "cte_tradefloor.png",
message: msg,
choicesKey: "cte_scav_deal"
}, this.dealScavenger, this);
}
}
this.dealScavenger = function (choice) {
if (choice == "01_DEAL") {
var scav = this.activeScavenger();
var gen = worldScripts["CargoTypeExtension"].cargoDefinition(this.scavengerCargoes[scav], "genericType");
var amount = worldScripts["CargoTypeExtension"].hasSpecialCargo(this.scavengerCargoes[scav]);
for (var i = 0; i < amount; i++) {
worldScripts["CargoTypeExtension"].removeSpecialCargo(this.scavengerCargoes[scav]);
}
var price = Math.floor(1000 * amount * (Math.pow(amount, 0.25)));
if (gen == "slaves" || gen == "narcotics" || gen == "firearms") {
price *= 2; // illegal goods
}
player.credits += price;
var msg = "A pleasure dealing with you, Trader. " + price + "₢ has been credited to your account. Contact me again if you find any more.";
} else {
var msg = "Your choice, but you won't find anyone else willing to pay this much. Come back when you've figured that out for yourself.";
}
mission.runScreen({
title: this.traderName(),
overlay: "cte_tradefloor.png",
message: msg
}, this.leaveScavenger, this);
}
//-------------------------------------------------------------------------------------------------------------
// to make Iron Raven compatible
this.questionScreens = function () {
if (system.ID == 23) // Maenes
{
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "QuiCo Pharmaceuticals",
overlay: "IR_quico_logo.png",
messageKey: "IR_MAENES_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_MAENES_QUESTIONS"
}
}
if (system.ID == 171) // Yokohama
{
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "Yokohama Exports",
overlay: "IR_yk_logo.png",
messageKey: "IR_YOKOHAMA_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_YOKOHAMA_QUESTIONS"
}
}
if (system.ID == 232) //Janes
{
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "Janes's Shipyard Intelligence",
overlay: "IR_janes_logo.png",
messageKey: "IR_JANES_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_JANES_QUESTIONS"
}
}
if (system.ID == 240) // Pirate Cove
{
if (missionVariables.IR_status == "IR_IBANEZ_4") {
if (!missionVariables.IR_alsto) {
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_PIRATE_QUESTIONS"
missionVariables.IR_alsto = "MET"
} else {
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_intro_alt",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_PIRATE_QUESTIONS"
}
}
}
if (system.ID == 119) // PleasureWorld
{
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "PleasureWorld",
overlay: "IR_pw_logo.png",
messageKey: "IR_PW_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_PW_QUESTIONS"
}
}
if (system.ID == 180) // NWE
{
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "Naval Weapons Establishment",
overlay: "IR_NWE_logo.png",
messageKey: "IR_NWE_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_NWE_QUESTIONS"
}
}
if (system.ID == 219) // GSE
{
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_GSE_QUESTIONS"
}
}
if (system.ID == 31) // KORSHKOV
{
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "OKB Korshkov",
overlay: "IR_korshlogo.png",
messageKey: "IR_KORSHKOV_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_KORSHKOV_QUESTIONS"
}
}
}
this._ir_shipDockedWithStation = function (station) {
this.addIRinterface()
if (missionVariables.IR_status == "IR_epilogue" && clock.days > missionVariables.IR_epilogue_deadline) {
this._runScreen({
messageKey: "IR_final",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
overlay: "IR_title.png",
messageKey: "IR_theend"
});
missionVariables.IR_status = "IR_completed"
mission.setInstructionsKey(null)
missionVariables.IR_epilogue_deadline = null
missionVariables.IR_shipment_quest = null
missionVariables.IR_SDF_quest = null
missionVariables.IR_SDF_question_no = null
missionVariables.IR_SDF_question_key = null
missionVariables.IR_SDF_question_string = null
missionVariables.IR_defences_quest = null
missionVariables.IR_defences_question_no = null
missionVariables.IR_defences_question_key = null
missionVariables.IR_defences_question_string = null
missionVariables.IR_finance_quest = null
missionVariables.IR_finance_question_no = null
missionVariables.IR_finance_question_key = null
missionVariables.IR_finance_question_string = null
missionVariables.IR_shipment_quest_method = null
missionVariables.IR_shipment_question_no = null
missionVariables.IR_shipment_question_key = null
missionVariables.IR_shipment_question_string = null
missionVariables.IR_GSE_loan = null
missionVariables.IR_wife_status = null
missionVariables.IR_alsto = null
missionVariables.IR_count = null
missionVariables.IR_defences_kill_count = null
missionVariables.IR_SDF_quest_location = null
missionVariables.IR_SDF_quest_location_name = null
missionVariables.IR_KORSHKOV_deadline = null
missionVariables.IR_asked_question = null
missionVariables.IR_question_settings = null
missionVariables.IR_screen_log = null
missionVariables.IR_screen_location = null
}
});
}
if (player.ship.docked && galaxyNumber == 7) this.missionScreens();
}
this.missionScreens = function () {
if (guiScreen == "GUI_SCREEN_MISSION" || !player.ship.docked)
return;
if (player.ship.dockedStation.hasRole("IR-luft-core")) {
if (missionVariables.IR_SDF_quest == "JACOB" || missionVariables.IR_SDF_quest == "LUFTSLOTTE") {
this._runScreen({
title: "Luftslotte 6",
messageKey: "IR_SDF_quest_4"
})
missionVariables.IR_SDF_quest = "KRAIT"
}
}
if (player.ship.dockedStation.isMainStation && missionVariables.IR_offer == null) {
if (missionVariables.IR_status == null) {
this._runScreen({
overlay: "IR_title.png",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_IBANEZ_1"
});
mission.setInstructionsKey("IR_IBANEZ_INFO")
missionVariables.IR_status = "IR_IBANEZ_1"
}
});
}
if (missionVariables.IR_finance_quest == "REPROCESSED" && clock.days >= missionVariables.IR_KORSHKOV_deadline) //this is 20 days
{
this._runScreen({
title: "Jane's Shipyard Intelligence",
messageKey: "IR_finance_quest_4"
});
missionVariables.IR_finance_quest = "JANES_NEWS"
missionVariables.IR_KORSHKOV_deadline = null
player.incrementFinanceStatus()
}
if (missionVariables.IR_SDF_quest == "ADDRESS" && clock.days >= missionVariables.IR_SDF_deadline) {
this._runScreen({
messageKey: "IR_SDF_quest_2"
});
missionVariables.IR_SDF_quest = "JACOB"
player.incrementSDFStatus()
}
if (missionVariables.IR_SDF_quest == "POD_SCOOPED") {
this._runScreen({
messageKey: "IR_SDF_quest_5"
});
player.ship.useSpecialCargo("WARNING: Radiation detected in cargo hold")
missionVariables.IR_SDF_quest = "KORSHKOV"
player.incrementSDFStatus()
}
if (missionVariables.IR_SDF_quest == "PHOTO" && clock.days >= missionVariables.IR_SDF_deadline) {
this._runScreen({
messageKey: "IR_SDF_quest_8a",
overlay: "IR_kinnaird.png",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_SDF_quest_8b",
overlay: "IR_match.png",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_SDF_quest_8c"
});
missionVariables.IR_SDF_quest = "COMPLETED"
player.clearSDFStatus()
missionVariables.IR_SDF_status_no = null
missionVariables.IR_SDF_deadline = null
++missionVariables.IR_quest_count
}
});
});
}
if (missionVariables.IR_finance_quest == "WAIT3" && clock.days >= missionVariables.IR_KORSHKOV_deadline) {
this._runScreen({
title: " ",
overlay: "IR_bloomberg.png",
messageKey: "IR_finance_quest_10"
});
missionVariables.IR_KORSHKOV_deadline = null
player.clearFinanceStatus()
missionVariables.IR_finance_status_no = null
missionVariables.IR_finance_quest = "COMPLETED"
++missionVariables.IR_quest_count
}
if (missionVariables.IR_shipment_quest == "SUCCESS") {
this._runScreen({
messageKey: "IR_shipment_success"
});
player.clearShipmentStatus()
missionVariables.IR_shipment_status_no = null
missionVariables.IR_shipment_quest = "COMPLETED"
missionVariables.IR_YOKOHAMA_deadline = null
++missionVariables.IR_quest_count
missionVariables.IR_tipoff_deadline = clock.days + 10
}
if (missionVariables.IR_shipment_quest == "DISPATCHED") {
this._runScreen({
messageKey: "IR_shipment_failure"
});
player.clearShipmentStatus()
missionVariables.IR_shipment_status_no = null
missionVariables.IR_shipment_quest = "FAILED"
++missionVariables.IR_quest_count
missionVariables.IR_YOKOHAMA_deadline = null
}
if (missionVariables.IR_shipment_quest == "COMPLETED") {
if (clock.days >= missionVariables.IR_tipoff_deadline) {
this._runScreen({
messageKey: "IR_tipoff"
});
missionVariables.IR_tipoff_deadline = null
missionVariables.IR_shipment_quest = "TIPPEDOFF"
}
}
if (missionVariables.IR_loan_deadline) {
if (clock.days >= missionVariables.IR_loan_deadline) {
this._runScreen({
title: "First Galactic Bank",
messageKey: "IR_GSE_loan_warning"
});
mission.setInstructionsKey(null)
missionVariables.IR_loan_deadline = null
missionVariables.IR_load_remaining = null
player.credits -= 550000
missionVariables.IR_GSE_loan = "DEFAULTED"
}
}
if (missionVariables.IR_defences_quest == "DEMO_6" && clock.days > missionVariables.IR_defences_quest_deadline) {
this._runScreen({
messageKey: "IR_defences_quest_6"
});
++missionVariables.IR_quest_count
missionVariables.IR_defences_quest = "COMPLETED"
missionVariables.IR_defences_quest_deadline = null
missionVariables.IR_defences_status_no = null
player.clearDefencesStatus()
}
if (missionVariables.IR_status == "IR_KINNAIRD_2") {
this._runScreen({
messageKey: "IR_kinnaird_3alt"
});
}
if (missionVariables.IR_status == "IR_LEXICON_1" && clock.days > missionVariables.IR_LEXICON_deadline) {
this._runScreen({
messageKey: "IR_LEXICON_2"
});
missionVariables.IR_status = "IR_LEXICON_2"
mission.setInstructionsKey("IR_LEXICON_brief_2")
missionVariables.IR_LEXICON_deadline = null
}
if (missionVariables.IR_status == "IR_CHERKASOVA_1") // briefing with Cherkasova
{
this._runScreen({
messageKey: "IR_CHERKASOVA_1a",
overlay: "IR_KSR_logo.png",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_CHERKASOVA_1b",
overlay: "IR_KSR_logo.png",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_CHERKASOVA_1c",
overlay: "IR_KSR_logo.png",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_CHERKASOVA_1d",
overlay: "IR_KSR_logo.png",
choicesKey: "IR_cherkasova_choices"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_LOA_1",
overlay: "IR_KSR_logo.png"
})
mission.setInstructionsKey("IR_LOA_brief_1")
missionVariables.IR_status = "IR_LOA_1"
mission.setInstructionsKey("IR_LOA_brief_1")
missionVariables.IR_cherkasova_deadline = null
}
if (choice == 2) {
this._runScreen({
messageKey: "IR_sources_1",
overlay: "IR_KSR_logo.png"
}) //screen fails to run
mission.setInstructionsKey("IR_LEXICON_brief_1")
missionVariables.IR_status = "IR_sources_1"
missionVariables.IR_cherkasova_deadline = null
mission.setInstructionsKey("IR_LEXICON_brief_1")
missionVariables.IR_sources_deadline = clock.days + 15
}
});
});
});
});
}
if (missionVariables.IR_status == "IR_sources_1" && clock.days > missionVariables.IR_sources_deadline) {
this._runScreen({
messageKey: "IR_sources_2"
});
missionVariables.IR_status = "IR_sources_2"
mission.setInstructionsKey("IR_waitforinfo_brief")
missionVariables.IR_sources_deadline = clock.days + 7
}
if (missionVariables.IR_status == "IR_sources_2" && clock.days > missionVariables.IR_sources_deadline) {
this._runScreen({
messageKey: "IR_sources_3"
});
missionVariables.IR_status = "IR_sources_3"
missionVariables.IR_sources_deadline = null
mission.setInstructionsKey("IR_sources_brief_1")
}
if (missionVariables.IR_status == "IR_LOA_4" && clock.days > missionVariables.IR_attack_deadline) {
this._runScreen({
messageKey: "IR_LOA_5"
});
missionVariables.IR_status = "IR_LOA_5"
missionVariables.IR_attack_deadline = null
mission.setInstructionsKey("IR_LOA_brief_4")
}
if (missionVariables.IR_status == "IR_LOA_7" && clock.days > missionVariables.IR_epilogue_deadline) {
this._runScreen({
messageKey: "IR_LOA_7"
});
missionVariables.IR_status = "IR_LOA_8"
missionVariables.IR_epilogue_deadline = clock.days + 10
}
if (missionVariables.IR_status == "IR_LOA_8" && clock.days > missionVariables.IR_epilogue_deadline) {
this._runScreen({
messageKey: "IR_LOA_8"
});
missionVariables.IR_status = "IR_LOA_9"
missionVariables.IR_epilogue_deadline = clock.days + 7
}
if (missionVariables.IR_status == "IR_LOA_9" && clock.days > missionVariables.IR_epilogue_deadline) {
this._runScreen({
messageKey: "IR_invite"
});
missionVariables.IR_status = "IR_invite"
mission.setInstructionsKey("IR_invite_brief")
missionVariables.IR_epilogue_deadline = null
}
if (missionVariables.IR_status == "IR_sources_6" && clock.days > missionVariables.IR_epilogue_deadline) {
this._runScreen({
messageKey: "IR_sources_6"
});
missionVariables.IR_status = "IR_sources_7"
missionVariables.IR_epilogue_deadline = clock.days + 15
}
if (missionVariables.IR_status == "IR_sources_7" && clock.days > missionVariables.IR_epilogue_deadline) {
this._runScreen({
messageKey: "IR_invite"
});
missionVariables.IR_status = "IR_invite"
mission.setInstructionsKey("IR_invite_brief")
missionVariables.IR_epilogue_deadline = null
}
//Location Specific
if (system.ID == 7) //Vegedius
{
if (missionVariables.IR_status == "IR_IBANEZ_1") {
this._runScreen({
title: "GalCop High Command",
messageKey: "IR_IBANEZ_2a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
title: "GalCop High Command",
messageKey: "IR_IBANEZ_2b",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
title: "GalCop High Command",
messageKey: "IR_IBANEZ_2c"
});
missionVariables.IR_status = "IR_IBANEZ_2"
mission.setInstructionsKey("IR_RAAED_INFO")
}
});
});
}
if (missionVariables.IR_status == "IR_RAAED_1") //return to Ibanez
{
this._runScreen({
title: "Galcop High Command",
messageKey: "IR_IBANEZ_3"
})
missionVariables.IR_status = "IR_IBANEZ_3"
mission.setInstructionsKey("IR_JANES_INFO")
}
if (missionVariables.IR_status == "IR_JANES_1") // return to Ibanez for big briefing
{
this._runScreen({
title: "GalCop High Command",
messageKey: "IR_IBANEZ_4a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
title: "GalCop High Command",
messageKey: "IR_IBANEZ_4b",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
title: "GalCop High Command",
messageKey: "IR_IBANEZ_4c",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
title: "GalCop High Command",
messageKey: "IR_IBANEZ_4d"
});
missionVariables.IR_status = "IR_IBANEZ_4"
mission.setInstructionsKey(null)
this.setupQuestions()
this.setupStatus()
missionVariables.IR_quest_count = 0
this.addIRinterface();
}
});
});
});
}
if (missionVariables.IR_status == "IR_IBANEZ_4" && missionVariables.IR_quest_count == 4) {
missionVariables.IR_quest_count = null
if (missionVariables.IR_shipment_quest_method == "YOKOHAMA_AMBUSH") {
this._runScreen({
messageKey: "IR_IBANEZ_5a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
overlay: "IR_title.png",
messageKey: "IR_theend"
});
missionVariables.IR_status = "IR_completed"
mission.setInstructionsKey(null)
missionVariables.IR_epilogue_deadline = null
missionVariables.IR_shipment_quest = null
missionVariables.IR_SDF_quest = null
missionVariables.IR_defences_quest = null
missionVariables.IR_finance_quest = null
missionVariables.IR_shipment_quest_method = null
}
});
}
if (missionVariables.IR_shipment_quest == "FAILED") {
this._runScreen({
messageKey: "IR_IBANEZ_5b",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
overlay: "IR_title.png",
messageKey: "IR_theend"
});
missionVariables.IR_status = "IR_completed"
mission.setInstructionsKey(null)
missionVariables.IR_epilogue_deadline = null
missionVariables.IR_shipment_quest = null
missionVariables.IR_SDF_quest = null
missionVariables.IR_defences_quest = null
missionVariables.IR_finance_quest = null
missionVariables.IR_shipment_quest_method = null
}
});
} else
this._runScreen({
title: "GalCop High Command",
messageKey: "IR_IBANEZ_5",
choicesKey: "IR_IBANEZ_choices"
}, function (choice) {
if (choice == "IR_IBANEZ_A_weiss") {
this._runScreen({
title: "GalCop High Command",
messageKey: "IR_weiss_1"
});
missionVariables.IR_status = "IR_WEISS_1"
mission.setInstructionsKey("IR_weiss_brief_1")
}
if (choice == "IR_IBANEZ_B_kinnaird") {
this._runScreen({
title: "GalCop High Command",
messageKey: "IR_kinnaird_1"
});
missionVariables.IR_status = "IR_KINNAIRD_1"
mission.setInstructionsKey("IR_kinnaird_brief_1")
}
if (choice == "IR_IBANEZ_C_moreinfo") {
this._runScreen({
title: "GalCop High Command",
messageKey: "IR_LEXICON_1"
});
missionVariables.IR_status = "IR_LEXICON_1"
mission.setInstructionsKey("IR_LEXICON_1")
missionVariables.IR_LEXICON_deadline = clock.days + 15
}
});
}
if (missionVariables.IR_status == "IR_WEISS_4" || missionVariables.IR_status == "IR_KINNAIRD_4") {
this._runScreen({
title: "Galcop High Command",
messageKey: "IR_IBANEZ_5_debrief"
})
missionVariables.IR_status = "IR_IBANEZ_5"
mission.setInstructionsKey("IR_waitforinfo_brief")
missionVariables.IR_cherkasova_deadline = clock.days + 20
}
if (missionVariables.IR_status == "IR_invite" && clock.days > missionVariables.IR_epilogue_deadline) {
this._runScreen({
messageKey: "IR_reward_a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_reward_b",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_reward_c",
choicesKey: "IR_continue",
overlay: "IR_maenesmedal.png"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_reward_d",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_reward_e"
});
missionVariables.IR_status = "IR_epilogue"
missionVariables.IR_epilogue_deadline = clock.days + 5
player.credits += 50000
mission.setInstructionsKey(null)
}
});
});
});
});
}
}
if (system.ID == 230) // RAAED
{
if (missionVariables.IR_status == "IR_IBANEZ_2") {
this._runScreen({
messageKey: "IR_RAAED_1a",
overlay: "IR_forest.png",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
overlay: "IR_invoice.png",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_RAAED_1c",
overlay: "IR_forest.png",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_RAAED_1d",
choicesKey: "IR_continue",
overlay: "IR_forest.png"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_RAAED_1e",
overlay: "IR_forest.png"
});
missionVariables.IR_status = "IR_RAAED_1"
mission.setInstructionsKey("IR_IBANEZ_INFO")
}
});
});
});
});
}
}
if (system.ID == 232) // Janes
{
if (missionVariables.IR_status == "IR_IBANEZ_3") // quick visit to Janes
{
this._runScreen({
messageKey: "IR_JANES_1a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_JANES_1b",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_JANES_1c"
});
missionVariables.IR_status = "IR_JANES_1"
mission.setInstructionsKey("IR_IBANEZ_INFO")
}
});
});
}
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "Janes's Shipyard Intelligence",
overlay: "IR_janes_logo.png",
messageKey: "IR_JANES_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_JANES_QUESTIONS"
}
}
if (system.ID == 171) // Yokohama
{
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "Yokohama Exports",
overlay: "IR_yk_logo.png",
messageKey: "IR_YOKOHAMA_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_YOKOHAMA_QUESTIONS"
}
}
if (missionVariables.IR_convoy_exited == "TRUE" && missionVariables.IR_alsto == "HELP_ACCEPTED") {
this._runScreen({
messageKey: "IR_shipment_contact_report"
});
player.incrementShipmentStatus()
missionVariables.IR_alsto = "INFORMED"
missionVariables.IR_convoy_exited = null
}
if (system.ID == 240) // Pirate Cove
{
if (missionVariables.IR_status == "IR_IBANEZ_4")
{
if (!missionVariables.IR_alsto) {
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_PIRATE_QUESTIONS"
missionVariables.IR_alsto = "MET"
} else {
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_intro_alt",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_PIRATE_QUESTIONS"
}
}
if (missionVariables.IR_status == "IR_LOA_1") {
if (missionVariables.IR_alsto)
missionVariables.IR_LOA_text = "known"
if (missionVariables.IR_alsto == "INFORMED")
missionVariables.IR_LOA_text = "helped"
if (!missionVariables.IR_alsto)
missionVariables.IR_LOA_text = "unknown"
this._runScreen({
messageKey: "IR_LOA_" + [missionVariables.IR_LOA_text] + "_2a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_LOA_" + [missionVariables.IR_LOA_text] + "_2b",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_LOA_2c",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_LOA_2d"
})
missionVariables.IR_status = "IR_LOA_2"
mission.setInstructionsKey("IR_LOA_brief_2")
missionVariables.IR_alsto = null
missionVariables.IR_LOA_text = null
}
});
});
});
}
}
if (system.ID == 119) // PleasureWorld
{
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "PleasureWorld",
overlay: "IR_pw_logo.png",
messageKey: "IR_PW_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_PW_QUESTIONS"
}
if (missionVariables.IR_status == "IR_WEISS_3") {
this._runScreen({
title: "PleasureWord",
overlay: "IR_pw_logo.png",
messageKey: "IR_weiss_3a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
overlay: "IR_pw_logo.png",
messageKey: "IR_weiss_3b"
})
missionVariables.IR_status = "IR_WEISS_4"
mission.setInstructionsKey("IR_weiss_brief_3")
});
}
if (missionVariables.IR_status == "IR_KINNAIRD_3") {
this._runScreen({
title: "PleasureWord",
overlay: "IR_pw_logo.png",
messageKey: "IR_kinnaird_4a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_kinnaird_4b"
})
missionVariables.IR_status = "IR_KINNAIRD_4"
mission.setInstructionsKey("IR_kinnaird_brief_4")
});
}
if (missionVariables.IR_status == "IR_LEXICON_2") {
this._runScreen({
messageKey: "IR_LEXICON_3a",
overlay: "IR_nightclub.png",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_LEXICON_3b",
overlay: "IR_nightclub.png",
choicesKey: "IR_launch_choice"
}, function (choice) {
if (choice == 1) {
missionVariables.IR_status = "IR_LEXICON_4"
player.ship.launch()
}
});
});
}
if (missionVariables.IR_status == "IR_weiss_scooped") {
this._runScreen({
messageKey: "IR_LEXICON_4a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
messageKey: "IR_LEXICON_4b"
})
missionVariables.IR_status = "IR_IBANEZ_5"
mission.setInstructionsKey("IR_waitforinfo_brief")
missionVariables.IR_cherkasova_deadline = clock.days + 20
});
}
}
if (system.ID == 180) // NWE
{
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "Naval Weapons Establishment",
overlay: "IR_NWE_logo.png",
messageKey: "IR_NWE_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_NWE_QUESTIONS"
}
if (missionVariables.IR_defences_quest == "DEMO_2") {
this._runScreen({
title: "Naval Weapons Establishment",
overlay: "IR_NWE_logo.png",
messageKey: "IR_defences_quest_2a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
title: "Naval Weapons Establishment",
overlay: "IR_NWE_logo.png",
messageKey: "IR_defences_quest_2b"
});
missionVariables.IR_defences_quest_deadline = clock.days + 7
missionVariables.IR_defences_quest = "DEMO_3"
player.incrementDefencesStatus()
}
});
}
if (missionVariables.IR_defences_quest == "DEMO_3" && clock.days > missionVariables.IR_defences_quest_deadline) {
this._runScreen({
title: "Naval Weapons Establishment",
overlay: "IR_NWE_logo.png",
messageKey: "IR_defences_quest_3"
});
missionVariables.IR_defences_quest_deadline = null
missionVariables.IR_defences_quest = "DEMO_4"
player.incrementDefencesStatus()
}
}
if (system.ID == 82) // Inorle
{
if (missionVariables.IR_SDF_quest == "JACOB") {
this._runScreen({
messageKey: "IR_SDF_quest_3"
})
missionVariables.IR_SDF_quest = "LUFTSLOTTE"
}
}
if (system.ID == 219) // GSE
{
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_GSE_QUESTIONS"
}
if (missionVariables.IR_finance_quest == "JANES_NEWS") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_finance_quest_6a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_finance_quest_6b"
});
player.incrementFinanceStatus()
missionVariables.IR_offer = null
missionVariables.IR_finance_quest = "WIFE"
}
});
}
if (missionVariables.IR_finance_quest == "WIFE_MET") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_finance_quest_8",
choicesKey: "IR_wife_choices"
}, function (choice) {
if (choice == "IR_wife_yes") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_finance_quest_9_confirm"
});
missionVariables.IR_wife_status = "AFFAIR_CONFIRMED"
}
if (choice == "IR_wife_no") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_finance_quest_9_deny"
});
missionVariables.IR_wife_status = "AFFAIR_DENIED"
}
player.incrementFinanceStatus()
missionVariables.IR_finance_quest = "WAIT3"
missionVariables.IR_KORSHKOV_deadline = clock.days + 10
missionVariables.IR_offer = null
});
}
}
if (system.ID == 31) // KORSHKOV
{
if (missionVariables.IR_finance_quest == "WAIT" && clock.days >= missionVariables.IR_KORSHKOV_deadline) {
this._runScreen({
title: "OKB Korshkov",
overlay: "IR_korshlogo.png",
messageKey: "IR_finance_quest_1"
});
player.incrementFinanceStatus()
missionVariables.IR_finance_quest = "COLLECTION"
missionVariables.IR_KORSHKOV_deadline = null
return;
}
if (missionVariables.IR_finance_quest == "COLLECTION") {
this.checkManifest()
if (missionVariables.IR_manifestOK == "TRUE") {
this._runScreen({
title: "OKB Korshkov",
overlay: "IR_korshlogo.png",
messageKey: "IR_finance_quest_2"
});
player.incrementFinanceStatus()
missionVariables.IR_KORSHKOV_deadline = clock.days + 10
missionVariables.IR_finance_quest = "WAIT2"
player.ship.manifest.radioactives -= 10
player.ship.manifest.alloys = -5
player.ship.manifest.minerals -= 2
player.ship.manifest.alienItems -= 2
player.ship.manifest.platinum -= 1
missionVariables.IR_manifestOK = null
return;
}
if (missionVariables.IR_manifestOK != "TRUE")
this._runScreen({
title: "OKB Korshkov",
overlay: "IR_korshlogo.png",
messageKey: "IR_finance_quest_3alt"
});
else return;
}
if (missionVariables.IR_finance_quest == "WAIT2" && clock.days >= missionVariables.IR_KORSHKOV_deadline) {
this._runScreen({
title: "OKB Korshkov",
overlay: "IR_korshlogo.png",
messageKey: "IR_finance_quest_3"
});
player.incrementFinanceStatus()
missionVariables.IR_KORSHKOV_deadline = null
missionVariables.IR_finance_quest = "IRRADIATE"
return;
}
if (missionVariables.IR_SDF_quest == "KORSHKOV") {
this._runScreen({
title: "OKB Korshkov",
overlay: "IR_korshlogo.png",
messageKey: "IR_SDF_quest_6"
});
player.incrementSDFStatus()
missionVariables.IR_SDF_deadline = clock.days + 10
missionVariables.IR_SDF_quest = "ANALYSIS"
player.ship.removeAllCargo()
missionVariables.IR_cargoCount = null
return;
}
if (missionVariables.IR_SDF_quest == "ANALYSIS" && clock.days >= missionVariables.IR_SDF_deadline)
{
this._runScreen({
title: "OKB Korshkov",
overlay: "IR_korshlogo.png",
messageKey: "IR_SDF_quest_7a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_SDF_quest_7b"
});
missionVariables.IR_SDF_quest = "DATA"
player.incrementSDFStatus()
this.incrementSDFQuestion()
missionVariables.IR_SDF_location = null
missionVariables.IR_SDF_location_name = null
}
});
return;
}
if (missionVariables.IR_status == "IR_IBANEZ_4") {
this._runScreen({
title: "OKB Korshkov",
overlay: "IR_korshlogo.png",
messageKey: "IR_KORSHKOV_intro",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_KORSHKOV_QUESTIONS"
return;
}
}
if (system.ID == 142) // Tibiri bar
{
if (missionVariables.IR_finance_quest == "WIFE_DOCKED") {
this._runScreen({
messageKey: "IR_finance_quest_7a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_finance_quest_7b"
});
player.incrementFinanceStatus()
player.credits += 1000
missionVariables.IR_offer = null
missionVariables.IR_finance_quest = "WIFE_MET"
}
});
}
if (missionVariables.IR_finance_quest == "WIFE" || missionVariables.IR_finance_quest == "WIFE_IDENTIFIED")
this._runScreen({
messageKey: "IR_finance_quest_7alt"
});
}
if (system.ID == 23) // Maenes
{
if (missionVariables.IR_defences_question_no == 3 && !missionVariables.IR_defences_quest) {
if (!missionVariables.IR_Maenes_visit) {
this._runScreen({
title: "QuiCo Pharmaceuticals",
overlay: "IR_quico_logo.png",
messageKey: "IR_defences_quest_1_alt"
});
missionVariables.IR_defences_quest = "DEMO_1"
}
if (missionVariables.IR_Maenes_visit == "TRUE") {
this._runScreen({
title: "QuiCo Pharmaceuticals",
overlay: "IR_quico_logo.png",
messageKey: "IR_defences_quest_1"
});
missionVariables.IR_defences_quest = "DEMO_1"
missionVariables.IR_Maenes_visit = null
}
}
if (missionVariables.IR_defences_quest == "DEMO_4") {
this._runScreen({
title: "QuiCo Pharmaceuticals",
overlay: "IR_quico_logo.png",
messageKey: "IR_defences_quest_4"
});
missionVariables.IR_defences_quest = "DEMO_5"
}
if (missionVariables.IR_defences_quest == "SABOTAGED") {
this._runScreen({
title: "QuiCo Pharmaceuticals",
overlay: "IR_quico_logo.png",
messageKey: "IR_defences_quest_5a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_defences_quest_5b"
});
player.incrementDefencesStatus()
missionVariables.IR_defences_quest = "DEMO_6"
missionVariables.IR_defences_quest_deadline = clock.days + 15
}
});
}
if (missionVariables.IR_status == "IR_sources_5") {
this._runScreen({
title: "QuiCo Pharmaceuticals",
overlay: "IR_quico_logo.png",
messageKey: "IR_sources_5a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_sources_5b"
});
mission.setInstructionsKey("IR_waitforinfo_brief")
missionVariables.IR_status = "IR_sources_6"
missionVariables.IR_epilogue_deadline = clock.days + 10
}
});
}
if (missionVariables.IR_status == "IR_LOA_6") {
this._runScreen({
title: "QuiCo Pharmaceuticals",
overlay: "IR_quico_logo.png",
messageKey: "IR_LOA_6"
});
mission.setInstructionsKey("IR_waitforinfo_brief")
missionVariables.IR_status = "IR_LOA_7"
missionVariables.IR_epilogue_deadline = clock.days + 10
}
}
if (system.ID == 35 && missionVariables.IR_status == "IR_KINNAIRD_1") //Atanon
{
this._runScreen({
messageKey: "IR_kinnaird_2"
});
missionVariables.IR_status = "IR_KINNAIRD_2"
}
if (system.ID == 41 && missionVariables.IR_status == "IR_KINNAIRD_2") //Orlaroor
{
this._runScreen({
messageKey: "IR_kinnaird_3"
});
missionVariables.IR_status = "IR_KINNAIRD_3"
mission.setInstructionsKey("IR_kinnaird_brief_3")
}
if (system.ID == 149 && missionVariables.IR_status == "IR_LOA_3") //Arenxeon
{
this._runScreen({
messageKey: "IR_LOA_4a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_LOA_4b"
});
missionVariables.IR_status = "IR_LOA_4"
missionVariables.IR_attack_deadline = clock.days + 10
mission.setInstructionsKey("IR_waitforinfo_brief")
}
});
}
if (system.ID == 63 && missionVariables.IR_status == "IR_sources_3") //Edsoan
{
this._runScreen({
messageKey: "IR_sources_4a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this._runScreen({
messageKey: "IR_sources_4b"
});
missionVariables.IR_status = "IR_sources_4"
mission.setInstructionsKey("IR_sources_brief_2")
}
});
}
//keep brackets
}
}
this.choiceEvaluation = function (choice) {
switch (missionVariables.IR_offer) {
case "IR_GSE_QUESTIONS": {
if (choice == "IR_B_finance_question_key") {
if (missionVariables.IR_finance_question_no == 1) {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_finance_answer_1a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this.incrementFinanceQuestion()
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_finance_answer_1b",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_GSE_QUESTIONS"
}
});
break;
}
if (missionVariables.IR_finance_question_no > 1) {
missionVariables.IR_asked_question = missionVariables.IR_finance_question_string
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_no_more_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
break;
}
}
if (choice == "IR_A_shipment_question_key") {
if (missionVariables.IR_shipment_question_no == 2 && !missionVariables.IR_GSE_loan) {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_loan_offer",
choicesKey: "IR_loan_choices"
}, function (choice) {
if (choice == "IR_loan_yes") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_loan_agreed"
});
missionVariables.IR_GSE_loan = "ACCEPTED"
player.credits += 500000
missionVariables.IR_loan_deadline = clock.days + 60
missionVariables.IR_loan_remaining = missionVariables.IR_loan_deadline - clock.days
mission.setInstructionsKey("IR_loan_amount")
missionVariables.IR_offer = null
}
if (choice == "IR_loan_no") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_loan_rejected",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = null
missionVariables.IR_GSE_loan = "REJECTED"
}
if (choice == "IR_loan_defer") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_loan_deferred",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_GSE_QUESTIONS"
missionVariables.IR_GSE_loan = "DEFERRED"
}
});
break;
}
if (missionVariables.IR_GSE_loan == "DEFERRED") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_loan_repeat_offer",
choicesKey: "IR_loan_choices"
}, function (choice) {
if (choice == "IR_loan_yes") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_loan_agreed"
});
missionVariables.IR_GSE_loan = "ACCEPTED"
player.credits += 500000
missionVariables.IR_loan_deadline = clock.days + 60
missionVariables.IR_loan_remaining = missionVariables.IR_loan_deadline - clock.days
mission.setInstructionsKey("IR_loan_amount")
missionVariables.IR_offer = null
}
if (choice == "IR_loan_no") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_loan_rejected",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_GSE_QUESTIONS"
missionVariables.IR_GSE_loan = "REJECTED"
}
if (choice == "IR_loan_defer") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_loan_deferred",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_GSE_QUESTIONS"
missionVariables.IR_GSE_loan = "DEFERRED"
}
});
break;
}
if (missionVariables.IR_GSE_loan == "ACCEPTED") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_loan_demand",
choicesKey: "IR_pay_choices"
}, function (choice) {
if (choice == "IR_pay_yes") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_pay_accepted",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_GSE_loan = "PAID"
player.credits -= 550000
missionVariables.IR_loan_deadline = null
missionVariables.IR_loan_remaining = null
mission.setInstructionsKey(null)
missionVariables.IR_offer = "IR_GSE_QUESTIONS"
}
if (choice == "IR_pay_no") {
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_GSE_pay_deferred",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_GSE_QUESTIONS"
}
});
break;
}
}
if (choice == "IR_E_exit_question_key")
return;
else
this._runScreen({
title: "Galactic Stock Exchange",
overlay: "IR_GSE_logo.png",
messageKey: "IR_negative_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_GSE_QUESTIONS"
break;
}
case "IR_KORSHKOV_QUESTIONS": {
if (choice == "IR_B_finance_question_key") {
if (missionVariables.IR_finance_question_no == 2) {
this._runScreen({
title: "OKB Korshkov",
overlay: "IR_korshlogo.png",
messageKey: "IR_KORSHKOV_finance_answer_1a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this.incrementFinanceQuestion()
this._runScreen({
title: "OKB Korshkov",
overlay: "IR_korshlogo.png",
messageKey: "IR_KORSHKOV_finance_answer_1b"
});
missionVariables.IR_offer = "IR_KORSHKOV_QUESTIONS"
missionVariables.IR_KORSHKOV_deadline = clock.days + 5
player.incrementFinanceStatus()
missionVariables.IR_offer = null
missionVariables.IR_finance_quest = "WAIT"
}
});
break;
}
if (missionVariables.IR_finance_question_no > 2) {
missionVariables.IR_asked_question = missionVariables.IR_finance_question_string
this._runScreen({
title: "OKB Korshkov",
overlay: "IR_korshlogo.png",
messageKey: "IR_no_more_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
break;
}
}
if (choice == "IR_E_exit_question_key") {
return;
} else
this._runScreen({
title: "OKB Korshkov",
overlay: "IR_korshlogo.png",
messageKey: "IR_negative_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_KORSHKOV_QUESTIONS"
break;
}
case "IR_JANES_QUESTIONS": {
if (choice == "IR_A_shipment_question_key") {
this._runScreen({
title: "Jane's Shipyard Intelligence",
overlay: "IR_janes_logo.png",
messageKey: "IR_no_more_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
break;
}
if (choice == "IR_C_SDF_question_key") {
if (missionVariables.IR_SDF_question_no == 1) {
this.incrementSDFQuestion()
this._runScreen({
title: "Jane's Shipyard Intelligence",
overlay: "IR_janes_logo.png",
messageKey: "IR_JANES_SDF_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
break;
}
if (missionVariables.IR_SDF_question_no > 1) {
this._runScreen({
title: "Jane's Shipyard Intelligence",
overlay: "IR_janes_logo.png",
messageKey: "IR_no_more_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
break;
}
}
if (choice == "IR_D_defences_question_key") {
this._runScreen({
title: "Jane's Shipyard Intelligence",
overlay: "IR_janes_logo.png",
messageKey: "IR_JANES_defences_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
break;
}
if (choice == "IR_E_exit_question_key")
return;
else
this._runScreen({
title: "Jane's Shipyard Intelligence",
messageKey: "IR_negative_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_JANES_QUESTIONS"
break;
}
case "IR_PIRATE_QUESTIONS": {
if (choice == "IR_A_shipment_question_key") {
if (missionVariables.IR_shipment_question_no == 2 && missionVariables.IR_shipment_quest == "SET") {
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_shipment_answer",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1)
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_shipment_offer",
choicesKey: "IR_pirate_choices"
}, function (choice) {
if (choice == "IR_pirate_yes") {
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_shipment_accepted"
});
missionVariables.IR_alsto = "HELP_ACCEPTED"
player.credits -= 250000
player.incrementShipmentStatus()
missionVariables.IR_offer = null
}
if (choice == "IR_pirate_no") {
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_shipment_declined"
});
missionVariables.IR_offer = null
missionVariables.IR_alsto = "HELP_DECLINED"
}
});
});
break;
}
if (missionVariables.IR_shipment_question_no == 1) {
this._runScreen({
title: " ",
messageKey: "IR_negative_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_PIRATE_QUESTIONS"
break;
}
if (missionVariables.IR_shipment_question_no == 2 && missionVariables.IR_alsto == "HELP_ACCEPTED")
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_shipment_confirm_help"
});
if (missionVariables.IR_shipment_question_no == 2 && missionVariables.IR_alsto == "HELP_DECLINED") {
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_shipment_deferred_help",
choicesKey: "IR_pirate_choices"
}, function (choice) {
if (choice == "IR_pirate_yes") {
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_shipment_accepted"
});
missionVariables.IR_alsto = "HELP_ACCEPTED"
player.credits -= 250000
player.incrementShipmentStatus()
missionVariables.IR_offer = null
}
if (choice == "IR_pirate_no") {
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_shipment_declined"
});
missionVariables.IR_offer = null
missionVariables.IR_alsto = "HELP_DECLINED"
}
});
if (missionVariables.IR_shipment_question_no == 2 && missionVariables.IR_shipment_quest != "SET") {
missionVariables.IR_asked_question = missionVariables.IR_shipment_question_string
this._runScreen({
title: " ",
messageKey: "IR_no_more_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
break;
}
}
}
if (choice == "IR_C_SDF_question_key") {
if (missionVariables.IR_SDF_question_no < 2)
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_SDF_answer_1",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
if (missionVariables.IR_SDF_question_no == 2)
this._runScreen({
title: " ",
messageKey: "IR_PIRATE_SDF_answer_2",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
if (missionVariables.IR_SDF_question_no > 2) {
this._runScreen({
title: " ",
messageKey: "IR_no_more_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
}
break;
}
if (choice == "IR_E_exit_question_key")
return;
else
this._runScreen({
title: " ",
messageKey: "IR_negative_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_PIRATE_QUESTIONS"
break;
}
case "IR_YOKOHAMA_QUESTIONS": {
if (choice == "IR_A_shipment_question_key") {
if (missionVariables.IR_shipment_question_no == 1) {
this.incrementShipmentQuestion()
this._runScreen({
title: "Yokohama Exports",
overlay: "IR_yk_logo.png",
messageKey: "IR_YOKOHAMA_shipment_answer_1"
});
missionVariables.IR_YOKOHAMA_deadline = clock.days + 30
missionVariables.IR_shipment_quest = "SET"
missionVariables.IR_offer = null
player.incrementShipmentStatus()
break;
}
if (missionVariables.IR_shipment_question_no == 2 && clock.days < missionVariables.IR_YOKOHAMA_deadline) {
this._runScreen({
title: "Yokohama Exports",
overlay: "IR_yk_logo.png",
messageKey: "IR_YOKOHAMA_shipment_answer_2",
choicesKey: "IR_YOKOHAMA_choices"
}, function (choice) {
if (choice == "IR_YOKOHAMA_yes") {
if (player.credits >= 1000000) {
this._runScreen({
title: "Yokohama Exports",
overlay: "IR_yk_logo.png",
messageKey: "IR_YOKOHAMA_shipment_agreed"
});
missionVariables.IR_shipment_quest = "SUCCESS"
missionVariables.IR_shipment_quest_method = "PURCHASED"
missionVariables.IR_YOKOHAMA_deadline = null
++missionVariables.IR_quest_count
this.incrementShipmentQuestion()
player.clearShipmentStatus()
missionVariables.IR_offer = null
player.credits -= 1000000
} else {
this._runScreen({
title: "Yokohama Exports",
overlay: "IR_yk_logo.png",
messageKey: "IR_YOKOHAMA_shipment_nomoney"
});
missionVariables.IR_offer = null
}
}
if (choice == "IR_YOKOHAMA_no") {
this._runScreen({
title: "Yokohama Exports",
overlay: "IR_yk_logo.png",
messageKey: "IR_YOKOHAMA_shipment_declined"
});
missionVariables.IR_shipment_quest = "ENROUTE"
this.incrementShipmentQuestion()
missionVariables.IR_offer = null
if (missionVariables.IR_alsto) {
player.incrementShipmentStatus()
}
}
if (choice == "IR_YOKOHAMA_defer") {
this._runScreen({
title: "Yokohama Exports",
overlay: "IR_yk_logo.png",
messageKey: "IR_YOKOHAMA_shipment_defer"
});
missionVariables.IR_offer = null
}
});
break;
}
if (missionVariables.IR_shipment_question_no == 2 && clock.days > missionVariables.IR_YOKOHAMA_deadline) {
this._runScreen({
title: "Yokohama Exports",
overlay: "IR_yk_logo.png",
messageKey: "IR_YOKOHAMA_shipment_toolate"
});
missionVariables.IR_shipment_quest = "DISPATCHED"
player.clearShipmentStatus()
missionVariables.IR_offer = null
break;
}
if (missionVariables.IR_shipment_question_no > 2) {
missionVariables.IR_asked_question = missionVariables.IR_shipment_question_string
this._runScreen({
title: "Yokohama Exports",
overlay: "IR_yk_logo.png",
messageKey: "IR_no_more_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
break;
}
}
if (choice == "IR_E_exit_question_key")
return;
else
this._runScreen({
title: "Yokohama Exports",
overlay: "IR_yk_logo.png",
messageKey: "IR_negative_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_YOKOHAMA_QUESTIONS"
break;
}
case "IR_PW_QUESTIONS": {
if (choice == "IR_C_SDF_question_key") {
if (missionVariables.IR_SDF_question_no == 2) {
this._runScreen({
title: "PleasureWorld",
overlay: "IR_pw_logo.png",
messageKey: "IR_PW_SDF_answer_1",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this.incrementSDFQuestion()
this._runScreen({
title: " ",
messageKey: "IR_SDF_quest_1"
});
missionVariables.IR_SDF_quest = "ADDRESS"
missionVariables.IR_SDF_deadline = clock.days + 10
}
});
break;
}
if (missionVariables.IR_SDF_question_no == 3) {
this._runScreen({
title: "PleasureWorld",
overlay: "IR_pw_logo.png",
messageKey: "IR_no_more_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
break;
}
if (missionVariables.IR_SDF_question_no == 5) {
this._runScreen({
title: "PleasureWorld",
overlay: "IR_devries.png",
messageKey: "IR_PW_SDF_answer_2"
});
this.incrementSDFQuestion()
missionVariables.IR_SDF_quest = "PHOTO"
missionVariables.IR_SDF_deadline = clock.days + 35
} else {
this._runScreen({
title: "PleasureWorld",
overlay: "IR_pw_logo.png",
messageKey: "IR_negative_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
}
break;
}
if (choice == "IR_E_exit_question_key") {
missionVariables.IR_offer = "IR_ASKED"
return;
} else
this._runScreen({
title: "PleasureWorld",
overlay: "IR_pw_logo.png",
messageKey: "IR_negative_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_PW_QUESTIONS"
break;
}
case "IR_NWE_QUESTIONS": {
if (choice == "IR_C_SDF_question_key") {
if (missionVariables.IR_SDF_question_no == 4) {
this._runScreen({
title: "Naval Weapons Establishment",
overlay: "IR_NWE_logo.png",
messageKey: "IR_NWE_SDF_answer_1a",
choicesKey: "IR_continue"
}, function (choice) {
if (choice == 1) {
this.incrementSDFQuestion()
this._runScreen({
title: " ",
overlay: "IR_NWE_logo.png",
messageKey: "IR_NWE_SDF_answer_1b"
});
}
missionVariables.IR_offer = null
});
}
if (missionVariables.IR_SDF_question_no < 4 || missionVariables.IR_SDF_question_no > 4) {
this._runScreen({
title: "Naval Weapons Establishment",
overlay: "IR_NWE_logo.png",
messageKey: "IR_negative_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
}
break;
}
if (choice == "IR_D_defences_question_key") {
if (missionVariables.IR_defences_question_no < 3) {
this._runScreen({
title: "Naval Weapons Establishment",
overlay: "IR_NWE_logo.png",
messageKey: "IR_NWE_defences_answer_1"
});
missionVariables.IR_defences_question_no = 3
missionVariables.IR_offer = null
player.incrementDefencesStatus()
break;
}
if (missionVariables.IR_defences_question_no == 3) {
this._runScreen({
title: "Naval Weapons Establishment",
overlay: "IR_NWE_logo.png",
messageKey: "IR_no_more_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
break;
}
}
if (choice == "IR_E_exit_question_key")
return;
else
this._runScreen({
title: "Naval Weapons Establishment",
messageKey: "IR_negative_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_NWE_QUESTIONS"
break;
}
case "IR_MAENES_QUESTIONS": {
if (choice == "IR_D_defences_question_key") {
if (missionVariables.IR_defences_question_no == 1) {
this._runScreen({
title: "QuiCo Pharmaceuticals",
overlay: "IR_quico_logo.png",
messageKey: "IR_MAENES_defences_answer_1"
});
this.incrementDefencesQuestion()
missionVariables.IR_offer = null
missionVariables.IR_Maenes_visit = "TRUE"
break;
}
if (missionVariables.IR_defences_question_no >= 2) {
this._runScreen({
title: "QuiCo Pharmaceuticals",
overlay: "IR_quico_logo.png",
messageKey: "IR_no_more_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
break;
}
}
if (choice == "IR_E_exit_question_key")
return;
else
this._runScreen({
title: "QuiCo Pharmaceuticals",
overlay: "IR_quico_logo.png",
messageKey: "IR_negative_answer",
choicesKey: "IR_questions"
}, this.choiceEvaluation);
missionVariables.IR_offer = "IR_MAENES_QUESTIONS"
break;
}
}
}
|