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

Expansion YellOo Cabs

Content

Manifest

from Expansion Manager's OXP list from Expansion Manifest
Description Adds YellOo Cab taxis to the game. NPCs act as shuttles and inter-system taxis. The ship is player buyable. Adds YellOo Cab taxis to the game. NPCs act as shuttles and inter-system taxis. The ship is player buyable.
Identifier oolite.oxp.smivs.yellooCabs oolite.oxp.smivs.yellooCabs
Title YellOo Cabs YellOo Cabs
Category Ships Ships
Author Smivs Smivs
Version 2.7 2.7
Tags
Required Oolite Version
Maximum Oolite Version
Required Expansions
Optional Expansions
Conflict Expansions
Information URL http://wiki.alioth.net/index.php/YellOo_Cabs n/a
Download URL https://wiki.alioth.net/img_auth.php/a/a0/YellOoCabs_v2.7.oxz n/a
License CC-BY-NC-SA 4.0 CC-BY-NC-SA 4.0
File Size n/a
Upload date 1610873396

Documentation

Also read http://wiki.alioth.net/index.php/YellOo%20Cabs

YellOo Cabs readme.rtf

{\rtf1\ansi\deff3\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset0 Liberation Serif{\*\falt Times New Roman};}{\f4\froman\fprq0\fcharset128 DejaVu Sans Mono;}{\f5\froman\fprq0\fcharset128 Droid Sans;}{\f6\froman\fprq0\fcharset128 Liberation Serif{\*\falt Times New Roman};}{\f7\fswiss\fprq0\fcharset128 Liberation Sans{\*\falt Arial};}{\f8\fnil\fprq0\fcharset128 Liberation Serif{\*\falt Times New Roman};}{\f9\fnil\fprq0\fcharset128 FreeSans;}{\f10\fnil\fprq2\fcharset0 FreeSans;}{\f11\fswiss\fprq0\fcharset128 FreeSans;}{\f12\fnil\fprq2\fcharset0 Liberation Serif{\*\falt Times New Roman};}}
{\colortbl;\red0\green0\blue0;\red128\green128\blue128;}
{\stylesheet{\s0\snext0\ql\nowidctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs24\alang1081\loch\f6\fs24\lang2057 Normal;}
{\s15\sbasedon0\snext16\ql\nowidctlpar\sb240\sa120\keepn\ltrpar\cf1\kerning1\dbch\af9\langfe2052\dbch\af10\afs28\alang1081\loch\f7\fs28\lang2057 Heading;}
{\s16\sbasedon0\snext16\sl288\slmult1\ql\nowidctlpar\sb0\sa120\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs24\alang1081\loch\f6\fs24\lang2057 Text Body;}
{\s17\sbasedon16\snext17\sl288\slmult1\ql\nowidctlpar\sb0\sa120\ltrpar\cf1\kerning1\dbch\af9\langfe2052\dbch\af11\afs24\alang1081\loch\f6\fs24\lang2057 List;}
{\s18\sbasedon0\snext18\ql\nowidctlpar\sb120\sa120\noline\ltrpar\cf1\i\kerning1\dbch\af9\langfe2052\dbch\af11\afs24\alang1081\ai\loch\f6\fs24\lang2057 Caption;}
{\s19\sbasedon0\snext19\ql\nowidctlpar\noline\ltrpar\cf1\kerning1\dbch\af9\langfe2052\dbch\af11\afs24\alang1081\loch\f6\fs24\lang2057 Index;}
{\s20\sbasedon0\snext20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057 Preformatted Text;}
}{\info{\author Smivs }{\creatim\yr0\mo0\dy0\hr0\min0}{\revtim\yr2015\mo3\dy11\hr9\min29}{\printim\yr0\mo0\dy0\hr0\min0}{\comment LibreOffice}{\vern67241986}}\deftab709
\viewscale100
{\*\pgdsctbl
{\pgdsc0\pgdscuse451\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Default Style;}}
\formshade{\*\pgdscno0}\paperh16838\paperw11906\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\sectunlocked1\pgndec\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
\pgndec\pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
YellOo Cabs v2.}{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
7}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5

