Back to Index | Page generated: Nov 12, 2024, 11:02:04 PM |
from Expansion Manager's OXP list | from Expansion Manifest | |
---|---|---|
Description | A beautiful modern re-work of some of Aegidian's X-ships. Includes the Asp-X, Cobra2-X (plus a new Courier/player version) and the Sidewinder-X (plus a new player version). | A beautiful modern re-work of some of Aegidian's X-ships. Includes the Asp-X, Cobra2-X (plus a new Courier/player version) and the Sidewinder-X (plus a new player version). |
Identifier | oolite.oxp.smivs.ClassicXShips | oolite.oxp.smivs.ClassicXShips |
Title | The Classic X-ships | The Classic X-ships |
Category | Ships | Ships |
Author | Smivs | Smivs |
Version | 1.0 | 1.0 |
Tags | ||
Required Oolite Version | ||
Maximum Oolite Version | ||
Required Expansions | ||
Optional Expansions | ||
Conflict Expansions | ||
Information URL | n/a | |
Download URL | https://wiki.alioth.net/img_auth.php/9/9f/Classic_X-ships.oxz | n/a |
License | CC-BY-NC-SA 3.0 | CC-BY-NC-SA 3.0 |
File Size | n/a | |
Upload date | 1610873395 |
Also read http://wiki.alioth.net/index.php/The%20Classic%20X-ships
{\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\fswiss\fprq2\fcharset0 Liberation Sans{\*\falt Arial};}{\f5\fnil\fprq2\fcharset0 Droid Sans Fallback;}{\f6\fnil\fprq2\fcharset0 FreeSans;}{\f7\fswiss\fprq0\fcharset0 FreeSans;}} {\colortbl;\red0\green0\blue0;\red128\green128\blue128;} {\stylesheet{\s0\snext0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f3\fs24\lang2057 Normal;} {\s15\sbasedon0\snext16\sb240\sa120\keepn\dbch\af5\dbch\af6\afs28\loch\f4\fs28 Heading;} {\s16\sbasedon0\snext16\sl288\slmult1\sb0\sa140 Text Body;} {\s17\sbasedon16\snext17\sl288\slmult1\sb0\sa140\dbch\af7 List;} {\s18\sbasedon0\snext18\sb120\sa120\noline\i\dbch\af7\afs24\ai\fs24 Caption;} {\s19\sbasedon0\snext19\noline\dbch\af7 Index;} }{\info{\author smivs }{\creatim\yr2015\mo9\dy29\hr8\min10}{\author smivs }{\revtim\yr2015\mo9\dy29\hr19\min24}{\printim\yr0\mo0\dy0\hr0\min0}{\comment LibreOffice}{\vern67241986}}\deftab709 \viewscale100 {\*\pgdsctbl {\pgdsc0\pgdscuse451\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Default Style;}} \formshade\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 \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f3\fs24\lang2057{\rtlch \ltrch\loch The Classic X-ships} \par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f3\fs24\lang2057\rtlch \ltrch\loch \par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f3\fs24\lang2057{\rtlch \ltrch\loch A modern remake of some of Aegidian's early OXP ships. } \par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f3\fs24\lang2057{\rtlch \ltrch\loch Asp-X} \par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f3\fs24\lang2057{\rtlch \ltrch\loch Cobra2-X* } \par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f3\fs24\lang2057{\rtlch \ltrch\loch Sidewinder-X} \par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f3\fs24\lang2057{\rtlch \ltrch\loch *with new Cobra2-C variant.} \par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f3\fs24\lang2057\rtlch \ltrch\loch \par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f3\fs24\lang2057{\rtlch \ltrch\loch This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.} \par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f3\fs24\lang2057{\rtlch \ltrch\loch Authored by Smivs.} \par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ltrpar\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f3\fs24\lang2057{\rtlch \ltrch\loch Full info on the wiki.} \par }
Name |
---|
classicShipsEngine1 |
classicShipsEngine2 |
classicShipsGun |
classic_asp_x |
classic_asp_x-player |
Asp-X |
Cobra2-X |
Cobra2-C |
Cobra2-C |
Cobra2-X |
classic_sidewinder_x |
classic_sidewinder_x-player |
Sidewinder-X |
Path | |
---|---|
Scripts/classicShipsScript.js | "use strict"; // Standard attributes this.name = "classicShipsScript.js"; this.author = "Smivs"; this.copyright = "© Smivs"; this.licence = "Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License"; this.version = "1.0"; this.description = "Script to render ship derelict upon ejection of pilot - Classic X-ships" 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 $classicShipsTexture = this.ship.scriptInfo.classicShipsTexture; // uses scriptInfo key to build ship's default texture name var $classicShipsDiffuse = this.ship.scriptInfo.classicShipsDiffuse; // uses scriptInfo key to build ship's diffuse_map name var $classicShipsLighting = this.ship.scriptInfo.classicShipsLighting; // uses scriptInfo key to build ship's emission_map name var $classicShipsDerelict = this.ship.scriptInfo.classicShipsDerelict; // uses scriptInfo key to build derelict emission_map name var $classicShipsNormal = this.ship.scriptInfo.classicShipsNormal; // uses scriptInfo key to build ship's normal_map name var $classicShipsSpecular = this.ship.scriptInfo.classicShipsSpecular; // uses scriptInfo key to build ship's specular_map name var material = new Object(); // declare variable material[$classicShipsTexture] = {diffuse_map:$classicShipsDiffuse, emission_map:$classicShipsDerelict, normal_map:$classicShipsNormal, specular_map:$classicShipsSpecular}; // 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; } } } |