Back to Index Page generated: Nov 12, 2024, 11:02:04 PM

Expansion Distant Stars

Content

Warnings

  1. No version in dependency reference to oolite.oxp.Wildeblood.distant_suns:null
  2. Conflict Expansions mismatch between OXP Manifest and Expansion Manager at character position 0068 (DIGIT ZERO vs LATIN SMALL LETTER N)
  3. Unknown key 'upload_date' at https://wiki.alioth.net/img_auth.php/9/94/Distant_Stars.oxz!manifest.plist

Manifest

from Expansion Manager's OXP list from Expansion Manifest
Description Distant Stars tweaks the appearance of every star individually. Every star has its colour set. Distant Stars tweaks the appearance of every star individually. Every star has its colour set.
Identifier oolite.oxp.Rustem.DistantStar oolite.oxp.Rustem.DistantStar
Title Distant Stars Distant Stars
Category Ambience Ambience
Author Rustem Rustem
Version 0.0.7 0.0.7
Tags
Required Oolite Version
Maximum Oolite Version
Required Expansions
Optional Expansions
Conflict Expansions
  • oolite.oxp.Wildeblood.distant_suns:0
  • oolite.oxp.Wildeblood.distant_suns:
  • Information URL http://bb.aegidian.org/viewtopic.php?f=4&t=17702 n/a
    Download URL https://wiki.alioth.net/img_auth.php/9/94/Distant_Stars.oxz http://wiki.alioth.net/img_auth.php/9/94/Distant_Stars.oxz
    License CC-BY-NC-SA 4.0 CC-BY-NC-SA 4.0
    File Size n/a
    Upload date 1610873375

    Documentation

    Also read http://wiki.alioth.net/index.php/Distant%20Stars

    readme.txt

    Distant Stars
    
    Based on Wildeblood OXP Distant Suns and Stranger's World.
    Based on System Features Sunspots OXP(cim).
    
    Overview - DS
    ==============
    
    The color of the stars depends on sun radius and the planet radius. Agricultural shifted to K-type star, Industrial closer to A-type stars. A-type star are located far away.
    The radius of the sun used by default. The corona shim and hues did change.
    Recommended use with OXP - System Features Sunspots 1.5.
    
    
    License
    ========
    This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 4.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/
    
    Version History
    ================
     Version 0.0.1
     - Test release.
     Version 0.0.2
     - Adjusted the corona flare and correct other parameters. Human inhabitant is not factor now. Correct distance to HZ range. Add sun name.
     Version 0.0.3
     - Adjusted the color of white stars. Correct distribution, fixed bug calculation.  Add corona hues and corona shimmer.
     Version 0.0.4
     - Aggregateted to one file - planetinfo.plist.
     - Added script that did variable corona flare (frequent, dreadful, unpredictable) based on the system description.
     Version 0.0.5
     - Compatible with The Collector OXP.
     Version 0.0.6
     - Fixed populator script for the sun features in the oolite v1.84.
     Version 0.0.7
     - Increased a little more corona flare in the K-type stars.
     - Corrected corona flare in the F-type stars from low limit value to more value.
     - Reduced distance sun-planet in the K8 stars.
     - Fixed sun features script to avoid addition on the saved flare in startup.
     - Added small random value to corona flare for all type of stars.
    
     Future version
     - Adjusted the color in the F-type stars.
     - Turned off debug messages.
    
    Info
    =====
    Wiki:
    * http://wiki.alioth.net/index.php?title=Distant_Stars_OXP
    Feedback:
    * http://bb.aegidian.org/viewtopic.php?f=4&t=17702
    
    Database
    =========
    {										//The HZ range for stars calculated from formula: sqrt[L]
    case "K8": colour = "class K8 star"; break;	//redColor/magentaColor		// HZ ~ 0.35 AU // 0.24 - 0.50
    case "K2": colour = "class K2 star"; break;	//orangeColor			// HZ ~ 0.55 AU // 0.37 - 0.77
    case "G2": colour = "class G2 star"; break;  	//yellowColor		 	// HZ ~ 1.10 AU // 0.72 - 1.52
    case "F2": colour = "class F2 star"; break;	//whiteColor			// HZ ~ 2.70 AU // 1.73 - 3.64
    case "A7": colour = "class A7 star"; break;	//cyanColor			// HZ ~ 3.50 AU // 2.29 - 4.81
    case "A2": colour = "class A2 star"; break;	//blueColor			// HZ ~ 4.90 AU // 3.40 - 7.10
    }
    
    Link
    =====
    * http://www.atnf.csiro.au/outreach//education/senior/astrophysics/photometry_colour.html
    * http://www.daviddarling.info/encyclopedia/H/habzone.html
    * https://en.wikipedia.org/wiki/Circumstellar_habitable_zone
    * https://en.wikipedia.org/wiki/Planetary_habitability
    * https://en.wikipedia.org/wiki/Stellar_classification
    

    Equipment

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

    Ships

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

    Models

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

    Scripts

    Path
    Scripts/ds_spectroscope.js
    "use strict";
    
    this.name 	 = "Spectroscope";
    this.author 	 = "Wildeblood & rustem (edit)";
    this.copyright	 = "March 2016";
    this.licence 	 = "CC-BY-SA 4.0";
    this.version 	 = "0.0.2"; 
    this.description = "Converts values set in planetinfo.plist into descriptive text strings";
    
    /* ====================================================================================
    			SPECTROSCOPE
    
    	Converts values set in planetinfo.plist and found in system.info.sun_color 
    	into descriptive text strings. These are not computed values, so...
    	Setting sun_color = "1.0 0.0 0.0" in planetinfo.plist returns null, even though 
    	it creates the same colour star in the game as setting sun_color = "redColor".
    ======================================================================================= */
    
    this.$spectroscope = function(colour)
    	{
    	if (!colour) colour = system.info.sun_color;
    	if (!colour) return false;
    	switch (colour)
    			{										//The HZ range for stars calculated from formula: sqrt[L]
    			case "M0": //colour = "class M0 star"; break;	//magentaColor ~ 0.6*Sun	// HZ ~ 0.30 AU // 0.19 - 0.40
    			case "K8": colour = "class K8 star"; break;	//redColor			// HZ ~ 0.35 AU // 0.24 - 0.50
    			case "K2": colour = "class K2 star"; break;	//orangeColor			// HZ ~ 0.55 AU // 0.37 - 0.77
    			case "G2": colour = "class G2 star"; break;  	//yellowColor ~ 1.0*Sun 	// HZ ~ 1.10 AU // 0.72 - 1.52
    			case "F2": colour = "class F2 star"; break;	//whiteColor			// HZ ~ 2.70 AU // 1.73 - 3.64
    			case "A7": colour = "class A7 star"; break;	//cyanColor			// HZ ~ 3.50 AU // 2.29 - 4.81
    			case "A2": colour = "class A2 star"; break;	//blueColor ~ 1.9*Sun		// HZ ~ 4.90 AU // 3.40 - 7.10
    			default:   colour = "";
    			}
    	return colour;
    	}
    
    /* ====================================================================================
    			EXAMPLE USE - ADD LINE TO SYSTEM DATA SCREEN
    ======================================================================================= */
    
    this.guiScreenChanged = function()
    	{
    	if (guiScreen === "GUI_SCREEN_SYSTEM_DATA")
    		{
    		var info = System.infoForSystem(galaxyNumber, player.ship.targetSystem);
    		if (info.sun_gone_nova) return;
    		
    		var name    = info.name;
    		var sunName = info.sun_name;
    		var colour  = info.sun_color;
    		if (colour) var colourText = this.$spectroscope(colour);
    
    		if (colourText && sunName) mission.addMessageText("The planet " + name + " orbits the " + colourText + " " + sunName + ".");
    		else if (colourText) mission.addMessageText("The planet " + name + " orbits a " + colourText + ".");
    		else if (sunName) mission.addMessageText("The planet " + name + " orbits the " + sunName + ".");
    		}
    	}
    
    /* ====================================================================================
    			THE END
    ======================================================================================= */
    
    Scripts/systemfeatures-sun.js
    this.name		 	= "System Features: DS Corona";
    this.author			= "rustem"; 
    this.copyright		= "March 2016";
    this.licence		= "CC-BY-SA 4.0";
    this.version		= "0.4";
    this.description	= "Populator script for the sun features";
    
    "use strict";
    
    //Based on System_Features_Sunspots
    //develop -cim-, edit -rustem-
    
    this.startUp = function() {
    		this.$overrides = [[],[],[],[],[],[],[],[]];
    		delete this.startUp;
    		this.logging = true; // Must be false for release
    		if(this.logging) log(this.name,'startUp - System Features for DistantStars');
    		//if did not saved in the system with solar activity and need jump(timer) for reset and recalculate.
    		this.$overrides[galaxyNumber] = system.ID.toString();
    		if(this.logging && system.info.description.indexOf("solar activity") > -1) {
    			if(this.logging) log(this.name,'The startup system with solar activity and need jump for recalculate');
    		}		
    }
    
    this._clearFeatures = function() {
    		//for clearing overrides
    		//this.setFeatures = false;
    		this.$overrides = [[],[],[],[],[],[],[],[]]; // not timer memory of the unpredictable solar activity, may be add TODO list.
    		System.infoForSystem(galaxyNumber, system.ID).corona_flare = null; // for oolite v1.84
    		//System.infoForSystem(galaxyNumber, system.ID).corona_flare = 0;  // for oolite v1.80
    		if(this.logging) log(this.name,'Reset solar activity');
    		return;
    }
    
    this.systemWillPopulate = function() {
    	system.setPopulator("system_features_sun",
    						{
    							callback: this._addFeatures.bind(this),
    							priority: 1000
    						});
    }
    
    this._addFeatures = function() {
    		if (this.$overrides[galaxyNumber].indexOf(system.ID) > -1) {
    				this.setFeatures = true;
    				if(this.logging) log(this.name,'The overrides corona flare is: '+system.info.corona_flare); // Not setup of sun features
    				return;
    		} 
    		if (!system.sun) {
    				return;
    		}
    
    		// make the solar flare
    
    		this.setFeatures = false;
    
    		var addflare = 0;
    		var rndflare = Math.random()*10;
    		var muxflare = Math.random()*1;
    		var corflare = system.info.corona_flare;
    		if(this.logging) log(this.name,'Default corona flare is: '+corflare); //.toFixed(3)
    		 
    		// for oolite v1.84 - Added small random value to corona flare for all type of stars - 0.5%.
    		corflare += Math.random()*0.005;
    								
    		if (system.info.description.indexOf("solar activity") > -1) {
    				if (system.info.sun_name.indexOf("Star") > -1 ) { // checking a type of star
    						if (system.info.sun_name.indexOf("A2") > -1 ) {
    							corflare += Math.random()*0.040;
    							if(this.logging) log(this.name,'Set A2 corona flare is : '+corflare);
    						}
    						if (system.info.sun_name.indexOf("A7") > -1 ) {
    							corflare += Math.random()*0.025;
    							if(this.logging) log(this.name,'Set A7 corona flare is : '+corflare);
    						}
    						if (system.info.sun_name.indexOf("F2") > -1 ) {
    							corflare += Math.random()*0.017;
    							if(this.logging) log(this.name,'Set F2 corona flare is : '+corflare);
    						}
    						if (system.info.sun_name.indexOf("G2") > -1 ) {
    							corflare += Math.random()*0.013;
    							if(this.logging) log(this.name,'Set G2 corona flare is : '+corflare);
    						}
    						if (system.info.sun_name.indexOf("K2") > -1 ) {
    							corflare += Math.random()*0.011;
    							if(this.logging) log(this.name,'Set K2 corona flare is : '+corflare);
    						}
    						if (system.info.sun_name.indexOf("K8") > -1 ) {
    							corflare += Math.random()*0.010;
    							if(this.logging) log(this.name,'Set K8 corona flare is : '+corflare);
    						}
    				} else log(this.name,'Error: No correct star name!');			
    				addflare += corflare*0.5;
    				rndflare *= 1.5;
    				if (system.info.description.indexOf("frequent solar activity") > -1) { // checking a type of activity
    						//rndflare += 3;
    						addflare += 0.025;
    						if(this.logging) log(this.name,'Add frequent value : '+addflare);
    				} else if (system.info.description.indexOf("dreadful solar activity") > -1 || system.info.description.indexOf("deadly solar activity") > -1) {
    						//rndflare *= 1.5;
    						addflare += 0.15;
    						if(this.logging) log(this.name,'Add dreadful(ly) value : '+addflare);
    				} else if (system.info.description.indexOf("unpredictable solar activity") > -1 ) {
    						//rndflare += 1.5;
    						rndflare = Math.floor(rndflare-4.5);
    						if (rndflare < 1) rndflare = 0;
    						rndflare *= muxflare*0.015;
    						addflare += rndflare;
    						if(this.logging) log(this.name,'Add unpredictable value: '+addflare);
    				}
    				corflare += addflare;				
    		}
    		
    		this.setFeatures = true;
    		System.infoForSystem(galaxyNumber, system.ID).corona_flare = corflare;	
    		if(this.logging) log(this.name,'Finally corona flare is: '+corflare); //.toFixed(3)	
    		/*
    		//Set to distant star value for oolite v1.80
    		if (corflare === 0) {
    				if (system.info.sun_name.indexOf("Star") > -1 ) {
    						if (system.info.sun_name.indexOf("A2") > -1 ) {
    							corflare = 0.24 + Math.random()*0.08;
    							if(this.logging) log(this.name,'Set A2 corona flare is:'+corflare);
    						}
    						if (system.info.sun_name.indexOf("A7") > -1 ) {
    							corflare = 0.12 + Math.random()*0.06;
    							if(this.logging) log(this.name,'Set A7 corona flare is:'+corflare);
    						}
    						if (system.info.sun_name.indexOf("F2") > -1 ) {
    							corflare = 0.08 + Math.random()*0.06;
    							if(this.logging) log(this.name,'Set F2 corona flare is:'+corflare);
    						}
    						if (system.info.sun_name.indexOf("G2") > -1 ) {
    							corflare = 0.06 + Math.random()*0.04;
    							if(this.logging) log(this.name,'Set G2 corona flare is:'+corflare);
    						}
    						if (system.info.sun_name.indexOf("K2") > -1 ) {
    							corflare = 0.05 + Math.random()*0.03;
    							if(this.logging) log(this.name,'Set K2 corona flare is:'+corflare);
    						}
    						if (system.info.sun_name.indexOf("K8") > -1 ) {
    							corflare = 0.03 + Math.random()*0.03;
    							if(this.logging) log(this.name,'Set K8 corona flare is:'+corflare);
    						}
    				} else if(this.logging) log(this.name,'No star name!');
    				System.infoForSystem(galaxyNumber, system.ID).corona_flare = corflare;
    				if(this.logging) log(this.name,'Set to distant star value. Final corona flare is:'+corflare);
    		}
    		*/
    }
    
    this.shipWillEnterWitchspace = function(cause)
    {
    	this._resetFeatures();
    }
    
    this._resetFeatures = function()
    {
    	if (this.setFeatures) this._clearFeatures();
    	return;
    }