Difference between revisions of "User talk:Wildeblood"

From Elite Wiki
(Forum is down again: new section)
(Forum is down again: Update)
 
Line 105: Line 105:
 
== Forum is down ''again'' ==
 
== Forum is down ''again'' ==
  
My response to your latest post:
+
Heh! It just resurfaced after I copied my response to here! So I've blanked the copy from here.
 
 
Wildeblood wrote: ↑Sun Jun 28, 2026 11:05 am
 
Cholly, please don't read this as sounding ungrateful, because I'm not, but since you seem to be determined to find and list them all, there are more interesting things than the sorting order you could be reporting. Firstly, the question of the day; do those new and altered commodities try to establish new trade routes or do they just add more options to the 0 <--> 7 routes? Secondly, which ones restrict their changes to trade-goods.plist, and which ones link to market scripts? Can you shed light on those questions?
 
 
 
 
 
 
 
The scripts are all on [https://ooliteproject.github.io/oolite-expansion-catalog/index.html Hiran's Index] - I can't tell whether they include "market scripts" or not.
 
 
 
 
 
 
 
'''Darkside Moonshine Distillery''': 1 <--> 7
 
::(I suspect it is a typo, since Stormrider describes "1" as "rich ind") - and there must be some sort of market script to allow his pricing by distance.
 
 
 
 
 
'''Fuel Tweaks''': 0 <--> 4 (Phkb's Quirium Fuel)
 
 
 
 
 
'''Montanas Resource Pack 01''': 0 <--> 7
 
::(I suspect another typo: Montana describes "0" as "Mainly Industrial")
 
 
 
 
 
'''More Moolah''': just 0 <--> 7 routes
 
 
 
 
 
'''Solar Harvest OXP''': 0 <--> 7
 
::(not on Hiran's Index but includes a script which seems to me to affect markets)
 
 
 
 
 
'''SW Economy''': just 0 <--> 7 routes
 
::(I wonder if medicine should be cheapest at rich agriculturals from Stranger's comments?) There must be a market script - especially with Phkb's most recent reworkings of it
 
 
 
 
 
 
 
 
 
 
 
 
 
''Appendix''
 
 
 
'''Solar Harvest scripts:'''
 
 
 
 
 
''CoronalHarvesterConditions.js'' - deals with spawning
 
''CoronalHarvesterScripts.js'' - the code below will be jumbled by the wiki's display
 
 
 
"use strict";
 
this.name = "Coronal Harvester Script";
 
this.author = "ocz";
 
this.copyright = "2016 ocz";
 
this.licence = "CC BY-NC-SA 4.0";
 
 
 
this._collectorCounter = 0;
 
this._inCoronaAndFull = false;
 
this._harvesterEng = new SoundSource;
 
this._harvesterEng.sound = Sound.load("harvesterEng1sec.ogg");
 
this._harvesterRun  = new SoundSource;
 
this._harvesterRun.sound = Sound.load("harvesterRun2.ogg");
 
this._harvesterRun.loop = true;
 
this._harvesterDiseng  = new SoundSource;
 
this._harvesterDiseng.sound = Sound.load("harvesterDiseng.ogg");
 
 
 
 
 
this._vicinitySunFunction = function() {
 
//log("Distance: " + system.sun.position.distanceTo(player.ship.position) + ", Radiusfactor: " + system.sun.position.distanceTo(player.ship.position)/system.sun.radius);
 
//log("Distance: " + system.sun.position.distanceTo(player.ship.position) + ", Radiusfactor: " + system.sun.position.distanceTo(player.ship.position)/system.sun.radius);
 
//if (system.sun.position.distanceTo(player.ship.position)/system.sun.radius < 1.5) this._proximitySunTimer.start(); else this._proximitySunTimer.stop();
 
 
//if (player.ship.equipmentStatus("EQ_OCZ_CORONALHARVESTER") === "EQUIPMENT_OK") {
 
 
if (system.sun.position.distanceTo(player.ship.position)/system.sun.radius < 1.5) {
 
if (system.sun.position.distanceTo(player.ship.position)/system.sun.radius < 1.3) {
 
if (system.sun.position.distanceTo(player.ship.position)/system.sun.radius < 1.2) {
 
if (system.sun.position.distanceTo(player.ship.position)/system.sun.radius < 1.155) {
 
if (this._vicinitySunTimer.interval !== 0.25) this._vicinitySunTimer.interval = 0.25;
 
}
 
else if (this._vicinitySunTimer.interval !== 0.5) this._vicinitySunTimer.interval = 0.5;
 
}
 
else if (this._vicinitySunTimer.interval !== 0.75) this._vicinitySunTimer.interval = 0.75;
 
}
 
else if (this._vicinitySunTimer.interval !== 1) this._vicinitySunTimer.interval = 1;
 
this._collectPlasma();
 
//log("Height: " + system.sun.position.distanceTo(player.ship.position)/system.sun.radius + ", Interval: " + this._vicinitySunTimer.interval + "s");
 
}
 
/*else this._vicinitySunTimer.interval = 2;
 
 
//else  if (this._vicinitySunTimer.interval === 0.25) this._vicinitySunTimer.interval === 0.5;
 
 
} */
 
else {
 
if (this._vicinitySunTimer.interval !== 2) this._vicinitySunTimer.interval = 2;
 
 
if (this._harvesterRun.isPlaying) {
 
this._harvesterDiseng.play();
 
this._harvesterRun.stop();
 
} else if (this._harvesterEng.isPlaying) {
 
this._harvesterDiseng.play();
 
this._harvesterEng.stop();
 
}
 
if (this._inCoronaAndFull === true) this._inCoronaAndFull = false;
 
}
 
//}
 
 
}
 
 
 
/*this._proximitySunFunction = function() {
 
//log("Distance: " + system.sun.position.distanceTo(player.ship.position) + ", Radiusfactor: " + system.sun.position.distanceTo(player.ship.position)/system.sun.radius);
 
//log("Distance: " + system.sun.position.distanceTo(player.ship.position) + ", Radiusfactor: " + system.sun.position.distanceTo(player.ship.position)/system.sun.radius);
 
if (system.sun.position.distanceTo(player.ship.position)/system.sun.radius < 1.155) this._collectPlasma();
 
else if (!this._vicinitySunTimer.isRunning) {
 
this._vicinitySunTimer.start();
 
this._proximitySunTimer.stop();
 
}*/
 
/*else {
 
if (this._harvesterRun.isPlaying) {
 
this._harvesterDiseng.play();
 
this._harvesterRun.stop();
 
} else if (this._harvesterEng.isPlaying) {
 
this._harvesterDiseng.play();
 
this._harvesterEng.stop();
 
}
 
if (this._inCoronaAndFull === true) this._inCoronaAndFull = false;
 
 
}*/
 
//}
 
 
 
 
 
this._updateSolarStationMarket = function() {
 
if (this._solarStation){
 
 
//By 10% chance you can either sell narcotics or guns to the good people of the station.
 
if (Math.random() > 0.1) this._solarStation.setMarketQuantity("narcotics",1);
 
else this._solarStation.setMarketQuantity("narcotics",0);
 
if (Math.random() > 0.1) this._solarStation.setMarketQuantity("firearms",1);
 
else this._solarStation.setMarketQuantity("firearms",0);
 
 
if (this._solarStation.market.coronal_plasma < 40) {
 
this._solarStation.setMarketQuantity("coronal_plasma",35+(math.round(Math.random()*10)));
 
}
 
else this._solarStation.setMarketQuantity("coronal_plasma",this._solarStation.market.coronal_plasma.quantity + (Math.round(Math.random()*10))-5);
 
 
// code for supply vessle Cobra MK.III (+ 3 x Sidewinder escort if synchronized torus drive is installed?)
 
// carrying 30t quirium_plasma and other goods to the mainstation and 5t? alloys, 1t? machinery and 10t? food back.
 
// if 100t quirium_plasma are excedded. 
 
 
}
 
 
}
 
 
 
// generates quirium_plasma out of coronal_plasma.
 
this._solarStationFuelGeneration = function() {
 
if (this._solarStation){
 
for (var i = 0; (i<5||this._solarStation.market.coronal_plasma > 5);i++) {
 
if (this._solarStation.market.coronal_plasma > 2) {
 
this._solarStation.setMarketQuantity("coronal_plasma",this._solarStation.market.coronal_plasma-2);
 
this._solarStation.setMarketQuantity("quirium_plasma",this._solarStation.market.quirium_plasma+1);
 
}
 
}
 
}
 
}
 
 
 
this._solarStationMarketUpdateTimer = new Timer(this, this._updateSolarStationMarket, 0, 1800);
 
this._solarStationFuelGenerationTimer = new Timer(this, this._solarStationFuelGeneration, 0, 300);
 
this._vicinitySunTimer = new Timer(this, this._vicinitySunFunction, -1, 2);
 
//this._proximitySunTimer = new Timer(this, this._proximitySunFunction, -1, 0.25);
 
 
 
this._collectPlasma = function() {
 
if (player.ship.cargoSpaceAvailable > 0 /*&& player.ship.equipmentStatus("EQ_OCZ_CORONALHARVESTER") === "EQUIPMENT_OK"*/) {
 
this._collectorCounter++;
 
if (!this._harvesterRun.isPlaying)
 
if (!this._harvesterEng.isPlaying) this._harvesterEng.play();
 
else {
 
this._harvesterRun.play();
 
this._harvesterEng.stop();
 
}
 
//if (this._collectorCounter > 29) {
 
if (this._collectorCounter > 10) {
 
if (this._inCoronaAndFull === true) this._inCoronaAndFull === false;
 
this._collectorCounter = 0;
 
player.ship.manifest.coronal_plasma++;
 
player.consoleMessage("Coronal Plasma harvested. (" + player.ship.manifest.coronal_plasma + "t total)",2);
 
}
 
}
 
else {
 
if (this._harvesterRun.isPlaying) {
 
this._harvesterDiseng.play();
 
this._harvesterRun.stop();
 
 
}
 
if (this._inCoronaAndFull === false) {
 
this._inCoronaAndFull = true;
 
player.consoleMessage("Cargo hold full.",3);
 
this._collectorCounter = 0;
 
}
 
}
 
}
 
 
 
this.shipWillEnterWitchspace = function() {
 
this._collectorStop();
 
this._solarStationMarketUpdateTimer.stop();
 
this._solarStationFuelGenerationTimer.stop();
 
if (this._solarStation) delete this._solarStation;
 
}
 
 
 
this.shipWillDockWithStation = this.shipDied = function() {
 
this._collectorStop();
 
}
 
 
 
this._collectorStop = function(){
 
 
 
this._vicinitySunTimer.stop();
 
//this._proximitySunTimer.stop();
 
this._harvesterEng.stop();
 
this._harvesterRun.stop();
 
this._harvesterDiseng.stop();
 
this._collectorCounter = 0;
 
 
 
}
 
 
 
/*this.shipExitedWitchspace = this.shipLaunchedFromStation = function() {
 
if (system.sun.position.distanceTo(player.ship.position)/system.sun.radius < 3)
 
this._vicinitySunTimer.start();
 
if (system.sun.position.distanceTo(player.ship.position)/system.sun.radius < 1.5)
 
this._proximitySunTimer.start();
 
}*/
 
 
 
/*this.shipDumpedCargo = function(cargo) {
 
    if (this._inCoronaAndFull === true) this._inCoronaAndFull = false;
 
}*/
 
 
 
this.shipExitedWitchspace = this.shipLaunchedFromStation = this.startUpComplete = function() {
 
if (player.ship.status === "STATUS_IN_FLIGHT" && player.ship.equipmentStatus("EQ_OCZ_CORONALHARVESTER") === "EQUIPMENT_OK") {
 
if (system.sun.position.distanceTo(player.ship.position)/system.sun.radius < 3)
 
this._vicinitySunTimer.start();
 
/*if (system.sun.position.distanceTo(player.ship.position)/system.sun.radius < 1.5)
 
this._proximitySunTimer.start();*/
 
}
 
 
}
 
 
 
/*this.addStation = function (offset) {
 
var stationPosition = player.ship.position;
 
//Sets the stations spawning location directly at the players position.
 
 
if (offset) {
 
//If an offset vector exists, its values are added to the spawning point.
 
stationPosition.x += offset.x;
 
stationPosition.y += offset.y;
 
stationPosition.z += offset.z;
 
}
 
 
var station = system.addShips("solar_station", 1, stationPosition, 0)[0];
 
return station;
 
}*/
 
 
 
this._addStation = function(seed) {
 
log("add");
 
var _planet = this._closestToSun();
 
//var _planetDirection = system.sun.position.subtract(_planet.position).direction();
 
var _planetDirection = _planet.position.subtract(system.sun.position).direction();
 
 
//var _stationDirection = Vector3D.randomDirection();
 
/*var _stationDirectionMem = new Vector3D(0,0,0);
 
_stationDirectionMem.x = system.scrambledPseudoRandomNumber(seed-3);
 
_stationDirectionMem.y = system.scrambledPseudoRandomNumber(seed-2);
 
_stationDirectionMem.z = system.scrambledPseudoRandomNumber(seed-1);
 
var _stationDirection = _stationDirectionMem.direction();
 
if (!(_stationDirection.subtract(_planetDirection).magnitude() > 1.9) || !(_stationDirection.subtract(_planetDirection).magnitude() < 0.1)) {
 
log("run");
 
for (var i = 0; i<100; i++) {
 
_stationDirectionMem.x = _stationDirectionMem.y;
 
_stationDirectionMem.y = _stationDirectionMem.z;
 
_stationDirectionMem.z = system.scrambledPseudoRandomNumber(seed+i);
 
_stationDirection = _stationDirectionMem.direction();
 
if (_stationDirection.subtract(_planetDirection).magnitude() > 1.9 || _stationDirection.subtract(_planetDirection).magnitude() < 0.1) break;
 
 
 
}
 
}*/
 
 
 
var _pseudoRandomDirectionMem = new Vector3D(0,0,0);
 
_pseudoRandomDirectionMem.x = system.scrambledPseudoRandomNumber(seed-3);
 
_pseudoRandomDirectionMem.y = system.scrambledPseudoRandomNumber(seed-2);
 
_pseudoRandomDirectionMem.z = system.scrambledPseudoRandomNumber(seed-1);
 
var _pseudoRandomDirection = _pseudoRandomDirectionMem.direction().multiply(/*system.sun.radius**/0.3);
 
/*if (!(_stationDirection.subtract(_planetDirection).magnitude() > 1.9) || !(_stationDirection.subtract(_planetDirection).magnitude() < 0.1)) {
 
log("run");
 
for (var i = 0; i<100; i++) {
 
_stationDirectionMem.x = _stationDirectionMem.y;
 
_stationDirectionMem.y = _stationDirectionMem.z;
 
_stationDirectionMem.z = system.scrambledPseudoRandomNumber(seed+i);
 
_stationDirection = _stationDirectionMem.direction();
 
if (_stationDirection.subtract(_planetDirection).magnitude() > 1.9 || _stationDirection.subtract(_planetDirection).magnitude() < 0.1) break;
 
 
 
}
 
}*/
 
var _stationDirection = _planetDirection.add(_pseudoRandomDirection).direction().multiply(system.sun.radius*3)
 
 
 
//50148
 
/*log("run2");
 
if (_stationDirection.subtract(_planetDirection).magnitude() < 0.2) _stationDirection = _stationDirection.multiply((system.sun.radius*3)/_stationDirection.magnitude());
 
else if (_stationDirection.subtract(_planetDirection).magnitude() > 1.8) _stationDirection = _stationDirection.multiply((system.sun.radius*3*(-1))/_stationDirection.magnitude());
 
else {
 
_stationDirection = _planetDirection;
 
//log("Before "+_stationDirection);
 
_stationDirection = _stationDirection.multiply((system.sun.radius*3)/_stationDirection.magnitude());
 
//log("After "+_stationDirection);
 
}*/
 
 
//direction debug
 
/*var _planetDirectionL = _planetDirection.multiply((system.sun.radius*3)/_planetDirection.magnitude());
 
var _direction = _planetDirectionL.subtract(_stationDirection).multiply(1);
 
log("Quotioent: " + _planetDirectionL.subtract(_stationDirection.direction()).magnitude());
 
var _stationPosition = system.sun.position.add(_planetDirection.subtract(_direction));*/
 
 
log("abweichung: " + _planetDirection.subtract(_stationDirection.direction()).magnitude());
 
var _stationPosition = system.sun.position.add(_stationDirection);
 
//log((system.sun.radius*3)/_stationDirection.magnitude());
 
//log(_stationPosition + ", "+_stationDirection);
 
 
var station = system.addShips("solar_station", 1, _stationPosition, 0)[0];
 
 
log(station);
 
log(station[0]);
 
this._solarStation = station;
 
log(station[0].position);
 
 
if (this._solarStation) {
 
//log("Station at "+_spawnPosition);
 
//log("Station at "+this._solarStation[0].position);
 
 
 
//var _solarVector = this._solarStation.position.subtract(system.sun.position).direction();
 
var _stationAxis = this._solarStation.heading.angleTo(_stationDirection);
 
var _stationAxisNormal = this._solarStation.heading.cross(_stationDirection).direction();
 
this._solarStation.orientation = this._solarStation.orientation.rotate(_stationAxisNormal, -_stationAxis);
 
 
this._solarStationMarketUpdateTimer.start();
 
this._solarStationFuelGenerationTimer.start();
 
}
 
 
 
return station;
 
}
 
 
 
/*this.startUp = function () {
 
this.addStation(Vector3D(2000,0,0));
 
//Let's add a Cube Station 2000m next to the players
 
//initial position in the Main Station.
 
}*/
 
 
 
this._closestToSun = function() {
 
var _planet = null;
 
for (var i = 0; i<system.planets.length; i++) {
 
if (_planet === null || system.planets[i].position.distance(system.sun.position) < _planet.position..distance(system.sun.position))
 
_planet = system.planets[i];
 
}
 
return(_planet);
 
}
 
 
 
this.systemWillPopulate  = function() {
 
system.setPopulator("solar_station", {
 
callback: function(position){this._addStation(50148)}.bind(this),
 
location: "STAR_ORBIT",
 
locationSeed: 50148,
 
deterministic: "yes"
 
/*callback: function(position) {
 
var _spawnPosition = system.sun.position.add(system.sun.position.subtract(position));
 
//var _witchpoint = {position: new Vector3D(0,0,0)};
 
 
var _planet = this._closestToSun();
 
if (_planet.position.distanceTo(position) < _planet.position.distanceTo(_spawnPosition)) _spawnPosition = position;
 
this._solarStationArr = system.addShips("solar_station", 1, _spawnPosition, 0);
 
this._solarStation = this._solarStationArr[0];
 
if (this._solarStation) {
 
//log("Station at "+_spawnPosition);
 
//log("Station at "+this._solarStation[0].position);
 
 
 
var _solarVector = this._solarStation.position.subtract(system.sun.position).direction();
 
var _stationAxis = this._solarStation.heading.angleTo(_solarVector);
 
var _stationAxisNormal = this._solarStation.heading.cross(_solarVector).direction();
 
this._solarStation.orientation = this._solarStation.orientation.rotate(_stationAxisNormal, -_stationAxis);
 
this._solarStationMarketUpdateTimer.start();
 
this._solarStationFuelGenerationTimer.start();
 
}
 
 
/*var _spawnPosition = system.planets[0].position.add(system.planets[0].position.subtract(position));
 
var _witchpoint = {position: new Vector3D(0,0,0)};
 
if (_witchpoint.position.distanceTo(position) < _witchpoint.position.distanceTo(_spawnPosition)) _spawnPosition = position;
 
this._solarStation = system.addShips("solar_station", 1, _spawnPosition, 0);
 
if (this._solarStation) {
 
//log("Station at "+_spawnPosition);
 
//log("Station at "+this._solarStation[0].position);
 
 
 
var _planetVector = this._solarStation[0].position.subtract(system.mainPlanet.position).direction();
 
var _stationAxis = this._solarStation[0].heading.angleTo(_planetVector);
 
var _stationAxisNormal = this._solarStation[0].heading.cross(_planetVector).direction();
 
this._solarStation[0].orientation = this._solarStation[0].orientation.rotate(_stationAxisNormal, -_stationAxis);
 
this._solarStationMarketUpdateTimer.start();
 
this._solarStationFuelGenerationTimer.start();
 
}*/
 
//system.addShips("solar_station", 1, position1, 0);
 
 
 
/*}.bind(this),
 
location: "STAR_ORBIT",
 
locationSeed: 50148,
 
deterministic: "yes"*/
 
});
 
}
 
 
 
 
 
this.equipmentRemoved = function(equipment) {
 
if (equipment === "EQ_OCZ_CORONALHARVESTER" && player.ship.equipmentStatus("EQ_OCZ_CORONALHARVESTER") === "EQUIPMENT_DAMAGED") {
 
this._vicinitySunTimer.stop();
 
//this._proximitySunTimer.stop();
 
this._collectorCounter = 0;
 
if (this._harvesterRun.isPlaying) {
 
this._harvesterDiseng.play();
 
this._harvesterRun.stop();
 
 
}
 
}
 
}
 
 
 
this.gamePaused = function() {
 
if (this._harvesterRun.isPlaying === true) {
 
this._soundMemory = 1;
 
this._harvesterRun.stop();
 
}
 
else if (this._harvesterEng.isPlaying === true) {
 
this._soundMemory = 0;
 
this._harvesterEng.stop();
 
}
 
else if (this._harvesterDiseng.isPlaying === true) {
 
this._soundMemory = 2;
 
this._harvesterDiseng.stop();
 
}
 
}
 
 
 
this.gameResumed = function() {
 
if (this._soundMemory) {
 
if (this._soundMemory === 1) this._harvesterRun.play();
 
else if (this._soundMemory === 0) this._harvesterEng.play();
 
else if (this._soundMemory === 2) this._harvesterDiseng.play();
 
delete this._soundMemory;
 
}
 
}
 
 
 
this.playerBoughtEquipment = function(equipment) {
 
/*if (equipment == "EQ_OCZ_CORONALHARVESTER") {
 
return;
 
}*/
 
 
 
if (equipment == "EQ_OCZ_CORONALHARVESTER_REMOVE") {
 
player.ship.removeEquipment("EQ_OCZ_CORONALHARVESTER_REMOVE");
 
if (player.ship.equipmentStatus("EQ_OCZ_CORONALHARVESTER") === "EQUIPMENT_DAMAGED") {
 
player.credits += EquipmentInfo.infoForKey("EQ_OCZ_CORONALHARVESTER").price/(10*2); // If damaged, refund only half the price.
 
}
 
else player.credits += EquipmentInfo.infoForKey("EQ_OCZ_CORONALHARVESTER").price/10 // Refund the price.
 
player.ship.removeEquipment("EQ_OCZ_CORONALHARVESTER");
 
return;
 
}
 
}
 
 
 
this.shipEnteredPlanetaryVicinity = function(planet)
 
{
 
    log("shipEnteredPlanetaryVicinity: " + planet.name);
 
if (planet === system.sun && player.ship.equipmentStatus("EQ_OCZ_CORONALHARVESTER") === "EQUIPMENT_OK") {log("Sun");this._vicinitySunTimer.start();}
 
}
 
 
 
this.shipExitedPlanetaryVicinity = function(planet)
 
{
 
    log("shipExitedPlanetaryVicinity: " + planet.name);
 
if (planet === system.sun) this._vicinitySunTimer.stop();
 
 
}
 
 
 
this.shipApproachingPlanetSurface = function(planet)
 
{
 
    log("shipApproachingPlanetSurface: " + planet.name);
 
}
 
 
 
this.shipLeavingPlanetSurface  = function(planet)
 
{
 
    log("shipLeavingPlanetSurface : " + planet.name);
 
}
 
 
 
 
 
 
 
/*this.shipWillEnterWitchspace = function(cause, destination) {
 
if (player.ship.equipmentStatus("EQ_SUWITCHDRIVE") === "EQUIPMENT_OK" && cause === "standard jump") {
 
if (player.ship.equipmentStatus("EQ_SUWITCHDRIVESPARECOILS") === "EQUIPMENT_OK") {
 
player.ship.removeEquipment("EQ_SUWITCHDRIVESPARECOILS"); //The spare coils get ejected after use.
 
}
 
else player.ship.setEquipmentStatus("EQ_SUWITCHDRIVE", "EQUIPMENT_DAMAGED");
 
}
 
}
 
 
 
this.equipmentDamaged = function(equipment) {
 
    if (equipment === "EQ_SUWITCHDRIVE") {
 
player.ship.hyperspaceSpinTime = -1; //If the Single-Use Witchdrive gets damaged in a fight or by using it without spare coils, the ship loses its witchjump ability.
 
player.ship.cancelHyperspaceCountdown(); //Just in case the player was about to jump out of a fight for example.
 
}
 
else if (equipment === "EQ_SUWITCHDRIVESPARECOILS") {
 
player.ship.removeEquipment("EQ_SUWITCHDRIVESPARECOILS"); //If the spare coils get somehow damaged they get ejected.
 
}
 
}
 
 
 
this.equipmentRepaired = function(equipment) {
 
    if (equipment === "EQ_SUWITCHDRIVE") {
 
player.ship.hyperspaceSpinTime = 15; //If the Single-Use Witchdrive gets repaired, the ship regains its witchjump ability.
 
}
 
}
 
 
 
this.startUpComplete = function() {
 
if (player.ship.equipmentStatus("EQ_SUWITCHDRIVE") === "EQUIPMENT_OK") {
 
player.ship.hyperspaceSpinTime = 15;
 
}
 
}*/
 

Latest revision as of 12:55, 28 June 2026



Edit of F4 screen wiki page

Issue of categorical multiplication...

I'm not sure that an OXP designer would ever bother to read that page (I had new players in mind when I wrote it - giving them a guide as to what is what and which OXP it comes from).

Perhaps some of the programming pages would be more pertinent?

Cholmondeley 00:51, 28 February 2024 (UTC)

Signature

This is done with the tilde button (~) - four in a row gives your name and time stamp

you can format it with colons (:) for spacing and with double/treble quotation marks (') for italicising/emboldening as I've done just above

Try it out in the Sandbox


Our BB

Any idea as to what's up down there? (Error code 522). 4/5 days now - seems unlikely that Comrade Xi's AI is gumming up the works - I'd presume that he'd just grab goodies and then go.

Cheers! (Or should that be cheese?)

Cholmondeley 07:06, 8 April 2025 (BST)

How to's

I've tried to add these in where relevant.

But I don't know where to plug in Crosshairs, Data - Ship Name & Docked HUDs.

Flow Chart

        ┌───────────────────────────┐
        │ Game starts / OXP loads   │
        └─────────────┬─────────────┘
                      │
                      ▼
              ┌─────────────────┐
              │ startUp() runs  │
              └───────┬─────────┘
                      │
                      ▼
       ┌───────────────────────────────────────────────────┐
       │ Check for other OXPs via worldScripts             │
       │ - Cargo contracts present? set contract=true      │
       │ - Parcel contracts present? set parcel=true       │
       │ - Passenger contracts present? set passenger=true │
       │ - Explorers Club present? set explorer=true       │
       └───────────────────────────────────────────────────┘
                      │
                      ▼
            ┌─────────────────────┐
            │ Delete startUp()    │
            │ (never runs again)  │
            └─────────────────────┘

────────────────────────────────────────────────────────────── In-game events:

    Event: shipExitedWitchspace
    Event: missionScreenOpportunity
                  │
                  ▼
     ┌─────────────────────────────┐
     │ Call _setReputations()      │
     └────────────┬────────────────┘
                  │
                  ▼
     ┌────────────────────────────────────┐
     │ For each mission type that is true │
     │ (passenger / contract / parcel /   │
     │ explorer):                         │
     │  - Get player reputation value     │
     │  - Select correct mission text key │
     │  - Append description to           │
     │    reputation[] list               │
     └────────────────────────────────────┘
                  │
                  ▼
     ┌────────────────────────────┐
     │ mission.setInstructions()  │
     │ (Displays list in mission  │
     │ screen instructions area)  │
     └────────────────────────────┘
                  │
                  ▼
     ┌─────────────────────────┐
     │ Reset reputation[] to   │
     │ just the title element  │
     └─────────────────────────┘

Trade-goods (abridged)‎‎

Just wanted to say - this looks superb! I can even understand some of it!! Very, very useful. Thank you for putting in the effort!

I presume that Checklist for testing new hud.plist file, HUD Design & Oolite HUD Positioning System are on the back-burner for the moment.

Cholmondeley 15:49, 18 June 2026 (BST)

Forum is down again

Heh! It just resurfaced after I copied my response to here! So I've blanked the copy from here.