\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
The Retila Shipyard Co-operative (RSC) is a shady organisation consisting of various Mafia, Triad and Pirate groups, who were brought together by the legendary super-criminal Kran Hoftus to build and market the notorious 'Contractor' uber-ship. Although the ship is not illegal, GalCop is well aware of the Shipyard's dubious ownership and is known to monitor the situation closely. As time passed RSC realised that they would benefit from having a 'legitimate' business arm to maintain an air of respectability and of course for money-laundering and other nefarious purposes. }
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
However, no one in their wildest dreams would have expected them to start manufacturing Taxis, but that is exactly what happened. }
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
The RollyJoger TaxiWorks was established to manufacture the Contract-a-Cab after the RSC (somehow!) won the contract to build a fleet of luxury Limo-Taxis for the prestigious YellOo Cab Company. Also surprising was their decision to use an adapted version of the Contractor spaceframe as the basis for their Taxis, but this actually made a lot of sense, as the ship was the right size and shape, all the development work had already been done, and it turned out to be both very adaptable, and ideal for cost-effective mass-production.}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
However of necessity the specifications are very different. Gone is the expensive organic hull plating in favour of Duralium Alloy. The three Muon-Schism drives have been replaced by a single Quark-Oscillation engine giving a top speed of 3.6 LM. The Contract-a-Cab has three Energy Banks with a 'medium' re-charge rate of 3. Two missile slots are fitted.}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
The Contract-a-Cab comes as standard with the basic equipment needed to perform its role, with standard Escape Capsule, Fuel Injection, Fuel Scoops, Heat Shielding, forward Beam Laser (and a rear mount), and of course a special luxury Passenger Berth which also incorporates a passenger Escape Capsule. All other equipment options are available.}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
However the Contract-a-Cab has NO hold or cargo extension available. The special Passenger Berth is an integrated aspect of the design and cannot be removed  to release cargo space.}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
The Cab has two escape capsules, so in the event of an emergency both pilot and passenger are safeguarded.}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
For anyone looking to operate a YellOo Cab Co franchise, the Contract-a-Cab will excel at providing a safe, comfortable, reasonably fast and reliable means of plying your trade.}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
Base price is 275 450Cr (including 100 000Cr GalCop Taxi Licence fee)}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5

\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5

\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5

\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
Licence/Author}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5

\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
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.}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5

\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
This OXZ was developed by Smivs.}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5

\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
Version Details:-}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
This version (v2.}{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
7}{\cf1\afs24\alang1025\rtlch \ltrch\loch\fs24\loch\f5
) requires Oolite v1.80}
\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0\cf1\alang1025\rtlch \ltrch\loch

\par \pard\plain \s20\ql\nowidctlpar\sb0\sa0\ltrpar\cf1\kerning1\dbch\af8\langfe2052\dbch\af12\afs20\alang1081\loch\f4\fs20\lang2057\sb0\sa0\rtlch \ltrch\loch

\par }

Equipment

This expansion declares no equipment.

Ships

Name
contract-a-cab_Engine
YellOo Cab
Taxi

Models

This expansion declares no models.

Scripts

Path
Scripts/contract-a-cab_Script.js
"use strict"; 

// Standard attributes 
this.name           = "contract-a-Cab_Script.js"; 
this.author         = "Smivs"; 
this.copyright	    = "© Smivs"; 
this.licence        = "Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License"; 
this.version        = "2.7"; 
this.description    = "Script to render ship derelict upon ejection of pilot." 


