| Back to Index | Page generated: Apr 20, 2026, 4:52:51 AM |
| from Expansion Manager's OXP list | from Expansion Manifest | |
|---|---|---|
| Description | Adds planet-based Oo-Haul missions to planetary locations of PlanetFall2. | Adds planet-based Oo-Haul missions to planetary locations of PlanetFall2. |
| Identifier | oolite.oxp.Thargoid.PlanetFall2_Oo-Haul | oolite.oxp.Thargoid.PlanetFall2_Oo-Haul |
| Title | PlanetFall2 Oo-Haul Missions | PlanetFall2 Oo-Haul Missions |
| Category | Missions | Missions |
| Author | Thargoid | Thargoid |
| Version | 2.1 | 2.1 |
| Tags | ||
| Required Oolite Version | ||
| Maximum Oolite Version | ||
| Required Expansions |
|
|
| Optional Expansions | ||
| Conflict Expansions | ||
| Information URL | http://wiki.alioth.net/index.php/Planetfall2_OXP | n/a |
| Download URL | https://wiki.alioth.net/img_auth.php/7/76/PlanetFall2_Oo-Haul.oxz | n/a |
| License | CC-BY-SA-NC 3.0 | CC-BY-SA-NC 3.0 |
| File Size | n/a | |
| Upload date | 1775649760 |
PlanetFall2 Oo-Haul Mission OXP by Thargoid. This is an add-on mission OXP for PlanetFall2 and Oo-Haul. It introduces a new planet-side location on the prime planet of systems with non-Anarchy governments and a population of over 30 billion, that of the Oo-Haul distribution centre. At this centre it is possible to stock up on essentials, but also to undertake a paid emergency Oo-Haul escort mission. This is to link up with an Oo-Hauler in orbit near the system main station and escort it out to either the witchpoint or the system constore where present. -------------------------------------------------------------- Requirements: This OXP requires PlanetFall2 (or newer) and Oo-Haul v2 installed, and to give the constore version of the mission you will need Your Ad Here (plus at least one set) installed. -------------------------------------------------------------- License: This OXP is released under the Creative Commons Attribution - Non-Commercial - Share Alike 3.0 license with the following clauses: * Whilst you are free (and encouraged) to re-use any of the scripting, models or texturing in this OXP, the usage must be distinct from that within this OXP. Unique identifiers such as (but not limited to) unique shipdata.plist entity keys, mission variables, script names (this.name), equipment identity strings (EQ_), description list arrays and entity roles must not be re-used without prior agreement. Basically if it's unique or would identify or overwrite anything in the original OXP, then you may not re-use it (for obvious compatibility reasons). * rebundling of this OXP within another distribution is permitted as long as it is unchanged. The following derivates however are permitted and except from the above: * the conversion of files between XML and openStep. * the merging of files with other files of the same type from other OXPs. * The license information (either as this file or merged into a larger one) must be included in the OXP. * Even though it is not compulsory, if you are re-using any sizable or recognisable piece of this OXP, please let me know :) AI was used in the creation of the landing site images, https://www.freepik.com/pikaso/ai-image-generator -------------------------------------------------------------- Instructions: Unzip the file, and then move the folder "PlanetFall Mission - Oo-Haul 2.0.oxp" to the AddOns directory of your Oolite installation. Then start the game up and the ships should be added. -------------------------------------------------------------- Version history: 20/03/2009 - Version 1.00, full release. 15/04/2010 - Version 1.10, update for Oolite 1.74 (no longer compatible with lower versions). 13/02/2011 - Version 1.11, removal of upper limit, to allow running with 1.75 21/03/2026 - Version 2.0, Updated to work with PF2 and Oo-Haul v2. - Updated textures for Oo-Hauler containers. - New landing site images for Distribution centres. - Added links to GalCop Missions reputations. - Removed redundant models and textures. 02/04/2026 - Version 2.1, Added code to allow planet-base distribution centres to be chosen as destinations for shuttles. -------------------------------------------------------------- Acknowledgements: Oo-Haul is by Dr Nil, with recent updating by Ark and Eric Walch. Your Ad Here is also by Dr Nil, with many other contributors. With thanks to Eric and Kaks for their contributions and discussion on the AIs for this OXP, and for the original inspiration to link Oo-Haul into Planetfall by Ark.
| Name |
|---|
| PF Oohaul Crate |
| Cargo container |
| Oo-Hauler |
| PFoohaulerWit |
| Oo-Haul Distribution Centre |
| Path | |
|---|---|
| Scripts/PFoohaul_cargo.js | "use strict";
this.name = "PFoohaul_cargo";
this.author = "Original by Ark, modified by Thargoid";
this.copyright = "Creative Commons Attribution - Non-Commercial - Share Alike 3.0 license with clauses - see readme.txt.";
this.description = "Code for spawn oohaul cargo";
this.version = "1.10";
//-------------------------------------------------------------------------------------------------------------
this.shipDied = function (whom, why) {
this.ship.owner.spawn("PFoohaulcargo", 10);
if (whom.isPlayer) {
missionVariables.PFoohaul_credits = 0;
missionVariables.PFoohaul_mis_done = "TRAITOR";
} else {
missionVariables.PFoohaul_credits -= 500 // decrement credits with 500 on each death.
if (--missionVariables.PFoohaul_cargo == 0) missionVariables.PFoohaul_credits = 500 // decrement by one. And when zero set credits to 500.
}
} |
| Scripts/PFoohaul_conditions.js | "use strict";
this.name = "PlanetFall2_Oohaul_Conditions";
this.author = "phkb";
this.copyright = "CC-BY-SA-NC 4.0";
this.description = "Condition script";
//-------------------------------------------------------------------------------------------------------------
// ship condition script
this.allowSpawnShip = function(shipKey) {
if (shipKey == "planetFall2_mainSurface_OoHaulDist") {
if (system.government > 0 && system.population > 30) return true;
}
return false;
} |
| Scripts/PFoohauler.js | "use strict";
this.name = "PFoohauler";
this.author = "Thargoid";
this.copyright = "Creative Commons Attribution - Non-Commercial - Share Alike 3.0 license with clauses - see readme.txt.";
this.description = "Code for Planetfall Oohauler";
this.version = "2.0";
//-------------------------------------------------------------------------------------------------------------
this.shipDied = function (whom, why) {
missionVariables.PFoohaul_credits = 0;
missionVariables.PFoohaul_mis_done = null;
missionVariables.PFoohaul_mis_stage = "1";
}
//-------------------------------------------------------------------------------------------------------------
this.shipWillExitWitchspace = function () {
this.ship.switchAI("route1traderAI.plist");
delete this.shipDied;
}
//-------------------------------------------------------------------------------------------------------------
this.rewardPlayer1 = function() {
this.ship.commsMessage(expandMissionText("PFoohaul_rerouted"));
this.rewardPlayerFinal();
}
//-------------------------------------------------------------------------------------------------------------
this.rewardPlayer2 = function() {
this.ship.commsMessage(expandMissionText("PFoohaul_ready_to_jump"));
this.rewardPlayerFinal();
}
//-------------------------------------------------------------------------------------------------------------
this.rewardPlayerFinal = function () {
if (worldScripts.GalCopBB_Reputation) {
var rep = worldScripts.GalCopBB_Reputation;
rep.$adjustReputationForEntity(expandDescription("[gcm_reputation_localgov]"), system.ID, "Success", 1, 1);
}
player.credits += parseInt(missionVariables.PFoohaul_credits);
missionVariables.PFoohaul_credits = 0;
missionVariables.PFoohaul_mis_done = null;
missionVariables.PFoohaul_mis_stage = "1";
}
//-------------------------------------------------------------------------------------------------------------
this.missionDone = function () {
missionVariables.PFoohaul_mis_stage = "3";
missionVariables.PFoohaul_mis_done = "YES";
}
//-------------------------------------------------------------------------------------------------------------
this.locateConstore = function () {
this.storeArray = system.shipsWithPrimaryRole("constore");
if (this.storeArray.length == 0) { // where'd the constore go?
this.ship.switchAI("PFoohaulWitAI.plist"); // let's go to the witchpoint instead then
this.ship.AIState = "HEAD_FOR_WITCHPOINT";
} else {
this.ship.target = this.storeArray[0];
this.ship.reactToAIMessage("CONSTORE_FOUND");
}
}
//-------------------------------------------------------------------------------------------------------------
this.locateJumpPoint = function () {
this.buoyArray = system.shipsWithPrimaryRole("buoy-witchpoint");
if (this.buoyArray.length == 0) { // where'd the witchpoint buoy go?
this.ship.reactToAIMessage("WITCHBUOY_NOT_FOUND");
} else {
this.ship.target = this.buoyArray[0];
this.ship.reactToAIMessage("WITCHBUOY_FOUND");
}
} |
| Scripts/PlanetFall_OoHaul.js | "use strict";
this.name = "PlanetFall_Oohaul";
this.author = "Thargoid";
this.copyright = "Creative Commons Attribution - Non-Commercial - Share Alike 3.0 license with clauses - see readme.txt.";
this.description = "Oo-Haul escort mission from the main planet to the witchpoint & constore.";
this.version = "2.0";
//-------------------------------------------------------------------------------------------------------------
this.startUp = function () {
missionVariables.PFoohaul_mis_stage = "1";
// if the player has attached one of the transports, don't offer any more missions (but have a random change of having it cleared)
if (missionVariables.PFoohaul_badrep == "Y") {
if (Math.random() > 0.001) {
missionVariables.PFoohaul_mis_stage = "4";
} else {
missionVariables.PFoohaul_badrep = null;
}
}
var pf = worldScripts.PlanetFall2;
pf._landingImages["oohaul"] = ["oohaul1.png", "oohaul2.png", "oohaul3.png", "oohaul4.png", "oohaul5.png","oohaul6.png"];
var pfai = worldScripts.planetFall2_priorityAI;
pfai._landingPriority["planetFall2_mainSurface_OoHaulDist"] = 1;
}
//-------------------------------------------------------------------------------------------------------------
this.shipExitedWitchspace = function () {
if (missionVariables.PFoohaul_mis_stage == "2" || missionVariables.PFoohaul_mis_stage == "3") {
mission.setInstructionsKey(null);
missionVariables.PFoohaul_mis_stage = "1";
if (missionVariables.PFoohaul_mis_done == "TRAITOR") missionVariables.PFoohaul_mis_stage = "4"
missionVariables.PFoohaul_mis_done = null;
}
}
//-------------------------------------------------------------------------------------------------------------
this.missionScreenOpportunity = function () {
if (!player.ship.dockedStation.hasRole("planetFall2_mainSurface_oohaul") && !player.ship.dockedStation.hasRole("constore")) { // if we're not at a constore or the Oohaul planetside distribution centre, bail out here
return;
}
if (player.ship.dockedStation.hasRole("planetFall2_mainSurface_oohaul") && missionVariables.PFoohaul_mis_stage == "1") {
this.PFoohaul_conArray = system.shipsWithPrimaryRole("constore");
if (system.government > 3) {
missionVariables.PFoohaul_credits = 2276;
if (this.PFoohaul_conArray.length > 0) {
mission.runScreen({
titleKey: "PFoohaul_con_title",
messageKey: "PFoohaul_con_desc_lodanger",
choicesKey: "PFoohaul_con_choice",
shipKey: "PFoohaulerWit"
},
this.choices);
} else {
mission.runScreen({
titleKey: "PFoohaul_wit_title",
messageKey: "PFoohaul_wit_desc_lodanger",
choicesKey: "PFoohaul_wit_choice",
shipKey: "PFoohaulerWit"
},
this.choices);
}
missionVariables.PFoohaul_mis_stage = "2";
} else {
missionVariables.PFoohaul_credits = 4330;
if (this.PFoohaul_conArray.length > 0) {
mission.runScreen({
titleKey: "PFoohaul_con_title",
messageKey: "PFoohaul_con_desc_hidanger",
choicesKey: "PFoohaul_con_choice",
shipKey: "PFoohaulerCon"
},
this.choices);
} else {
mission.runScreen({
titleKey: "PFoohaul_wit_title",
messageKey: "PFoohaul_wit_desc_hidanger",
choicesKey: "PFoohaul_wit_choice",
shipKey: "PFoohaulerCon"
},
this.choices);
}
missionVariables.PFoohaul_mis_stage = "2";
}
return;
}
if (player.ship.dockedStation.hasRole("constore") && missionVariables.PFoohaul_mis_stage == "3") {
if (missionVariables.PFoohaul_mis_done == "YES") {
mission.runScreen({
titleKey: "PFoohaul_complete_title",
messageKey: "PFoohaul_con_desc_docked"
});
missionVariables.PFoohaul_mis_done = null;
player.credits += parseInt(missionVariables.PFoohaul_credits);
missionVariables.PFoohaul_credits = null;
missionVariables.PFoohaul_mis_stage = "1";
mission.setInstructionsKey(null)
if (worldScripts.GalCopBB_Reputation) {
var rep = worldScripts.GalCopBB_Reputation;
rep.$adjustReputationForEntity(expandDescription("[gcm_reputation_localgov]"), system.ID, "Success", 1, 1);
}
} else if (missionVariables.PFoohaul_mis_done === "TRAITOR") {
mission.runScreen({
titleKey: "PFoohaul_title",
messageKey: "PFoohaul_traitor",
});
mission.setInstructions(null);
missionVariables.PFoohaul_credits = null;
missionVariables.PFoohaul_mis_stage = null;
missionVariables.PFoohaul_badrep = "Y";
if (worldScripts.GalCopBB_Reputation) {
var rep = worldScripts.GalCopBB_Reputation;
rep.$adjustReputationForEntity(expandDescription("[gcm_reputation_localgov]"), system.ID, "Failed", 1, 1);
}
} else {
missionVariables.PFoohaul_mis_stage = null;
missionVariables.PFoohaul_credits = null;
mission.setInstructionsKey(null)
}
}
}
//-------------------------------------------------------------------------------------------------------------
this.shipWillLaunchFromStation = function () {
if (missionVariables.PFoohaul_mis_stage == "0") {
missionVariables.PFoohaul_mis_stage = "1";
}
this.PFoohaul_conArray = system.shipsWithPrimaryRole("constore");
}
//-------------------------------------------------------------------------------------------------------------
this.shipLaunchedFromStation_hold = function() {
if (this.oohauler) {
this.oohauler.beaconLabel = this.oohauler.displayName;
this.oohauler = null;
delete this.shipLaunchedFromStation;
}
}
//-------------------------------------------------------------------------------------------------------------
this.choices = function (choice) {
if (choice == "PFoohaul_no" && missionVariables.PFoohaul_mis_stage == "2") {
missionVariables.PFoohaul_mis_stage = "0";
missionVariables.PFoohaul_credits = 0;
return;
}
if (choice == "PFoohaul_yes_con" && missionVariables.PFoohaul_mis_stage == "2") {
var oohaul = system.addShips("PHoohaulerCon", 1, system.mainStation.position.add([2000, 2000, 0]), 100);
if (oohaul && oohaul.length > 0) {
missionVariables.PFoohaul_mis_stage = "3";
missionVariables.PFoohaul_cargo = 3;
// make sure the player can keep up
if (oohaul[0].maxSpeed > player.ship.maxSpeed) {
oohaul[0].maxSpeed = player.ship.maxSpeed - 5;
}
this.oohauler = oohaul[0];
this.shipLaunchedFromStation = this.shipLaunchedFromStation_hold;
mission.setInstructionsKey("PFoohaul_con_desc_short");
return;
} else {
mission.runScreen({
titleKey: "PFoohaul_title",
messageKey: "PFoohaul_spawn_fail",
model: "PFoohaulerCon"
});
missionVariables.PHoohaul_mis_stage = null;
return;
}
}
if (choice == "PFoohaul_yes_wit" && missionVariables.PFoohaul_mis_stage == "2") {
var oohaul = system.addShips("PFoohaulerWit", 1, system.mainStation.position.add([2000, 2000, 0]), 100);
if (oohaul && oohaul.length > 0) {
missionVariables.PFoohaul_mis_stage = "3";
missionVariables.PFoohaul_cargo = 3;
// make sure the player can keep up
if (oohaul[0].maxSpeed > player.ship.maxSpeed) {
oohaul[0].maxSpeed = player.ship.maxSpeed - 5;
}
this.oohauler = oohaul[0];
this.shipLaunchedFromStation = this.shipLaunchedFromStation_hold;
mission.setInstructionsKey("PFoohaul_wit_desc_short");
return;
} else {
mission.runScreen({
titleKey: "PFoohaul_title",
messageKey: "PFoohaul_spawn_fail",
model: "PFoohaulerCon"
});
missionVariables.PHoohaul_mis_stage = null;
return;
}
}
} |