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

Expansion Dragonships

Content

Warnings

  1. Unknown key 'upload_date' at https://wiki.alioth.net/img_auth.php/3/38/Oolite.oxp.zzz.Montana05.dragonships.OXZ!manifest.plist

Manifest

from Expansion Manager's OXP list from Expansion Manifest
Description Three different low tec ships in a style based loosely on WW2 airplanes and a lot of artistic freedom. No shaders are used. Three different low tec ships in a style based loosely on WW2 airplanes and a lot of artistic freedom. No shaders are used.
Identifier oolite.oxp.rorschachhamster.Dragonships oolite.oxp.rorschachhamster.Dragonships
Title Dragonships Dragonships
Category Ships Ships
Author Christian Sturke aka Rorschachhamster, Montana05 Christian Sturke aka Rorschachhamster, Montana05
Version 1.0.4 1.0.4
Tags low tec ships low tec ships
Required Oolite Version
Maximum Oolite Version
Required Expansions
Optional Expansions
Conflict Expansions
Information URL http://wiki.alioth.net/index.php/Dragonships n/a
Download URL https://wiki.alioth.net/img_auth.php/3/38/Oolite.oxp.zzz.Montana05.dragonships.OXZ n/a
License CC BY-NC-SA 4.0 CC BY-NC-SA 4.0
File Size n/a
Upload date 1647049108

Documentation

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

README.txt

Dragonships Version 1.0.3
By Rorschachhamster aka Christian Sturke 2013
License: CC BY-NC-SA 4.0

These OXP adds some ships to the ooniverse with a look reminiscent of the 40's or 50's aircraft design, 
namely the Draco, Dragonette and Wyrm. It should add sometimes a pirate attack group wich follows ships 
around until there are no cops in sight... 

