|  |  | @@ -33,6 +33,14 @@ var things = | 
		
	
		
			
			|  |  |  | "Helicopter": Helicopter, | 
		
	
		
			
			|  |  |  | "Micro": Micro, | 
		
	
		
			
			|  |  |  | "Macro": Macro, | 
		
	
		
			
			|  |  |  | "Squad": Squad, | 
		
	
		
			
			|  |  |  | "Platoon": Platoon, | 
		
	
		
			
			|  |  |  | "Company": Company, | 
		
	
		
			
			|  |  |  | "Battalion": Battalion, | 
		
	
		
			
			|  |  |  | "Brigade": Brigade, | 
		
	
		
			
			|  |  |  | "Division": Division, | 
		
	
		
			
			|  |  |  | "Tank Division": TankDivision, | 
		
	
		
			
			|  |  |  | "Army": Army, | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var areas = | 
		
	
	
		
			
				|  |  | @@ -67,6 +75,14 @@ var areas = | 
		
	
		
			
			|  |  |  | "Helicopter": 8, | 
		
	
		
			
			|  |  |  | "Micro": 0.05, | 
		
	
		
			
			|  |  |  | "Macro": 100, | 
		
	
		
			
			|  |  |  | "Squad": 20, | 
		
	
		
			
			|  |  |  | "Platoon": 100, | 
		
	
		
			
			|  |  |  | "Company": 500, | 
		
	
		
			
			|  |  |  | "Battalion": 3000, | 
		
	
		
			
			|  |  |  | "Brigade": 20000, | 
		
	
		
			
			|  |  |  | "Division": 80000, | 
		
	
		
			
			|  |  |  | "Tank Division": 100000, | 
		
	
		
			
			|  |  |  | "Army": 750000, | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var masses = | 
		
	
	
		
			
				|  |  | @@ -101,6 +117,14 @@ var masses = | 
		
	
		
			
			|  |  |  | "Helicopter": 1500, | 
		
	
		
			
			|  |  |  | "Micro": 0.01, | 
		
	
		
			
			|  |  |  | "Macro": 80000, | 
		
	
		
			
			|  |  |  | "Squad": 1, | 
		
	
		
			
			|  |  |  | "Platoon": 100, | 
		
	
		
			
			|  |  |  | "Company": 500, | 
		
	
		
			
			|  |  |  | "Battalion": 1000, | 
		
	
		
			
			|  |  |  | "Brigade": 1500, | 
		
	
		
			
			|  |  |  | "Division": 2000, | 
		
	
		
			
			|  |  |  | "Tank Division": 3000, | 
		
	
		
			
			|  |  |  | "Army": 5000, | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var clusters = | 
		
	
	
		
			
				|  |  | @@ -135,6 +159,14 @@ var clusters = | 
		
	
		
			
			|  |  |  | "Helicopter": 0, | 
		
	
		
			
			|  |  |  | "Micro": 10, | 
		
	
		
			
			|  |  |  | "Macro": 0, | 
		
	
		
			
			|  |  |  | "Squad": 20, | 
		
	
		
			
			|  |  |  | "Platoon": 2, | 
		
	
		
			
			|  |  |  | "Company": 2, | 
		
	
		
			
			|  |  |  | "Battalion": 2, | 
		
	
		
			
			|  |  |  | "Brigade": 2, | 
		
	
		
			
			|  |  |  | "Division": 3, | 
		
	
		
			
			|  |  |  | "Tank Division": 1, | 
		
	
		
			
			|  |  |  | "Army": 2, | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var cluster_chances = | 
		
	
	
		
			
				|  |  | @@ -169,6 +201,14 @@ var cluster_chances = | 
		
	
		
			
			|  |  |  | "Helicopter": 0, | 
		
	
		
			
			|  |  |  | "Micro": 10, | 
		
	
		
			
			|  |  |  | "Macro": 0, | 
		
	
		
			
			|  |  |  | "Squad": .1, | 
		
	
		
			
			|  |  |  | "Platoon": .1, | 
		
	
		
			
			|  |  |  | "Company": .1, | 
		
	
		
			
			|  |  |  | "Battalion": .1, | 
		
	
		
			
			|  |  |  | "Brigade": .1, | 
		
	
		
			
			|  |  |  | "Division": .1, | 
		
	
		
			
			|  |  |  | "Tank Division": 0.15, | 
		
	
		
			
			|  |  |  | "Army": .1, | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var contents = | 
		
	
	
		
			
				|  |  | @@ -202,7 +242,24 @@ var contents = | 
		
	
		
			
			|  |  |  | "Artillery": [["Soldier",4,6]], | 
		
	
		
			
			|  |  |  | "Helicopter": [["Soldier",4,16]], | 
		
	
		
			
			|  |  |  | "Micro": [[]], | 
		
	
		
			
			|  |  |  | "Macro": [[]] | 
		
	
		
			
			|  |  |  | "Macro": [[]], | 
		
	
		
			
			|  |  |  | //Alterante Army Structuring, may be used later | 
		
	
		
			
			|  |  |  | //"Squad": [["Soldier",6,9]], | 
		
	
		
			
			|  |  |  | // "Platoon": [["Squad",3,4]], | 
		
	
		
			
			|  |  |  | //"Company": [["Platoon",3,5],["Squad",0,2]], | 
		
	
		
			
			|  |  |  | //"Battalion": [["Company",4,6]], | 
		
	
		
			
			|  |  |  | //"Brigade": [["Battalion",2,5],["Company",0,3]], | 
		
	
		
			
			|  |  |  | //"Division": [["Brigade",2,4]], | 
		
	
		
			
			|  |  |  | //"Tank Division": [["Brigade",2,4],["Tank",250,500]], | 
		
	
		
			
			|  |  |  | //"Army": [["Division",3,8],["Tank Division",1,5]], | 
		
	
		
			
			|  |  |  | "Squad": [["Soldier",6,9]], | 
		
	
		
			
			|  |  |  | "Platoon": [["Soldier",16,44]], | 
		
	
		
			
			|  |  |  | "Company": [["Soldier",60,200]], | 
		
	
		
			
			|  |  |  | "Battalion": [["Soldier",300,1000]], | 
		
	
		
			
			|  |  |  | "Brigade": [["Soldier",1500,3200]], | 
		
	
		
			
			|  |  |  | "Division": [["Soldier",10000,16000]], | 
		
	
		
			
			|  |  |  | "Tank Division": [["Soldier",8000,1200],["Tank",250,500]], | 
		
	
		
			
			|  |  |  | "Army": [["Soldier",40000,75000]], | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // replace all instances of from with to | 
		
	
	
		
			
				|  |  | @@ -798,7 +855,7 @@ function Bus(count = 1) { | 
		
	
		
			
			|  |  |  | this.describeOne = function(verbose=true) { | 
		
	
		
			
			|  |  |  | var adjective = random_desc(["rusty","brand-new"], (verbose ? 0.3 : 0)); | 
		
	
		
			
			|  |  |  | var color = random_desc(["black","tan","gray"], (verbose ? 1 : 0)); | 
		
	
		
			
			|  |  |  | var type = random_desc(["bus","double-decker bus","articulating bus"]); | 
		
	
		
			
			|  |  |  | var type = random_desc(["bus","school bus","double-decker bus","articulating bus"]); | 
		
	
		
			
			|  |  |  | return "a " + merge_desc([adjective,color,type]); | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -924,7 +981,7 @@ function House(count = 1) { | 
		
	
		
			
			|  |  |  | this.describeOne = function(verbose=true) { | 
		
	
		
			
			|  |  |  | var size = random_desc(["little","two-story","large"], (verbose ? 0.5 : 0)); | 
		
	
		
			
			|  |  |  | var color = random_desc(["blue","white","gray","tan","green"], (verbose ? 0.5 : 0)); | 
		
	
		
			
			|  |  |  | var name = random_desc(["house","house","house","house","house","trailer"], 1); | 
		
	
		
			
			|  |  |  | var name = random_desc(["house","home","house","house","house","trailer"], 1); | 
		
	
		
			
			|  |  |  | return "a " + merge_desc([size,color,name]); | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -953,7 +1010,7 @@ function Barn(count = 1) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describeOne = function(verbose=true) { | 
		
	
		
			
			|  |  |  | var size = random_desc(["little","big","large"], (verbose ? 0.5 : 0)); | 
		
	
		
			
			|  |  |  | var color = random_desc(["blue","white","gray","tan","green"], (verbose ? 0.5 : 0)); | 
		
	
		
			
			|  |  |  | var color = random_desc(["blue","white","gray","tan","green","red"], (verbose ? 0.5 : 0)); | 
		
	
		
			
			|  |  |  | var name = random_desc(["barn","barn","barn","barn","barn","farmhouse"], 1); | 
		
	
		
			
			|  |  |  | return "a " + merge_desc([size,color,name]); | 
		
	
		
			
			|  |  |  | }; | 
		
	
	
		
			
				|  |  | @@ -1012,7 +1069,7 @@ function LargeSkyscraper(count = 1) { | 
		
	
		
			
			|  |  |  | this.contents = initContents(this.name,this.count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describeOne = function(verbose=true) { | 
		
	
		
			
			|  |  |  | var color = random_desc(["blue","white","gray","tan","green"], (verbose ? 0.5 : 0)); | 
		
	
		
			
			|  |  |  | var color = random_desc(["blue","white","gray","tan","green","glass"], (verbose ? 0.5 : 0)); | 
		
	
		
			
			|  |  |  | var name = random_desc(["skyscraper","office tower","office building"], 1); | 
		
	
		
			
			|  |  |  | return "a " + merge_desc(["towering",color,name]); | 
		
	
		
			
			|  |  |  | }; | 
		
	
	
		
			
				|  |  | @@ -1291,3 +1348,160 @@ function Macro(count = 1) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a smaller macro" : this.count + " smaller macros"); | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Squad(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Squad"; | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = initContents(this.name,this.count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describeOne = function(verbose=true) { | 
		
	
		
			
			|  |  |  | return "a squad"; | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | if (verbose) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a squad" : this.count + " squads") + " made up of " + describe_all(this.contents, verbose); | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a squad" : this.count + " squads"); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Platoon(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Platoon"; | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = initContents(this.name,this.count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describeOne = function(verbose=true) { | 
		
	
		
			
			|  |  |  | return "a military platoon"; | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | if (verbose) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a platoon" : this.count + " platoons") + " consisting of " + describe_all(this.contents, verbose); | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a platoon" : this.count + " platoons"); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Company(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Company"; | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = initContents(this.name,this.count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describeOne = function(verbose=true) { | 
		
	
		
			
			|  |  |  | return "a company of soldiers"; | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | if (verbose) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a company" : this.count + " companies") + " of " + describe_all(this.contents, verbose); | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a company" : this.count + " companies"); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Battalion(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Battalion"; | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = initContents(this.name,this.count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describeOne = function(verbose=true) { | 
		
	
		
			
			|  |  |  | return "a battalion"; | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | if (verbose) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a battalion" : this.count + " battalions") + " containing " + describe_all(this.contents, verbose); | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a battalion" : this.count + " battalions"); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Brigade(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Brigade"; | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = initContents(this.name,this.count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describeOne = function(verbose=true) { | 
		
	
		
			
			|  |  |  | return "a brigade"; | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | if (verbose) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a brigade" : this.count + " brigades") + " made up of " + describe_all(this.contents, verbose); | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a brigade" : this.count + " brigades"); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Division(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Division"; | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = initContents(this.name,this.count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describeOne = function(verbose=true) { | 
		
	
		
			
			|  |  |  | return "a division"; | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | if (verbose) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a division" : this.count + " divisions") + " of " + describe_all(this.contents, verbose); | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a division" : this.count + " divisions"); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function TankDivision(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Tank Division"; | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = initContents(this.name,this.count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describeOne = function(verbose=true) { | 
		
	
		
			
			|  |  |  | return "a tank division"; | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | if (verbose) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a tank division" : this.count + " tank divisions") + " of " + describe_all(this.contents, verbose); | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "a tank division" : this.count + " tank divisions"); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Army(count = 1) { | 
		
	
		
			
			|  |  |  | this.name = "Army"; | 
		
	
		
			
			|  |  |  | copy_defaults(this,new DefaultEntity()); | 
		
	
		
			
			|  |  |  | this.count = count; | 
		
	
		
			
			|  |  |  | this.contents = initContents(this.name,this.count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describeOne = function(verbose=true) { | 
		
	
		
			
			|  |  |  | return "an army"; | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.describe = function(verbose = true) { | 
		
	
		
			
			|  |  |  | if (verbose) { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "an army" : this.count + " armies") + " made up of " + describe_all(this.contents, verbose); | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | return (this.count == 1 ? "an army" : this.count + " armies"); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | //"Brigade": 20000, | 
		
	
		
			
			|  |  |  | //"Division": 80000, | 
		
	
		
			
			|  |  |  | //"Tank Division": 100000, | 
		
	
		
			
			|  |  |  | //"Army": 750000, |