|  |  | @@ -22,7 +22,13 @@ var things = | 
		
	
		
			
			|  |  |  | "Planet": Planet, | 
		
	
		
			
			|  |  |  | "Star": Star, | 
		
	
		
			
			|  |  |  | "Solar System": SolarSystem, | 
		
	
		
			
			|  |  |  | "Galaxy": Galaxy | 
		
	
		
			
			|  |  |  | "Galaxy": Galaxy, | 
		
	
		
			
			|  |  |  | "Soldier": Soldier, | 
		
	
		
			
			|  |  |  | "Tank": Tank, | 
		
	
		
			
			|  |  |  | "Artillery": Artillery, | 
		
	
		
			
			|  |  |  | "Helicopter": Helicopter, | 
		
	
		
			
			|  |  |  | "Micro": Micro, | 
		
	
		
			
			|  |  |  | "Macro": Macro, | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var areas = | 
		
	
	
		
			
				|  |  | @@ -47,6 +53,12 @@ var areas = | 
		
	
		
			
			|  |  |  | "Star": 3e18, | 
		
	
		
			
			|  |  |  | "Solar System": 3e21, | 
		
	
		
			
			|  |  |  | "Galaxy": 2e42, | 
		
	
		
			
			|  |  |  | "Soldier": 1, | 
		
	
		
			
			|  |  |  | "Tank": 10, | 
		
	
		
			
			|  |  |  | "Artillery": 12, | 
		
	
		
			
			|  |  |  | "Helicopter": 8, | 
		
	
		
			
			|  |  |  | "Micro": 0.05, | 
		
	
		
			
			|  |  |  | "Macro": 100, | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var masses = | 
		
	
	
		
			
				|  |  | @@ -70,7 +82,13 @@ var masses = | 
		
	
		
			
			|  |  |  | "Planet": 5.972e24, | 
		
	
		
			
			|  |  |  | "Star": 1e40, | 
		
	
		
			
			|  |  |  | "Solar System": 1, | 
		
	
		
			
			|  |  |  | "Galaxy": 1 | 
		
	
		
			
			|  |  |  | "Galaxy": 1, | 
		
	
		
			
			|  |  |  | "Soldier": 80, | 
		
	
		
			
			|  |  |  | "Tank": 5000, | 
		
	
		
			
			|  |  |  | "Artillery": 7000, | 
		
	
		
			
			|  |  |  | "Helicopter": 1500, | 
		
	
		
			
			|  |  |  | "Micro": 0.01, | 
		
	
		
			
			|  |  |  | "Macro": 80000, | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var clusters = | 
		
	
	
		
			
				|  |  | @@ -94,7 +112,13 @@ var clusters = | 
		
	
		
			
			|  |  |  | "Planet": 1, | 
		
	
		
			
			|  |  |  | "Star": 1, | 
		
	
		
			
			|  |  |  | "Solar System": 1, | 
		
	
		
			
			|  |  |  | "Galaxy": 1 | 
		
	
		
			
			|  |  |  | "Galaxy": 1, | 
		
	
		
			
			|  |  |  | "Soldier": 0, | 
		
	
		
			
			|  |  |  | "Tank": 0, | 
		
	
		
			
			|  |  |  | "Artillery": 0, | 
		
	
		
			
			|  |  |  | "Helicopter": 0, | 
		
	
		
			
			|  |  |  | "Micro": 10, | 
		
	
		
			
			|  |  |  | "Macro": 0, | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // general logic: each step fills in a fraction of the remaining space | 
		
	
	
		
			
				|  |  | @@ -971,3 +995,93 @@ function Galaxy(count = 1) { | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Soldier(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Soldier"; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = {}; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a soldier" : this.count + " soldiers"); | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Tank(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Tank"; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = {}; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.addContent("Soldier",3,5,count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | if (verbose) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a tank" : this.count + " tanks") + " with " + describe_all(this.contents, verbose) + " trapped inside."; | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a tank" : this.count + " tanks"); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Artillery(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Artillery"; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = {}; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.addContent("Soldier",4,6,count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | if (verbose) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "an artillery unit" : this.count + " artillery units") + " with " + describe_all(this.contents, verbose) + " trapped inside."; | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "an artillery unit" : this.count + " artillery units"); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Helicopter(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Helicopter"; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = {}; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.addContent("Soldier",4,16,count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | if (verbose) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a helicopter" : this.count + " helicopters") + " with " + describe_all(this.contents, verbose) + " riding inside."; | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a helicopter" : this.count + " helicopters"); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Micro(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Micro"; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = {}; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a micro" : this.count + " micros"); | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Macro(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Macro"; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = {}; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a smaller macro" : this.count + " smaller macros"); | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } |