Back to Index Page generated: May 8, 2024, 6:16:03 AM

Expansion Dictators

Content

Manifest

from Expansion Manager's OXP list from Expansion Manifest
Description Adds a range of ships and stations to each dictatorship and offers new trading opportunities to players. Adds a range of ships and stations to each dictatorship and offers new trading opportunities to players.
Identifier oolite.oxp.Ramirez.Dictators oolite.oxp.Ramirez.Dictators
Title Dictators Dictators
Category Systems Systems
Author Ramirez, phkb, gsagostinho Ramirez, phkb, gsagostinho
Version 2.6 2.6
Tags
Required Oolite Version
Maximum Oolite Version
Required Expansions
  • oolite.oxp.spara.ImperialAstrofactory:2.1
  • oolite.oxp.spara.ImperialAstrofactory:2.1
  • Optional Expansions
  • oolite.oxp.Ramirez.FeudalStates:1.16.2
  • oolite.oxp.Ramirez.FeudalStates:1.16.2
  • Conflict Expansions
    Information URL http://wiki.alioth.net/index.php/Dictators_OXP n/a
    Download URL https://wiki.alioth.net/img_auth.php/a/a5/Dictators.oxz n/a
    License CC BY-NC-SA 3 CC BY-NC-SA 3
    File Size n/a
    Upload date 1693696776

    Documentation

    Also read http://wiki.alioth.net/index.php/Dictators

    Readme.txt

    Oolite OXP
    Dictators v2.6
    Ramirez, Initial Release July 2011
    
    This OXP is a flavour expansion for the Dictatorship systems, adding various government-specific ships and stations.
    
    V2.6
    - Added shiplibrary.plist, so Dictators ships will show up in the Ship Library. With thanks to Cholmondely.
    
    V2.5
    - Added some shipdata entries to provide compatibility with Resistance Commander OXP.
    
    V2.4
    - Added normal map to frieghter.
    - Small corrections to shipdata.plist.
    - Allowed for game to be saved at Astro Factories.
    
    V2.3
    - Corrected errors in shipdata.plist.
    - Small correction to the spawning conditions to prevent prisonships in industrial systems.
    
    V2.2, 31 July 2017 (by phkb and gsagostinho)
    - Updates to shipdata and scripts to better control spawning.
    
    V2.1, 21 July 2017 (by phkb and gsagostinho)
    - added new textures, normal and emission maps to all ships.
    - Moved AstroFactory spawn point to be slightly to the side of the main wp-planet lane.
    
    V2.0, 16 December 2016 (by phkb)
    - Updated scripts and config for current version of Oolite (1.82 and onwards)
    - Updated ship models to use Griff variants.
    - Added code to utilise Station Validator.
    - Made Spara's updated Astrofactory model a requirement for the OXP. The original model is kept for compatibility reasons.
    
    v1.5, 21 July 2011
    - Minor correction to fix inconsistency between script and shipdata regarding spawn conditions for AstroFactories
    
    v1.4, 19 June 2010
    - Updated ship population script for compatibility with Oolite v1.74
    
    v1.3, 31 May 2008
    - Fixed freighter and tanker AI to avoid conflict with station behaviour
    - Minor fixes to ship models
    
    v1.2, 9 February 2007
    - Added Imperial Freighter
    
    v1.1, 30 January 2007
    - Added Imperial Tanker
    - Modified script to prevent appearance of multiple AstroFactories on launch, and tweaked positioning of ships and stations
    
    v1.0, 22 January 2007
    Initial version including:
    - Revolutionary Guards and Junta Enforcers for the agricultural dictatorships
    - Imperial Quaestors, Censors and Lictors for the industrial dictatorships
    - Imperial AstroFarms, located within asteroid fields in the wealthier industrial dictatorships
      and marked as 'F' on the Advanced Space Compass
    - Detailed System Profiles courtesy of GalCop Intelligence
    
    As well as providing some hints on trading opportunities, the System Profiles also give an
    idea of things to come in future versions.
    
    Credits:
    Many thanks to Dr. Nil for the Commies OXP which inspired this expansion, and for additional advice and suggestions.
    Station model and textures by Ramirez, with some use of existing Oolite meshes and base textures.
    Ship models and textures by Griff:
        - Quaestor and Guard are variants of the Viper model from Oolite core.
        - Censor and Enforcer are variants of the Viper Interceptor model from Oolite core.
        - Lictor is a variant of the Viper Pursuit from Oolite core.
        - Prison Ship is a variant of the Anaconda from Oolite core.
        - Freighter and Tanker are "Griff Freighters" from Griff's stalled "Busy Ports" OXP (downloaded from here: https://app.box.com/s/j6zrjibym9).
    Config and script updates for 1.82ff compatibility by phkb.
    Sun image from http://simpleicon.com/sunny_3.html
    

    Equipment

    This expansion declares no equipment.

    Ships

    Name
    Imperial AstroFactory
    Freighter Coupling
    Freighter Coupling
    Imperial Censor
    Bulk Freighter
    Junta Enforcer
    factorydock
    Imperial Freighter
    Imperial Freighter
    Imperial Freighter
    Imperial Freighter
    Imperial Freighter
    Imperial Freighter
    Freighter Cargo Bay
    freighter_cargo_blue1
    freighter_cargo_blue2
    freighter_cargo_blue3
    freighter_cargo_blue4
    freighter_cargo_blue5
    freighter_cargo_blue6
    freighter_cargo_red1
    freighter_cargo_red2
    freighter_cargo_red3
    freighter_cargo_red4
    freighter_cargo_red5
    freighter_cargo_red6
    Freighter Coupling
    Freighter Engines
    impfreighter
    imptanker
    Imperial Lictor
    AutoLoader
    loader_pod
    loader_withcargo
    Prison Ship
    Imperial Quaestor
    Revolutionary Guard
    Imperial Tanker
    Imperial Tanker
    Imperial Tanker
    Imperial Tanker
    Imperial Tanker
    Imperial Tanker

    Models

    This expansion declares no models.

    Scripts

    Path
    Scripts/astrofactory_market.js
    "use strict";
    this.name = "astrofactory_market";
    this.author = "spara";
    this.copyright = "2014 spara";
    this.license     = "CC BY-NC-SA 4.0";
    
    this.$originalDefs = {
          "food" : [0, 0, 19, -2, 0, 1, 1, 1, 0],
          "textiles" : [0, 0, 12, -1, -1, 5, 3, 3, 0],
          "radioactives" : [0, 0, 65, -3, -3, 2, 7, 7, 0],
          "slaves" : [0, 0, 100, -1, -1, 10, 3, 3, 0],
          "liquor_wines" : [0, 0, 93, -5, -5, 251, 15, 15, 0],
          "luxuries" : [0, 0, 196, 8, 8, 2, 3, 3, 0],
          "narcotics" : [0, 0, 235, 29, 29, 8, 90, 90, 0],
          "computers" : [0, 0, 134, 14, 14, 90, 2, 1, 0],
          "machinery" : [0, 0, 98, 6, 6, 100, 2, 1, 0],
          "alloys" : [0, 0, 90, 1, 1, 2, 31, 31, 0],
          "firearms" : [0, 0, 100, 13, 13, 0, 0, 0, 0],
          "furs" : [0, 0, 20, -9, -9, 0, -1, -1, 0],
          "minerals" : [0, 0, 42, -1, -1, 12, 3, 3, 0],
          "gold" : [0, 0, 107, -1, -1, 5, 20, 20, 1],
          "platinum" : [0, 0, 191, -2, -2, 5, 21, 21, 1],
          "gem_stones" : [0, 0, 55, -1, -1, 250, 15, 15, 2],
          "alien_items" : [0, 0, 10, 0, 0, 0, 0, 0, 0]
    };
    
    this.updateLocalCommodityDefinition = function(goodDefinition) {
    	var commodity = goodDefinition.key;
    	var oldDefs = this.$originalDefs[commodity];
    	//old style definition found for the good. calculate it the old way
    	if (oldDefs) {
    		var market_base_price = oldDefs[2];
    		var market_eco_adjust_price = oldDefs[3];
    		var market_eco_adjust_quantity = oldDefs[4];
    		var market_base_quantity = oldDefs[5];
    		var market_mask_price = oldDefs[6];
    		var market_mask_quantity = oldDefs[7];
    		var market_rnd = Math.floor(Math.random() * 256);
    
    		var economy = system.economy;
    
    		var price = (market_base_price + (market_rnd & market_mask_price) + (economy * market_eco_adjust_price)) & 255;
    		price *= 0.4;
    
    		var quantity = (market_base_quantity + (market_rnd & market_mask_quantity) - (economy * market_eco_adjust_quantity)) & 255;
    		if (quantity > 127) quantity = 0;
    		quantity &= 63;
    
    		goodDefinition.price = price * 10;
    		goodDefinition.quantity = quantity;
    	}
    	//no definition found. nullify the goods.
    	else {
    		goodDefinition.price = 0;
    		goodDefinition.quantity = 0;
    	}
    	return goodDefinition;
    };
    
    Scripts/dictators.js
    "use strict";
    this.name        = "dictators.js";
    this.author      = "Ramirez";
    this.copyright   = "June 2010";
    this.description = "World script for populating dictatorship systems";
    this.version     = "1.2";
    
    this._shipSpawnOverride = false;
    
    this.systemWillPopulate = function() {
    	if (system.government === 3) {
    		if (system.economy < 3) {
    			if (system.countShipsWithRole("astrofactory") == 0 && (!worldScripts.station_validator || worldScripts.station_validator.$deaths("astrofactory").length === 0)) {
    				var posAF = Vector3D((system.scrambledPseudoRandomNumber(1245) * 0.30 - 0.15), (system.scrambledPseudoRandomNumber(3827) * 0.30 - 0.15), 0.3).fromCoordinateSystem("wpu");
    				system.setPopulator("dictators_astrofactory", {
    					location: "COORDINATES",
    					coordinates: posAF,
    					deterministic:true,
    					callback: function(pos) {
    						var rck = system.addShips("asteroid", 30, pos, 40E3);
    						var af = system.addShips("astrofactory", 1, pos, 0);
    						if (!af || af.length === 0) log("dictators.populator", "OOPS! No astrofactory spawned");
    					}}
    				);
    				//system.legacy_addShipsAt("astrofactory", 1, "wpu", [0, 0, 0.3])
    				//system.legacy_addShipsAt("asteroid", 30, "wpu", [0, 0, 0.3])
    
    				var posIT1 = Vector3D(0, 0, 0.8).fromCoordinateSystem("wpu");
    				system.setPopulator("dictators_imptanker1", {
    					location: "COORDINATES",
    					coordinates: posIT1,
    					callback: function(pos) {
    						var tnk = system.addShips("imptanker", 1, pos, 0);
    						if (!tnk || tnk.length === 0) log("dictators.populator", "OOPS! No imptanker spawned (1)");
    					}}
    				);
    
    				var posIT2 = Vector3D(0, 0, 0.4).fromCoordinateSystem("wpu");
    				system.setPopulator("dictators_imptanker2", {
    					location: "COORDINATES",
    					coordinates: posIT2,
    					callback: function(pos) {
    						var tnk = system.addShips("imptanker", 1, pos, 0);
    						if (!tnk || tnk.length === 0) log("dictators.populator", "OOPS! No imptanker spawned (2)");
    					}}
    				);
    				//system.legacy_addShipsAt("imptanker", 1, "wpu", [0, 0, 0.8])
    				//system.legacy_addShipsAt("imptanker", 1, "wpu", [0, 0, 0.4])
    
    				var posIF1 = Vector3D(0, 0, 0.3).fromCoordinateSystem("wpu");
    				system.setPopulator("dictators_impfreighter1", {
    					location: "COORDINATES",
    					coordinates: posIF1,
    					callback: function(pos) {
    						var frt = system.addShips("impfreighter", 1, pos, 0);
    						if (!frt || frt.length === 0) log("dictators.populator", "OOPS! No impfreighter spawned (1)");
    					}}
    				);
    
    				var posIF2 = Vector3D(0, 0, 0.7).fromCoordinateSystem("wpu");
    				system.setPopulator("dictators_impfreighter2", {
    					location: "COORDINATES",
    					coordinates: posIF2,
    					callback: function(pos) {
    						var frt = system.addShips("impfreighter", 1, pos, 0);
    						if (!frt || frt.length === 0) log("dictators.populator", "OOPS! No impfreighter spawned (2)");
    					}}
    				);
    				//system.legacy_addShipsAt("impfreighter", 1, "wpu", [0, 0, 0.3])
    				//system.legacy_addShipsAt("impfreighter", 1, "wpu", [0, 0, 0.7])
    			}
    		}
    
    		if(system.economy >= 6) {
    			if(system.countShipsWithRole("prisonship") == 0) {
    				var posPS = Vector3D(0, 0, 0.8).fromCoordinateSystem("wpu");
    				system.setPopulator("dictators_prisonship", {
    					location: "COORDINATES",
    					coordinates: posPS,
    					callback: function(pos) {
    						var ps = system.addShips("prisonship", 1, pos, 0);
    						if (!ps || ps.length === 0) log("dictators.populator", "OOPS! No prisonship spawned");
    					}}
    				);
    				//system.legacy_addShipsAt("prisonship", 1, "wpu", [0, 0, 0.8])
    			}
    		}
    	}
    }
    
    Scripts/dictators_conditions.js
    "use strict";
    this.name        = "Dictators_Conditions";
    this.author      = "phkb";
    this.copyright   = "2016 phkb";
    this.description = "Condition script for ships and equipment.";
    this.licence     = "CC BY-NC-SA 3.0";
    
    this.allowSpawnShip = function(shipKey) {
    	if (worldScripts["dictators.js"]._shipSpawnOverride === true) return true;
    	if (system.info.government !== 3) return false;
    	switch (shipKey) {
    		case "enforcer":
    		case "rev_guard":
    		case "prison_ship":
    			if (system.info.economy >= 4) return true;
    			break;
    		case "quaestor":
    		case "censor":
    			if (system.info.economy < 4) return true;
    			break;
    		case "lictor":
    		case "astrofactory":
    		case "tanker_1":
    		case "tanker_2":
    		case "tanker_3":
    		case "tanker_4":
    		case "tanker_5":
    		case "tanker_6":
    		case "freighter_1":
    		case "freighter_2":
    		case "freighter_3":
    		case "freighter_4":
    		case "freighter_5":
    		case "freighter_6":
    			return true;
    			break;
    	}
    	return false;
    }