Cannisters
Moderators: winston, another_commander
- Killer Wolf
- ---- E L I T E ----
- Posts: 2280
- Joined: Tue Jan 02, 2007 12:38 pm
Cannisters
Would like a reworking of their ejection maths, it's ridiculous when some get dumped or you nail a ship after a fight and the cargo goes zipping off at .87LM.
Re: Cannisters
The GalCop Missions OXP has an equipment called "Ejection Damper" which stops cargo from moving. You could look at the code and it should probably be possible to adjust it, such that you don't need to buy/activate equipment for this to work, and to maybe just give an upper bound to the velocity of cargo cannisters instead of reducing the velocity to 0.
I think this is the relevant code bit:
The Oolite core code that calculates the velocity for dumped cargo is probably this, if you want to tinker around with it. (It also handles ejection of escape pods.)
I think this is the relevant code bit:
Code: Select all
//-------------------------------------------------------------------------------------------------------------
this.shipDumpedCargo = function (cargo) {
if (this._unitOn === true) {
player.consoleMessage("Ejection dampening applied.", 2);
cargo.maxThrust = 1;
cargo.thrust = 1;
this._usesLeft -= 1;
this._cargoList.push(cargo);
if (this._resetTimer == null || this._resetTimer.isRunning === false) {
this._resetTimer = new Timer(this, this.$resetCargo, 2, 2);
}
if (this._usesLeft <= 0) {
this._usesLeft = 0;
this._unitOn = false;
this.$playSound("off");
player.ship.removeEquipment("EQ_GCM_EJECTION_DAMPER");
player.consoleMessage("Ejection damper expended and removed.", 5);
}
}
}
//-------------------------------------------------------------------------------------------------------------
this.$resetCargo = function $resetCargo() {
if (this._cargoList.length === 0) {
this._resetTimer.stop();
this._resetTimer = null;
return;
}
for (var i = this._cargoList.length - 1; i >= 0; i--) {
var cargo = this._cargoList[i];
if (!cargo.velocity || cargo.velocity.magnitude() === 0) {
if (cargo.isValid && cargo.isInSpace) {
cargo.maxThrust = 0;
cargo.thrust = 0;
}
this._cargoList.splice(i, 1);
}
}
}