Back to Index Page generated: Dec 20, 2024, 7:22:09 AM

Expansion Generation Ships

Content

Warnings

  1. http://wiki.alioth.net/index.php/Generation%20Ships -> 404 Not Found
  2. Low hanging fuit: Information URL exists...

Manifest

from Expansion Manager's OXP list from Expansion Manifest
Description Adds encounters with the mythical Generation Ships from time to time in interstellar space. GalCop regulations stipulate these enormous pre-witchspace drive ships should be left completely alone when found. There are serious consequences for attempting to interfere with them in any way. Adds encounters with the mythical Generation Ships from time to time in interstellar space. GalCop regulations stipulate these enormous pre-witchspace drive ships should be left completely alone when found. There are serious consequences for attempting to interfere with them in any way.
Identifier oolite.oxp.Draco_Caeles.GenerationShips oolite.oxp.Draco_Caeles.GenerationShips
Title Generation Ships Generation Ships
Category Ships Ships
Author Draco Caeles, Commander McLane, phkb Draco Caeles, Commander McLane, phkb
Version 1.6 1.6
Tags
Required Oolite Version
Maximum Oolite Version
Required Expansions
Optional Expansions
Conflict Expansions
Information URL https://wiki.alioth.net/index.php/Generation_Ships_OXP n/a
Download URL https://wiki.alioth.net/img_auth.php/d/d7/Generation_Ships_1.6.oxz n/a
License CC-BY-NC-SA 3.0 CC-BY-NC-SA 3.0
File Size n/a
Upload date 1700705989

Documentation

readme.txt

Generation Ships v1.5.1
by "Draco_Caeles"
revised by "Commander McLane" and Nick Rogers

an Expansion Pack for Oolite by Giles Williams
based on "Elite" by Ian Bell and David Braben

Shadows from the Past 
=====================
Space holds many mysteries: all spacers learn this, some sooner, some later. Ships take off from a station and are lost without a trace; some are wormholed across the galaxy, or even between galaxies, leaving the pilot stranded; some pass through witchspace in seconds and have aged a thousand years, the ship's crew aged to dust on the consoles. 

And then there are the legends...

From the Elite Manual
---------------------
"Before the development of the WS Thru-Space drive, in all its various forms, interstellar travel occurred in large, self-sustaining environment ships - Generation Ships - most of which have now been logged and their progress monitored. There are more than seventy thousand of these immense vessels ploughing their way through the galaxy, some of them into their 30th generation. The penalty for interference with such a vessel is marooning." 

Overview
========
This OXP adds the mysterious, majestic and magnificently massive Generation ships to your Oolite universe.  These immense vessels are encountered only rarely in the vast tracts of Thargoid-haunted interstellar space between inhabited systems, so seeing one may be a once in a lifetime occurrence for many commanders. Few who have reported seeing these vessels have ever been unchanged by the experience, to be dwarfed by the sheer magnitude and awed by the stately grace these ships exhibit is something that remains with the viewer forever.

Minimum Requirements
====================
Generation Ships.oxp v 1.4 requires at least Oolite 1.80.
Version 1.3, available from the Elite Wiki, is suitable for Oolite versions 1.74 to 1.77.1.

Download Location
=================
This OXP is available for download via the Elite Wiki, or via the in-game download manager.

Installation
============
Move or copy the file Generation Ships.oxp from this folder your AddOns folder. Delete any older version of the OXP. Restart Oolite.

Acknowledgements
================
Draco_Caeles is the original author of this OXP. The model, texture, shipdata, original script, and AI of the Generation Ship are all by him. He was the first one to bring the legend to life.

When his OXP seemed to be lost in the debris of Oosat 2, some members of the Oolite Bulletin Boards dug it out and made it available again. Captain Hesperus threw together the original of this readMe and hosted the file.

Commander McLane revised the script, rewrote it in JavaScript, made a few adjustments in the shipdata, and slightly changed the AI and behaviour of the ship. He also re-published the OXP as version 1.3.

phkb re-worked the shipdata.plist file, converted it to the ASCII format and made the sub-entity definitions current with the latest version. He also reworked the populator function to use the systemWillPopulate routine. He added some JavaScript to interface with his Email System, and repackaged the OXP in OXZ format, as version 1.4, and made it available via the download manager.

License
=======
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License version 3.0. For more information see the ReadMe of Oolite or the Creative Commons' website.