The textures and models of all ships are made by me personally, with Help from GIMP and Wings3d. Some of the 
markers (the pegasus on the standard draco and the camel-scorpion-eagle thing on the green wyrm) are made 
using telecanter's silhouettes, wich can be found under recedingrules.blogspot.com and are in the public domain. 
The other black and white markers on the dracos and wyrms are based upon designs from Arthur Rackham and public domain 
as well. Richard J. LeBlanc Jr. made a few SVGs, wich I used (http://savevsdragon.blogspot.com/2013/05/free-arthur-rackham-vector-art.html).

Version 1.0.3 / 2015-10-02 / Rorschachhamster
* Changed the role weights for a lesser distribution of this ships.
* Changed the worldscript, so the attack group is placed randomly somewhere on the witchspace-station lane.
* Added this readme.txt file

Version 1.0.4 / 2022-01-28 / Montana05
* fixed a display error
* fixed a script error
* corrected 2 reference errors (typos)
* improved handling of the materials in shipdata.plist

Equipment

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

Ships

Name
rsdraco_npc
Draco
rsdracoalt2_npc
rsdracoalt3_npc
rsdracoalt_npc
rsdracoaltpiratemother
rsdragonette_green
rsdragonette_npc
rsdragonette_pirate
rsdragonette_piratescort
Dragonette
rsdragonette_playergreen
rsdragonette_playerpirate
rswyrm_npc
Wyrm
rswyrmalt2_npc
rswyrmalt2_player
rswyrmalt3_npc
rswyrmalt3_player
rswyrmalt_npc
rswyrmalt_npc_pirate
rswyrmalt_player

Models

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

Scripts

Path
Config/script.js
this.name					= "PopuDracoscript";
this.author					= "Rorschachhamster";
this.copyright				= "Creative Commons Attribution - Non-Commercial - Share Alike 4.0 license";
this.description			= "Populator for Pirategroups with a Draco and several Dragonettes and wyrms";
this.version				= "1.0.4";
"use strict";

// Custom role for this.ship.spawned in ship script
this.role1 = "draco_pirate_mother"; 

this.shipWillExitWitchspace = function()
{
   var myRND = Math.random();
   
   if(system.isInterstellarSpace || myRND <= 0.90) 
      return;

   if(system.countShipsWithRole(this.role1) > 0) 
      return;

   if(system.population < 25 || system.government <= 2) 
      return;

   system.addShipsToRoute(this.role1, 1,  Math.random(), "wp");
};

this.shipWillLaunchFromStation = function()
{
   var myRND = Math.random();

   if(system.isInterstellarSpace || myRND <= 0.90)
      return;

   if(system.countShipsWithRole(this.role1) > 0)
      return;

   if(system.population < 25 || system.government <= 2)
      return;
   
   system.addShipsToRoute(this.role1, 1, Math.random(), "wp");
};
Scripts/dracoaltpirate.old
this.name					= "dracoaltpirate.js";
this.author					= "Rorschachhamster";
this.copyright				= "Creative Commons: attribution, non-commercial, sharealike.";
this.description			= "Draco Pirate Mother";
this.version				= "1.00";
"use strict";

this.shipSpawned = function()
	{
	this.dracoPiratesGroup = new ShipGroup("Draco_Pirates", this.ship);
	this.ship.group = this.dracoPiratesGroup;
	this.dracoPiratesGroup.mother = this.ship;
	this.dragonetteCount = Math.round(Math.random() * 3);
	this.wyrmCount = Math.round(Math.random() * 3);
	var addDracoGroupShip;
	var num;
	for(var dragonCounter = 0;dragonCounter<this.dragonetteCount;dragonCounter++)
     {
        addDracoGroupShip = this.ship.spawnOne("rsdragonette_pirate_escort");
        this.dracoPiratesGroup.addShip(addDracoGroupShip);
        addDracoGroupShip.group = this.dracoPiratesGroup;
        num = dragonCounter+1;
        this.coordinatesForEscortPosition = function(num)
            {
            if (this.target!==null || this.target.scanClass!== "CLASS_CARGO")
                {var dracoGroupShipZ = this.target.z;} //If a viable target, surround it
            else
                {var dracoGroupShipZ = this.z;};//if not, surround the mother
        switch (num) {
   
        case 1:
        escort_position=new Vector(2500,0,dracoGroupShipZ-2500);
        break;
        case 2:
        escort_position=new Vector(-2500,0,dracoGroupShipZ-2500);
        break;
        case 3:
        escort_position=new Vector(-4500,0,dracoGroupShipZ);
        break;
        default: 
        escort_position=new Vector(-4500,0,dracoGroupShipZ); 
   
                };
            return escort_position;
	       };
    };
	for(var wyrmCounter = 0;wyrmCounter<this.wyrmCount;wyrmCounter++)
	{
    addDracoGroupShip = this.ship.spawnOne("rswyrmalt_npc_pirate_escort");
	this.dracoPiratesGroup.addShip(addDracoGroupShip);
	addDracoGroupShip.group = this.dracoPiratesGroup;
	if(dragonCounter==0)dragonCounter++;
	num = wyrmCounter+dragonCounter;
	this.coordinatesForEscortPosition = function(num)
    {
    if (this.target!==null || this.target.scanClass!== "CLASS_CARGO")
                {var dracoGroupShipZ = this.target.z;} //If a viable target, surround it
            else
                {var dracoGroupShipZ = this.z;};//if not, sorround the mother
        switch (num) {
   
   case 1:
        escort_position=new Vector(2500,0,dracoGroupShipZ+2500);
        break;
    case 2:
        escort_position=new Vector(-2500,0,dracoGroupShipZ+2500);
        break;
    case 3:
        escort_position=new Vector(4500,0,dracoGroupShipZ);
        break;
    case 4:
        escort_position=new Vector(-4500,0,dracoGroupShipZ);
        break;
    case 5:
        escort_position=new Vector(-2500,0,dracoGroupShipZ+2500);
        break;
    case 6:
        escort_position=new Vector(2500,0,dracoGroupShipZ+2500);
        break;
     default:
        escort_position=new Vector(2500,0,dracoGroupShipZ+2500); 
   
    };
    return escort_position;
    };
	};
    };


	
Scripts/rsdracoaltpirate.js
this.name					= "rsdracoaltpirate.js";
this.author					= "Rorschachhamster";
this.copyright				= "Creative Commons Attribution - Non-Commercial - Share Alike 4.0 license";
this.description			= "Draco Pirate Mother";
this.version				= "1.0.4";
"use strict";

this.shipSpawned = function()
{
	this.dracoPiratesGroup = new ShipGroup("Draco_Pirates", this.ship);
	this.ship.group = this.dracoPiratesGroup;
	this.dracoPiratesGroup.mother = this.ship;
	this.dragonetteCount = Math.round(Math.random() * 3);
	this.wyrmCount = Math.round(Math.random() * 3);
	var addDracoGroupShip;
	var num;
	
    for(var dragonCounter = 0; dragonCounter < this.dragonetteCount; dragonCounter++)
    {
        addDracoGroupShip = this.ship.spawnOne("rsdragonette_pirate_escort");
        this.dracoPiratesGroup.addShip(addDracoGroupShip);
        addDracoGroupShip.group = this.dracoPiratesGroup;
        num = dragonCounter + 1;
        
        this.coordinatesForEscortPosition = function(num)
        {
            if(this.target !== null || this.target.scanClass !== "CLASS_CARGO")
            {
                var dracoGroupShipZ = this.target.z; // If a viable target, surround it
            }    
            else
            {
                var dracoGroupShipZ = this.z; // if not, surround the mother
            };    
        
            switch(num)
            {
                case 1:
                    escort_position = new Vector(2500,0,dracoGroupShipZ-2500);
                    break;
                case 2:
                    escort_position = new Vector(-2500,0,dracoGroupShipZ-2500);
                    break;
                case 3:
                    escort_position = new Vector(-4500,0,dracoGroupShipZ);
                    break;
                default: 
                    escort_position = new Vector(-4500,0,dracoGroupShipZ);
                    break; 
            };
            return escort_position;
	    };
    };
	
    for(var wyrmCounter = 0; wyrmCounter < this.wyrmCount; wyrmCounter++)
	{
        addDracoGroupShip = this.ship.spawnOne("rswyrmalt_npc_pirate_escort");
        this.dracoPiratesGroup.addShip(addDracoGroupShip);
        addDracoGroupShip.group = this.dracoPiratesGroup;
        
        if(dragonCounter == 0)
            dragonCounter++;

        num = wyrmCounter + dragonCounter;
	
        this.coordinatesForEscortPosition = function(num)
        {
            if(this.target !== null || this.target.scanClass !== "CLASS_CARGO")
            {
                var dracoGroupShipZ = this.target.z; // If a viable target, surround it
            }    
            else
            {
                var dracoGroupShipZ = this.z; // if not, sorround the mother
            };
            
            switch(num) 
            {
                case 1:
                    escort_position = new Vector(2500,0,dracoGroupShipZ+2500);
                    break;
                case 2:
                    escort_position = new Vector(-2500,0,dracoGroupShipZ+2500);
                    break;
                case 3:
                    escort_position = new Vector(4500,0,dracoGroupShipZ);
                    break;
                case 4:
                    escort_position = new Vector(-4500,0,dracoGroupShipZ);
                    break;
                case 5:
                    escort_position = new Vector(-2500,0,dracoGroupShipZ+2500);
                    break;
                case 6:
                    escort_position = new Vector(2500,0,dracoGroupShipZ+2500);
                    break;
                default:
                    escort_position = new Vector(2500,0,dracoGroupShipZ+2500);
                    break; 
            };
            return escort_position;
        };
	};
};