this.shipLaunchedEscapePod = function()
{
  this.switchFlashersAITimer = new Timer(this, this.$switchFlashersOff,8); // timer to switch off flashers after 8 seconds
  this.switchHullTexTimer = new Timer(this, this.$switchHullTex,12); // timer to switch off hull lights emission map after 12 seconds
  this.rotateDerelictTimer = new Timer(this, this.$rotateDerelict,25); // timer to start derelict rotation after 25 seconds
  this.switchEngineTexTimer = new Timer(this, this.$switchEngineTex,35); // timer to switch engines textures to derelict version after 35 seconds
}
this.$switchFlashersOff = function()
{
  this.ship.lightsActive = false; // turns flashers off
}
this.$switchHullTex = function()
{
  var $yellooCabTexture = this.ship.scriptInfo.yellooCabTexture; // uses scriptInfo key to build ship's default texture name
  var $yellooCabDiffuse = this.ship.scriptInfo.yellooCabDiffuse; // uses scriptInfo key to build ship's diffuse_map name
  var $yellooCabLighting = this.ship.scriptInfo.yellooCabLighting; // uses scriptInfo key to build ship's emission_map name
  var $yellooCabDerelict = this.ship.scriptInfo.yellooCabDerelict; // uses scriptInfo key to build derelict emission_map name
  var $yellooCabNormal = this.ship.scriptInfo.yellooCabNormal; // uses scriptInfo key to build ship's normal_map name
  var $yellooCabSpecular = this.ship.scriptInfo.yellooCabSpecular; // uses scriptInfo key to build ship's specular_map name
  var material = new Object(); // declare variable
  material[$yellooCabTexture] = {diffuse_map:$yellooCabDiffuse, emission_map:$yellooCabDerelict, normal_map:$yellooCabNormal, specular_map:$yellooCabSpecular}; // set up material entry
  this.ship.setMaterials(material); // apply material
}
this.$rotateDerelict = function()
{
  this.rotateVector = Vector3D.randomDirection(); // creates a random axis of rotation.
  this.rotateSpeedFactor = (Math.random() * (0.05) + 0.05); // creates a random rotate speed factor between 0.05 and 0.1 - 0.1 will result in a rotation speed of approx 1 full rotation every 63 seconds, 0.05 in a rotation speed of approx 1 full rotation every 126 seconds.
  this.rotateDerelictCallBack = addFrameCallback(this.rotateFunction.bind(this)); // create FrameCallback
}
this.rotateFunction = function(delta) // delta is the time in game seconds since the last frame.
{
  if (!this.ship.isValid){removeFrameCallback(this.rotateDerelictCallback);delete this.rotateDerelictCallback;return;} // end FrameCallback is ship has died;
  if (delta === 0){return;} // do nothing if game is paused;
  var newOrientation = this.ship.orientation.rotate(this.rotateVector,delta*this.rotateSpeedFactor); // calculates new orientation, using delta as a factor so that rotation speed is constant across varying frame rates. delta*this.rotateSpeedFactor is a value in radians. There are approx 6.3 radians in a full rotation.
  this.ship.orientation = newOrientation; // applies new orientation;
}
this.$switchEngineTex = function()
{
  var $onTexture; // declare variable
  var $offTexture; //declare variable
  var material = new Object(); // declare variable
  var subents = this.ship.subEntities; // create array of subents
  var counter = 0; // set up loop to check if subent is an engine and if so change texture to derelict version
  var subentsLength = subents.length;
  for (counter = 0; counter < subentsLength;counter++)
    {
      if (subents[counter].scriptInfo.engineOnTexture)
	{
	  $onTexture = subents[counter].scriptInfo.engineOnTexture; // uses scriptInfo key to build engine texture name
	  $offTexture = subents[counter].scriptInfo.engineOffTexture; // uses scriptInfo key to build derelict engine texture name
	  material[$onTexture] = {emission_map:$offTexture}; // set up material entry
	  subents[counter].setMaterials(material); // sets material
	}
    }
}
this.entityDestroyed = function()
// stop timers
{
  if(this.switchFlashersAITimer)
    {
      if (this.switchFlashersAITimer.isRunning) 
        {
          this.switchFlashersAITimer.stop();
          delete this.switchFlashersAITimer;
        }
     }
  if(this.switchHullTexTimer)
     {
       if (this.switchHullTexTimer.isRunning) 
         {
           this.switchHullTexTimer.stop();
           delete this.switchHullTexTimer;
         }
     }
  if(this.rotateDerelictTimer)
     {
       if (this.rotateDerelictTimer.isRunning) 
         {
           this.rotateDerelictTimer.stop();
           delete this.rotateDerelictTimer;
         }
      }
  if(this.switchEngineTexTimer)
     {
       if (this.switchEngineTexTimer.isRunning) 
         {
           this.switchEngineTexTimer.stop();
           delete this.switchEngineTexTimer;
         }
      }
}