Practically this means that you may rip it apart and use whatever seems useful to you, as long as you credit the original authors. It would be nice - although by no means necessary - to give me a note, if you intend to use parts of it.

History
=======
1.6
- Added specular maps, adjusted diffuse maps for a more "old" appearance.
- Added shiplibrary.plist file.

1.5
- Made the ship dockable, but added penalties for when you do dock.
- Updated textures and added normal maps.
- Switched to using interstellarSpaceWillPopulate population routine.
- Changed spawning logic to ensure only one Generation Ship will ever be spawned at a time.
- Code refactoring.
- Bug fixes.

1.4.1
- removed some unused shipdata.plist entries.

1.4 (July 15, 2015)
- revised version by phkb.
- updated populator function to use new methods.
- switched "pirate-victims.plist" to "role-categories.plist".
- converted "shipdata.plist" to ASCII format, updated subentities to newer format.
- added Email System interface for Galactic Court message.
- spelling corrections.
- converted rtf readme to txt format.
- repackaged as an OXZ, added to download manager.
- requires Oolite 1.80.

1.3 (April 10th, 2011)
- moved all self-defined function into their own namespace
- excluded Generation Ships from getting shields if NPC-shields.oxp is installed

1.2 (February 22nd, 2011)
- the probability of meeting a Generation Ship is again reduced
- new mission screen code and new ship creating code used
- requires Oolite 1.74

1.1 (October 10th, 2009)
- revised version by Commander McLane
- the model is now centered, causing the blip and the target box of the ship to be symmetrical
- the ship is now practically indestructible, it survives multiple Q-bomb blasts
- AI changes: the ship no longer disappears after being attacked
- the two messages on attack are now correctly separated by a pause of six seconds
- an accidental hit does no longer count as an attack
- script changes: script is now in JS
- the probability of meeting a Generation Ship is a little reduced
- Generation Ships no longer appear out of wormholes, giving the correct impression that they travelled through the vastness of interstellar space
- the ships now may appear in a huge radius around the player, greatly decreasing the likeliness to end up inside one of them
- the ships now move into random directions
- interfering with one of the vessels now has actually a penalty attached to it
- requires Oolite 1.73

1.0
- fully functional version by Draco_Caeles
- requires Oolite 1.65

Equipment

This expansion declares no equipment. This may be related to warnings.

Ships

Name
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
Generation Ship
genship-name-1
genship-name-10
genship-name-11
genship-name-12
genship-name-13
genship-name-14
genship-name-15
genship-name-16
genship-name-17
genship-name-18
genship-name-19
genship-name-2
genship-name-20
genship-name-21
genship-name-22
genship-name-23
genship-name-24
genship-name-25
genship-name-26
genship-name-27
genship-name-28
genship-name-29
genship-name-3
genship-name-30
genship-name-4
genship-name-5
genship-name-6
genship-name-7
genship-name-8
genship-name-9

Models

This expansion declares no models. This may be related to warnings.

Scripts

Path
Scripts/Generation Ships.js
/*

Generation Ships.js

Script for randomly spawning Generation Ships.


Oolite
Copyright © 2003-2011 Giles C Williams and contributors

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA.


Generation Ships.oxp
Copyright © 2006-2011 "Draco_Caeles" & "Commander McLane"

This work is licensed under the Creative Commons
Attribution-Noncommercial-Share Alike 3.0 Unported License.

To view a copy of this license, visit
http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter
to Creative Commons, 171 Second Street, Suite 300, San Francisco,
California, 94105, USA.

*/

"use strict";
this.name = "Generation Ships";
this.description = "Script for randomly spawning Generation Ships";
this.author = "Commander McLane";
this.copyright = "© 2011 Commander McLane";
this.license = "CC-BY-NC-SA 3.0";
this.version = "1.5.0";

//-------------------------------------------------------------------------------------------------------------
this.startUpComplete = function () {
	if (worldScripts.BountySystem_Core) {
		var bsc = worldScripts.BountySystem_Core;
		bsc._offenceTypes["generation ship"] = {
			description: "Interference with and/or damage to a Generation Ship in open Interstellar Space",
			severity: 3
		};
	}
}

//-------------------------------------------------------------------------------------------------------------
this.interstellarSpaceWillPopulate = function () {
	var position = Vector3D(0, 0, 0);
	system.setPopulator("gen ship", {
		callback: function (pos) {
			var chance = 0.01;
			for (var i = 1; i <= 30; i++) {
				if (Math.random() < chance) {
					system.addShips("generationship-" + i.toString(), 1, pos, 250000);
					break;
				}
			}
		}.bind(this),
		location: "COORDINATES",
		coordinates: position
	});

}

//-------------------------------------------------------------------------------------------------------------
this.missionScreenOpportunity = function () {

	if (player.ship.docked && player.ship.dockedStation.hasRole("generationship") && (missionVariables.genship == "PLAYER_ATTACKED" || missionVariables.genship == "PLAYER_DOCKED")) {
		// build message
		var msg = "";
		if (missionVariables.genship == "PLAYER_ATTACKED") msg = expandMissionText("genship_penalty");
		if (missionVariables.genship == "PLAYER_DOCKED") msg = expandMissionText("genship_dock_penalty");

		mission.runScreen({
			title: "Galactic Court",
			message: "---INCOMING MESSAGE\n\n" + msg + "\n\n---MESSAGE ENDS",
			model: "generationship"
		});

		player.ship.setBounty(player.ship.bounty + 51, "generation ship");
		player.credits -= 25000;
		if (player.credits < 0) player.credits = 0;
		delete missionVariables.genship;

		// send as email message, if system is installed.
		var w = worldScripts.EmailSystem;
		if (w) {
			w.$createEmail({
				sender: "Galactic Court",
				subject: "Generation Ship Penalty",
				date: global.clock.seconds,
				message: msg
			});
		}
	}
}

//-------------------------------------------------------------------------------------------------------------
// if the player docks, hide the F3 screen from them.
this.guiScreenChanged = function (to, from) {
	if (player.ship.docked) {
		if (player.ship.dockedStation.hasRole("generationship")) {
			if (guiScreen === "GUI_SCREEN_EQUIP_SHIP") {
				mission.runScreen({
					title: "Generation Ship",
					message: "There is no equipment available for your vessel on a Generation Ship."
				});
			}
			if (guiScreen === "GUI_SCREEN_MARKET") {
				mission.runScreen({
					title: "Generation Ship",
					message: "There is no market available on a Generation Ship."
				});
			}
		}
	}
}
Scripts/genship-script.js
/*

genship-script.js

Ship script for Generation Ships.


Oolite
Copyright © 2003-2011 Giles C Williams and contributors

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA.


Generation Ships.oxp
Copyright © 2006-2011 "Draco_Caeles" & "Commander McLane"

This work is licensed under the Creative Commons
Attribution-Noncommercial-Share Alike 3.0 Unported License.

To view a copy of this license, visit
http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter
to Creative Commons, 171 Second Street, Suite 300, San Francisco,
California, 94105, USA.

*/

"use strict";

this.name			= "genship-script";
this.description    = "Script for Generation Ships";
this.author			= "Commander McLane";
this.copyright		= "© 2011 Commander McLane";
this.license		= "CC-BY-NC-SA 3.0";
this.version		= "1.5.0";

this._warning = false;

//-------------------------------------------------------------------------------------------------------------
this.shipSpawned = function() {
	this.ship.primaryRole = "generationship";
	this.ship.orientation = [(Math.random() * 2) - 1, (Math.random() * 2) - 1, (Math.random() * 2) - 1, (Math.random() * 2) - 1];
	this._warningCheck = new Timer(this, this.$checkPlayer, 15, 15);
}

//-------------------------------------------------------------------------------------------------------------
this.otherShipDocked = function(whom) {
	if (whom.isPlayer) {
		// only update the missionvariable if it hasn't already been set
		if (!missionVariables.genship || missionVariables.genship != "PLAYER_ATTACKED") {
			missionVariables.genship = "PLAYER_DOCKED";
		}
	}
}

//-------------------------------------------------------------------------------------------------------------
this.$fineAttacker = function() {
	if (this.ship.target.isPlayer) {
		missionVariables.genship = "PLAYER_ATTACKED";
	}
}

//-------------------------------------------------------------------------------------------------------------
this.$checkPlayer = function $checkPlayer() {
	var p = player.ship;
	var calc = p.position.distanceTo(this.ship);
	if (calc < 15000 && this._warning == false) {
		player.consoleMessage("Warning: It is an offence to interfere with Generation Ships.");
		this._warning = true;
		this._warningCheck.stop();
	}
}