Page MenuHomeWildfire Games

Enforce formation required member count
Needs ReviewPublic

Authored by Angen on Apr 21 2018, 7:31 PM.

Details

Reviewers
None
Group Reviewers
Restricted Owners Package(Owns No Changed Paths)
Trac Tickets
#5119
Summary

Formations require a certain number of members to form, but that isn't enforced when removing members so we can end up with a formation consisting of a single unit, for example.

Test Plan

create formation with required number of troops
remove troops below the requirements
others should not be in formation anymore

Diff Detail

Repository
rP 0 A.D. Public Repository
Branch
/ps/trunk
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 7751
Build 12624: Vulcan BuildJenkins
Build 12623: arc lint + arc unit

Unit TestsFailed

TimeTest
0 msJenkins > cxxtest_debug.xml::[failed-to-read]
Failed to read test report file /mnt/data/jenkins-phabricator/workspace/differential/cxxtest_debug.xml org.dom4j.DocumentException: Error on line 1 of document : Content is not allowed in prolog. Nested exception: Content is not allowed in prolog. at org.dom4j.io.SAXReader.read(SAXReader.java:482)

Event Timeline

Angen created this revision.Apr 21 2018, 7:31 PM
Vulcan added a subscriber: Vulcan.Apr 21 2018, 7:34 PM

Successful build - Chance fights ever on the side of the prudent.

Linter detected issues:
Executing section Default...
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 127| 127| 	this.formationMembersWithAura = []; // Members with a formation aura
| 128| 128| 	this.width = 0;
| 129| 129| 	this.depth = 0;
| 130|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 130|+	this.oldOrientation = { "sin": 0, "cos": 0};
| 131| 131| 	this.twinFormations = [];
| 132| 132| 	// distance from which two twin formations will merge into one.
| 133| 133| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 127| 127| 	this.formationMembersWithAura = []; // Members with a formation aura
| 128| 128| 	this.width = 0;
| 129| 129| 	this.depth = 0;
| 130|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 130|+	this.oldOrientation = {"sin": 0, "cos": 0 };
| 131| 131| 	this.twinFormations = [];
| 132| 132| 	// distance from which two twin formations will merge into one.
| 133| 133| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 145| 145| 
| 146| 146| Formation.prototype.GetSize = function()
| 147| 147| {
| 148|    |-	return {"width": this.width, "depth": this.depth};
|    | 148|+	return { "width": this.width, "depth": this.depth};
| 149| 149| };
| 150| 150| 
| 151| 151| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 145| 145| 
| 146| 146| Formation.prototype.GetSize = function()
| 147| 147| {
| 148|    |-	return {"width": this.width, "depth": this.depth};
|    | 148|+	return {"width": this.width, "depth": this.depth };
| 149| 149| };
| 150| 150| 
| 151| 151| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 564| 564| 			footprints.push(cmpFootprint.GetShape());
| 565| 565| 	}
| 566| 566| 	if (!footprints.length)
| 567|    |-		return {"width":1, "depth": 1};
|    | 567|+		return { "width":1, "depth": 1};
| 568| 568| 
| 569| 569| 	var r = {"width": 0, "depth": 0};
| 570| 570| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'width'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 564| 564| 			footprints.push(cmpFootprint.GetShape());
| 565| 565| 	}
| 566| 566| 	if (!footprints.length)
| 567|    |-		return {"width":1, "depth": 1};
|    | 567|+		return {"width": 1, "depth": 1};
| 568| 568| 
| 569| 569| 	var r = {"width": 0, "depth": 0};
| 570| 570| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 564| 564| 			footprints.push(cmpFootprint.GetShape());
| 565| 565| 	}
| 566| 566| 	if (!footprints.length)
| 567|    |-		return {"width":1, "depth": 1};
|    | 567|+		return {"width":1, "depth": 1 };
| 568| 568| 
| 569| 569| 	var r = {"width": 0, "depth": 0};
| 570| 570| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 566| 566| 	if (!footprints.length)
| 567| 567| 		return {"width":1, "depth": 1};
| 568| 568| 
| 569|    |-	var r = {"width": 0, "depth": 0};
|    | 569|+	var r = { "width": 0, "depth": 0};
| 570| 570| 	for (var shape of footprints)
| 571| 571| 	{
| 572| 572| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 566| 566| 	if (!footprints.length)
| 567| 567| 		return {"width":1, "depth": 1};
| 568| 568| 
| 569|    |-	var r = {"width": 0, "depth": 0};
|    | 569|+	var r = {"width": 0, "depth": 0 };
| 570| 570| 	for (var shape of footprints)
| 571| 571| 	{
| 572| 572| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 568| 568| 
| 569| 569| 	var r = {"width": 0, "depth": 0};
| 570| 570| 	for (var shape of footprints)
| 571|    |-	{
|    | 571|+	
| 572| 572| 		if (shape.type == "circle")
| 573| 573| 		{
| 574| 574| 			r.width += shape.radius * 2;
| 579| 579| 			r.width += shape.width;
| 580| 580| 			r.depth += shape.depth;
| 581| 581| 		}
| 582|    |-	}
|    | 582|+	
| 583| 583| 	r.width /= footprints.length;
| 584| 584| 	r.depth /= footprints.length;
| 585| 585| 	return r;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 592| 592| 	separation.depth *= this.separationMultiplier.depth;
| 593| 593| 
| 594| 594| 	if (this.columnar)
| 595|    |-		var sortingClasses = ["Cavalry","Infantry"];
|    | 595|+		var sortingClasses = ["Cavalry", "Infantry"];
| 596| 596| 	else
| 597| 597| 		var sortingClasses = this.sortingClasses.slice();
| 598| 598| 	sortingClasses.push("Unknown");
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 609| 609| 		var classes = cmpIdentity.GetClassesList();
| 610| 610| 		var done = false;
| 611| 611| 		for (var c = 0; c < sortingClasses.length; ++c)
| 612|    |-		{
|    | 612|+		
| 613| 613| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 614| 614| 			{
| 615| 615| 				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
| 616| 616| 				done = true;
| 617| 617| 				break;
| 618| 618| 			}
| 619|    |-		}
|    | 619|+		
| 620| 620| 		if (!done)
| 621| 621| 			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
| 622| 622| 	}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 612| 612| 		{
| 613| 613| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 614| 614| 			{
| 615|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 615|+				types[sortingClasses[c]].push({ "ent": active[i], "pos": positions[i]});
| 616| 616| 				done = true;
| 617| 617| 				break;
| 618| 618| 			}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 612| 612| 		{
| 613| 613| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 614| 614| 			{
| 615|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 615|+				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i] });
| 616| 616| 				done = true;
| 617| 617| 				break;
| 618| 618| 			}
|    | [NORMAL] ESLintBear (dot-notation):
|    | ["Unknown"] is better written in dot notation.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 618| 618| 			}
| 619| 619| 		}
| 620| 620| 		if (!done)
| 621|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 621|+			types.Unknown.push({"ent": active[i], "pos": positions[i]});
| 622| 622| 	}
| 623| 623| 
| 624| 624| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 618| 618| 			}
| 619| 619| 		}
| 620| 620| 		if (!done)
| 621|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 621|+			types["Unknown"].push({ "ent": active[i], "pos": positions[i]});
| 622| 622| 	}
| 623| 623| 
| 624| 624| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 618| 618| 			}
| 619| 619| 		}
| 620| 620| 		if (!done)
| 621|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 621|+			types["Unknown"].push({"ent": active[i], "pos": positions[i] });
| 622| 622| 	}
| 623| 623| 
| 624| 624| 	var count = active.length;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 636| 636| 	if (this.columnar)
| 637| 637| 	{
| 638| 638| 		shape = "square";
| 639|    |-		cols = Math.min(count,3);
|    | 639|+		cols = Math.min(count, 3);
| 640| 640| 		shiftRows = false;
| 641| 641| 		centerGap = 0;
| 642| 642| 		sortingOrder = null;
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 690| 690| 					n -= r%2;
| 691| 691| 			}
| 692| 692| 			else if (shape == "triangle")
| 693|    |-			{
|    | 693|+			
| 694| 694| 				if (shiftRows)
| 695| 695| 					var n = r + 1;
| 696| 696| 				else
| 697| 697| 					var n = r * 2 + 1;
| 698|    |-			}
|    | 698|+			
| 699| 699| 			if (!shiftRows && n > left)
| 700| 700| 				n = left;
| 701| 701| 			for (var c = 0; c < n && left > 0; ++c)
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 731| 731| 	// calculating offset distances without a zero average makes no sense, as the formation
| 732| 732| 	// will jump to a different position any time
| 733| 733| 	var avgoffset = Vector2D.average(offsets);
| 734|    |-	offsets.forEach(function (o) {o.sub(avgoffset);});
|    | 734|+	offsets.forEach(function(o) {o.sub(avgoffset);});
| 735| 735| 
| 736| 736| 	// sort the available places in certain ways
| 737| 737| 	// the places first in the list will contain the heaviest units as defined by the order
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 790| 790| 			closestOffsetId = i;
| 791| 791| 		}
| 792| 792| 	}
| 793|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 793|+	this.memberPositions[entPos.ent] = { "row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
| 794| 794| 	return closestOffsetId;
| 795| 795| };
| 796| 796| 
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'column'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 790| 790| 			closestOffsetId = i;
| 791| 791| 		}
| 792| 792| 	}
| 793|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 793|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column": offsets[closestOffsetId].column};
| 794| 794| 	return closestOffsetId;
| 795| 795| };
| 796| 796| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 790| 790| 			closestOffsetId = i;
| 791| 791| 		}
| 792| 792| 	}
| 793|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 793|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column };
| 794| 794| 	return closestOffsetId;
| 795| 795| };
| 796| 796| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 800| 800| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 801| 801| {
| 802| 802| 	var offsetPositions = [];
| 803|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 803|+	var { sin, cos} = this.GetEstimatedOrientation(pos);
| 804| 804| 	// calculate the world positions
| 805| 805| 	for (var o of offsets)
| 806| 806| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 800| 800| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 801| 801| {
| 802| 802| 	var offsetPositions = [];
| 803|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 803|+	var {sin, cos } = this.GetEstimatedOrientation(pos);
| 804| 804| 	// calculate the world positions
| 805| 805| 	for (var o of offsets)
| 806| 806| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 817| 817| Formation.prototype.GetEstimatedOrientation = function(pos)
| 818| 818| {
| 819| 819| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 820|    |-	var r = {"sin": 0, "cos": 1};
|    | 820|+	var r = { "sin": 0, "cos": 1};
| 821| 821| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 822| 822| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 823| 823| 	{
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 817| 817| Formation.prototype.GetEstimatedOrientation = function(pos)
| 818| 818| {
| 819| 819| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 820|    |-	var r = {"sin": 0, "cos": 1};
|    | 820|+	var r = {"sin": 0, "cos": 1 };
| 821| 821| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 822| 822| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 823| 823| 	{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 899| 899| 		cmpOtherFormation.RemoveMembers(otherMembers);
| 900| 900| 		this.AddMembers(otherMembers);
| 901| 901| 		Engine.DestroyEntity(this.twinFormations[i]);
| 902|    |-		this.twinFormations.splice(i,1);
|    | 902|+		this.twinFormations.splice(i, 1);
| 903| 903| 	}
| 904| 904| 	// Switch between column and box if necessary
| 905| 905| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);

binaries/data/mods/public/simulation/components/Formation.js
| 336| »   for·(var·ent·of·this.formationMembersWithAura)
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 423| »   for·(var·ent·of·this.formationMembersWithAura)
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 469| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 510| »   »   var·cmpUnitAI·=·Engine.QueryInterface(offset.ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 545| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 597| »   »   var·sortingClasses·=·this.sortingClasses.slice();
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 606| »   for·(var·i·in·active)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 621| »   »   »   types["Unknown"].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | ['Unknown'] is better written in dot notation.

binaries/data/mods/public/simulation/components/Formation.js
| 661| »   »   for·(var·i·=·0;·i·<·count;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 695| »   »   »   »   »   var·n·=·r·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 697| »   »   »   »   »   var·n·=·r·*·2·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 701| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'c' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 708| »   »   »   »   »   var·x·=·side·*·Math.ceil(c/2)·*·separation.width;
|    | [NORMAL] JSHintBear:
|    | 'x' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 711| »   »   »   »   »   if·(x·==·0)·//·don't·use·the·center·position·with·a·center·gap
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 713| »   »   »   »   »   x·+=·side·*·centerGap·/·2;
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 719| »   »   »   »   offsets.push(new·Vector2D(x·+·r1,·z·+·r2));
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 699| »   »   »   if·(!shiftRows·&&·n·>·left)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 700| »   »   »   »   n·=·left;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 701| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 705| »   »   »   »   if·(n%2·==·0)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 715| »   »   »   »   var·column·=·Math.ceil(n/2)·+·Math.ceil(c/2)·*·side;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 725| »   »   »   this.maxColumnsUsed[r]·=·n;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 754| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 598| »   sortingClasses.push("Unknown");
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 603| »   for·(var·i·=·0;·i·<·sortingClasses.length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 604| »   »   types[sortingClasses[i]]·=·[];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 611| »   »   for·(var·c·=·0;·c·<·sortingClasses.length;·++c)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 613| »   »   »   if·(classes.indexOf(sortingClasses[c])·>·-1)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 615| »   »   »   »   types[sortingClasses[c]].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 754| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 756| »   »   var·t·=·types[sortingClasses[i-1]];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 861| »   var·cmpUnitMotion·=·Engine.QueryInterface(this.entity,·IID_UnitMotion);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitMotion' is already defined.

Link to build: https://jenkins.wildfiregames.com/job/differential/423/display/redirect

elexis added a subscriber: elexis.Apr 21 2018, 8:03 PM
elexis added inline comments.
binaries/data/mods/public/simulation/components/Formation.js
79

(Not sure why we allocate these 2 variables)

349

Either the first condition is implied by the second or the mod maker is up to something that we don't necessarily have to prohibit (1 entity formation in the templates)?

If we want to prohibit 1 entity formations entirely, we might want to look up if we can add this constraint in the XML schema at the top of this file (wouldn't be surprised if its not feasible).

bb added a subscriber: bb.Apr 21 2018, 10:12 PM
bb added inline comments.
binaries/data/mods/public/simulation/components/Formation.js
349

(n the first check implies the second if no really weird things happen, not the other way around) But that still means we should remove the first check.

Also the comment above should change

353

but that won't be enough now, considering aura's f.e. we should call the disband function instead

Angen updated this revision to Diff 6454.Apr 22 2018, 6:47 PM

minimal count of members in formation enforced to 2 using xml formation schema

Owners added a subscriber: Restricted Owners Package.Apr 22 2018, 6:47 PM
Stan added a subscriber: Stan.Apr 22 2018, 6:53 PM
Stan added inline comments.
binaries/data/mods/public/gui/session/selection_panels.js
291

Comments start with caps. Forbidden -> Disabled.

292

Don't we have something like MatchClassesList for those kind of operations ?

binaries/data/mods/public/simulation/components/Formation.js
352

Comments start with caps.

Successful build - Chance fights ever on the side of the prudent.

Linter detected issues:
Executing section Default...
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (no-trailing-spaces):
|    | Trailing spaces not allowed.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 289| 289| 	"getItems": function(unitEntStates)
| 290| 290| 	{
| 291| 291| 		// hide panel if formations are forbidden for some class in selection
| 292|    |-		if (unitEntStates.some(state => !hasClass(state, "Unit")) || 
|    | 292|+		if (unitEntStates.some(state => !hasClass(state, "Unit")) ||
| 293| 293| 			unitEntStates.some(state => hasClass(state, "Domestic") || hasClass(state, "FemaleCitizen") || hasClass(state, "Trader"))
| 294| 294| 			)
| 295| 295| 			return [];
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 291| 291| 		// hide panel if formations are forbidden for some class in selection
| 292| 292| 		if (unitEntStates.some(state => !hasClass(state, "Unit")) || 
| 293| 293| 			unitEntStates.some(state => hasClass(state, "Domestic") || hasClass(state, "FemaleCitizen") || hasClass(state, "Trader"))
| 294|    |-			)
|    | 294|+		)
| 295| 295| 			return [];
| 296| 296| 
| 297| 297| 		if (!g_AvailableFormations.has(unitEntStates[0].player))
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 452| 452| 				continue;
| 453| 453| 
| 454| 454| 			if (state.pack.progress == 0)
| 455|    |-			{
|    | 455|+			
| 456| 456| 				if (state.pack.packed)
| 457| 457| 					checks.unpackButton = true;
| 458| 458| 				else
| 459| 459| 					checks.packButton = true;
| 460|    |-			}
|    | 460|+			
| 461| 461| 			else if (state.pack.packed)
| 462| 462| 				checks.unpackCancelButton = true;
| 463| 463| 			else
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 763| 763| 				addResearchToQueue(data.item.researchFacilityId, t);
| 764| 764| 			})(tech);
| 765| 765| 
| 766|    |-			button.onPressRight = (t => function () {
|    | 766|+			button.onPressRight = (t => function() {
| 767| 767| 				showTemplateDetails(
| 768| 768| 					t,
| 769| 769| 					GetTemplateData(data.unitEntStates.find(state => state.id == data.item.researchFacilityId).template).nativeCiv);
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 941| 941| 			"player": data.player
| 942| 942| 		});
| 943| 943| 
| 944|    |-		let unitIds = data.unitEntStates.map(status => status.id)
|    | 944|+		let unitIds = data.unitEntStates.map(status => status.id);
| 945| 945| 		let [buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch] =
| 946| 946| 			getTrainingStatus(unitIds, data.item, data.playerState);
| 947| 947| 

binaries/data/mods/public/gui/session/selection_panels.js
|  48| »   »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
|  59| »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 731| »   »   »   »   »   »   switch·(entity.check)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 944| »   »   let·unitIds·=·data.unitEntStates.map(status·=>·status.id)
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = { "sin": 0, "cos": 0};
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = {"sin": 0, "cos": 0 };
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return { "width": this.width, "depth": this.depth};
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return {"width": this.width, "depth": this.depth };
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 568| 568| 			footprints.push(cmpFootprint.GetShape());
| 569| 569| 	}
| 570| 570| 	if (!footprints.length)
| 571|    |-		return {"width":1, "depth": 1};
|    | 571|+		return { "width":1, "depth": 1};
| 572| 572| 
| 573| 573| 	var r = {"width": 0, "depth": 0};
| 574| 574| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'width'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 568| 568| 			footprints.push(cmpFootprint.GetShape());
| 569| 569| 	}
| 570| 570| 	if (!footprints.length)
| 571|    |-		return {"width":1, "depth": 1};
|    | 571|+		return {"width": 1, "depth": 1};
| 572| 572| 
| 573| 573| 	var r = {"width": 0, "depth": 0};
| 574| 574| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 568| 568| 			footprints.push(cmpFootprint.GetShape());
| 569| 569| 	}
| 570| 570| 	if (!footprints.length)
| 571|    |-		return {"width":1, "depth": 1};
|    | 571|+		return {"width":1, "depth": 1 };
| 572| 572| 
| 573| 573| 	var r = {"width": 0, "depth": 0};
| 574| 574| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 570| 570| 	if (!footprints.length)
| 571| 571| 		return {"width":1, "depth": 1};
| 572| 572| 
| 573|    |-	var r = {"width": 0, "depth": 0};
|    | 573|+	var r = { "width": 0, "depth": 0};
| 574| 574| 	for (var shape of footprints)
| 575| 575| 	{
| 576| 576| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 570| 570| 	if (!footprints.length)
| 571| 571| 		return {"width":1, "depth": 1};
| 572| 572| 
| 573|    |-	var r = {"width": 0, "depth": 0};
|    | 573|+	var r = {"width": 0, "depth": 0 };
| 574| 574| 	for (var shape of footprints)
| 575| 575| 	{
| 576| 576| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 572| 572| 
| 573| 573| 	var r = {"width": 0, "depth": 0};
| 574| 574| 	for (var shape of footprints)
| 575|    |-	{
|    | 575|+	
| 576| 576| 		if (shape.type == "circle")
| 577| 577| 		{
| 578| 578| 			r.width += shape.radius * 2;
| 583| 583| 			r.width += shape.width;
| 584| 584| 			r.depth += shape.depth;
| 585| 585| 		}
| 586|    |-	}
|    | 586|+	
| 587| 587| 	r.width /= footprints.length;
| 588| 588| 	r.depth /= footprints.length;
| 589| 589| 	return r;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 596| 596| 	separation.depth *= this.separationMultiplier.depth;
| 597| 597| 
| 598| 598| 	if (this.columnar)
| 599|    |-		var sortingClasses = ["Cavalry","Infantry"];
|    | 599|+		var sortingClasses = ["Cavalry", "Infantry"];
| 600| 600| 	else
| 601| 601| 		var sortingClasses = this.sortingClasses.slice();
| 602| 602| 	sortingClasses.push("Unknown");
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 613| 613| 		var classes = cmpIdentity.GetClassesList();
| 614| 614| 		var done = false;
| 615| 615| 		for (var c = 0; c < sortingClasses.length; ++c)
| 616|    |-		{
|    | 616|+		
| 617| 617| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 618| 618| 			{
| 619| 619| 				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
| 620| 620| 				done = true;
| 621| 621| 				break;
| 622| 622| 			}
| 623|    |-		}
|    | 623|+		
| 624| 624| 		if (!done)
| 625| 625| 			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
| 626| 626| 	}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 616| 616| 		{
| 617| 617| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 618| 618| 			{
| 619|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 619|+				types[sortingClasses[c]].push({ "ent": active[i], "pos": positions[i]});
| 620| 620| 				done = true;
| 621| 621| 				break;
| 622| 622| 			}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 616| 616| 		{
| 617| 617| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 618| 618| 			{
| 619|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 619|+				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i] });
| 620| 620| 				done = true;
| 621| 621| 				break;
| 622| 622| 			}
|    | [NORMAL] ESLintBear (dot-notation):
|    | ["Unknown"] is better written in dot notation.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 622| 622| 			}
| 623| 623| 		}
| 624| 624| 		if (!done)
| 625|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 625|+			types.Unknown.push({"ent": active[i], "pos": positions[i]});
| 626| 626| 	}
| 627| 627| 
| 628| 628| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 622| 622| 			}
| 623| 623| 		}
| 624| 624| 		if (!done)
| 625|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 625|+			types["Unknown"].push({ "ent": active[i], "pos": positions[i]});
| 626| 626| 	}
| 627| 627| 
| 628| 628| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 622| 622| 			}
| 623| 623| 		}
| 624| 624| 		if (!done)
| 625|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 625|+			types["Unknown"].push({"ent": active[i], "pos": positions[i] });
| 626| 626| 	}
| 627| 627| 
| 628| 628| 	var count = active.length;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 640| 640| 	if (this.columnar)
| 641| 641| 	{
| 642| 642| 		shape = "square";
| 643|    |-		cols = Math.min(count,3);
|    | 643|+		cols = Math.min(count, 3);
| 644| 644| 		shiftRows = false;
| 645| 645| 		centerGap = 0;
| 646| 646| 		sortingOrder = null;
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 694| 694| 					n -= r%2;
| 695| 695| 			}
| 696| 696| 			else if (shape == "triangle")
| 697|    |-			{
|    | 697|+			
| 698| 698| 				if (shiftRows)
| 699| 699| 					var n = r + 1;
| 700| 700| 				else
| 701| 701| 					var n = r * 2 + 1;
| 702|    |-			}
|    | 702|+			
| 703| 703| 			if (!shiftRows && n > left)
| 704| 704| 				n = left;
| 705| 705| 			for (var c = 0; c < n && left > 0; ++c)
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 735| 735| 	// calculating offset distances without a zero average makes no sense, as the formation
| 736| 736| 	// will jump to a different position any time
| 737| 737| 	var avgoffset = Vector2D.average(offsets);
| 738|    |-	offsets.forEach(function (o) {o.sub(avgoffset);});
|    | 738|+	offsets.forEach(function(o) {o.sub(avgoffset);});
| 739| 739| 
| 740| 740| 	// sort the available places in certain ways
| 741| 741| 	// the places first in the list will contain the heaviest units as defined by the order
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 794| 794| 			closestOffsetId = i;
| 795| 795| 		}
| 796| 796| 	}
| 797|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 797|+	this.memberPositions[entPos.ent] = { "row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
| 798| 798| 	return closestOffsetId;
| 799| 799| };
| 800| 800| 
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'column'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 794| 794| 			closestOffsetId = i;
| 795| 795| 		}
| 796| 796| 	}
| 797|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 797|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column": offsets[closestOffsetId].column};
| 798| 798| 	return closestOffsetId;
| 799| 799| };
| 800| 800| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 794| 794| 			closestOffsetId = i;
| 795| 795| 		}
| 796| 796| 	}
| 797|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 797|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column };
| 798| 798| 	return closestOffsetId;
| 799| 799| };
| 800| 800| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 804| 804| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 805| 805| {
| 806| 806| 	var offsetPositions = [];
| 807|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 807|+	var { sin, cos} = this.GetEstimatedOrientation(pos);
| 808| 808| 	// calculate the world positions
| 809| 809| 	for (var o of offsets)
| 810| 810| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 804| 804| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 805| 805| {
| 806| 806| 	var offsetPositions = [];
| 807|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 807|+	var {sin, cos } = this.GetEstimatedOrientation(pos);
| 808| 808| 	// calculate the world positions
| 809| 809| 	for (var o of offsets)
| 810| 810| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 821| 821| Formation.prototype.GetEstimatedOrientation = function(pos)
| 822| 822| {
| 823| 823| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 824|    |-	var r = {"sin": 0, "cos": 1};
|    | 824|+	var r = { "sin": 0, "cos": 1};
| 825| 825| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 826| 826| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 827| 827| 	{
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 821| 821| Formation.prototype.GetEstimatedOrientation = function(pos)
| 822| 822| {
| 823| 823| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 824|    |-	var r = {"sin": 0, "cos": 1};
|    | 824|+	var r = {"sin": 0, "cos": 1 };
| 825| 825| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 826| 826| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 827| 827| 	{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 903| 903| 		cmpOtherFormation.RemoveMembers(otherMembers);
| 904| 904| 		this.AddMembers(otherMembers);
| 905| 905| 		Engine.DestroyEntity(this.twinFormations[i]);
| 906|    |-		this.twinFormations.splice(i,1);
|    | 906|+		this.twinFormations.splice(i, 1);
| 907| 907| 	}
| 908| 908| 	// Switch between column and box if necessary
| 909| 909| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);

binaries/data/mods/public/simulation/components/Formation.js
| 427| »   for·(var·ent·of·this.formationMembersWithAura)
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 473| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 514| »   »   var·cmpUnitAI·=·Engine.QueryInterface(offset.ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 549| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 601| »   »   var·sortingClasses·=·this.sortingClasses.slice();
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 610| »   for·(var·i·in·active)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 625| »   »   »   types["Unknown"].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | ['Unknown'] is better written in dot notation.

binaries/data/mods/public/simulation/components/Formation.js
| 665| »   »   for·(var·i·=·0;·i·<·count;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 699| »   »   »   »   »   var·n·=·r·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 701| »   »   »   »   »   var·n·=·r·*·2·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 705| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'c' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 712| »   »   »   »   »   var·x·=·side·*·Math.ceil(c/2)·*·separation.width;
|    | [NORMAL] JSHintBear:
|    | 'x' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 715| »   »   »   »   »   if·(x·==·0)·//·don't·use·the·center·position·with·a·center·gap
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 717| »   »   »   »   »   x·+=·side·*·centerGap·/·2;
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 723| »   »   »   »   offsets.push(new·Vector2D(x·+·r1,·z·+·r2));
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   if·(!shiftRows·&&·n·>·left)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   »   n·=·left;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 705| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 709| »   »   »   »   if·(n%2·==·0)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 719| »   »   »   »   var·column·=·Math.ceil(n/2)·+·Math.ceil(c/2)·*·side;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 729| »   »   »   this.maxColumnsUsed[r]·=·n;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 758| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 602| »   sortingClasses.push("Unknown");
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 607| »   for·(var·i·=·0;·i·<·sortingClasses.length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 608| »   »   types[sortingClasses[i]]·=·[];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 615| »   »   for·(var·c·=·0;·c·<·sortingClasses.length;·++c)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 617| »   »   »   if·(classes.indexOf(sortingClasses[c])·>·-1)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 619| »   »   »   »   types[sortingClasses[c]].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 758| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 760| »   »   var·t·=·types[sortingClasses[i-1]];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 865| »   var·cmpUnitMotion·=·Engine.QueryInterface(this.entity,·IID_UnitMotion);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitMotion' is already defined.

Link to build: https://jenkins.wildfiregames.com/job/differential/428/display/redirect

elexis added inline comments.Apr 23 2018, 11:44 AM
binaries/data/mods/public/gui/session/selection_panels.js
293

The commit that had introduced the panel hiding if there are no formations available had the idea to remove the hardcoding.

Hardcoded collections of unit classes are deemed and doomed to fail in the future and with mods (that don't use women but cars or aliens for instance).

What we want is to display the formations panel if it is possible to enter a formation if the conditions are met, display but disable it if the conditions are not met, and hide it if there are no formations at all, right?

So we could check if the Formations part of the template is non-empty to determine the visibility, no?

binaries/data/mods/public/simulation/components/Formation.js
10

We don't have these URLs elsewhere in the code, are they needed for the minInclusive or is it only to ease lookup of the syntax for the reader?

352

Comment seems redundant with the variable and function names already

binaries/data/mods/public/simulation/templates/template_formation.xml
26

At least

binaries/data/mods/public/simulation/templates/template_unit_support_trader.xml
16 ↗(On Diff #6454)

That's already a visible class and we don't duplicate these, do we?

Angen added inline comments.Apr 25 2018, 6:13 PM
binaries/data/mods/public/simulation/components/Formation.js
10

I rechecked that, they are not needed thnx

binaries/data/mods/public/simulation/templates/template_formation.xml
26

We have others formations saying n units required, but ok

Angen updated this revision to Diff 6473.EditedApr 25 2018, 6:17 PM

hide if formation list is empty, else display

Need to decide what with null formation

Successful build - Chance fights ever on the side of the prudent.

Linter detected issues:
Executing section Default...
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 1 tab but found 2.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels_helpers.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels_helpers.js
|  21|  21| {
|  22|  22| 	return Engine.GuiInterfaceCall("CanAllEntsUseAnyFormation", {
|  23|  23| 		"ents": g_Selection.toList()
|  24|    |-		});
|    |  24|+	});
|  25|  25| }
|  26|  26| 
|  27|  27| function hasSameRestrictionCategory(templateName1, templateName2)
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels_helpers.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels_helpers.js
| 421| 421| 	let otherEnts = [];
| 422| 422| 
| 423| 423| 	for (let ent of garrisonHolders)
| 424|    |-	{
|    | 424|+	
| 425| 425| 		if (controlsPlayer(GetEntityState(ent).player))
| 426| 426| 			ownEnts.push(ent);
| 427| 427| 		else
| 428| 428| 			otherEnts.push(ent);
| 429|    |-	}
|    | 429|+	
| 430| 430| 
| 431| 431| 	if (ownEnts.length)
| 432| 432| 		Engine.PostNetworkCommand({
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = { "sin": 0, "cos": 0};
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = {"sin": 0, "cos": 0 };
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return { "width": this.width, "depth": this.depth};
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return {"width": this.width, "depth": this.depth };
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return { "width":1, "depth": 1};
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'width'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return {"width": 1, "depth": 1};
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return {"width":1, "depth": 1 };
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 569| 569| 	if (!footprints.length)
| 570| 570| 		return {"width":1, "depth": 1};
| 571| 571| 
| 572|    |-	var r = {"width": 0, "depth": 0};
|    | 572|+	var r = { "width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
| 574| 574| 	{
| 575| 575| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 569| 569| 	if (!footprints.length)
| 570| 570| 		return {"width":1, "depth": 1};
| 571| 571| 
| 572|    |-	var r = {"width": 0, "depth": 0};
|    | 572|+	var r = {"width": 0, "depth": 0 };
| 573| 573| 	for (var shape of footprints)
| 574| 574| 	{
| 575| 575| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
| 574|    |-	{
|    | 574|+	
| 575| 575| 		if (shape.type == "circle")
| 576| 576| 		{
| 577| 577| 			r.width += shape.radius * 2;
| 582| 582| 			r.width += shape.width;
| 583| 583| 			r.depth += shape.depth;
| 584| 584| 		}
| 585|    |-	}
|    | 585|+	
| 586| 586| 	r.width /= footprints.length;
| 587| 587| 	r.depth /= footprints.length;
| 588| 588| 	return r;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 595| 595| 	separation.depth *= this.separationMultiplier.depth;
| 596| 596| 
| 597| 597| 	if (this.columnar)
| 598|    |-		var sortingClasses = ["Cavalry","Infantry"];
|    | 598|+		var sortingClasses = ["Cavalry", "Infantry"];
| 599| 599| 	else
| 600| 600| 		var sortingClasses = this.sortingClasses.slice();
| 601| 601| 	sortingClasses.push("Unknown");
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 612| 612| 		var classes = cmpIdentity.GetClassesList();
| 613| 613| 		var done = false;
| 614| 614| 		for (var c = 0; c < sortingClasses.length; ++c)
| 615|    |-		{
|    | 615|+		
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618| 618| 				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
| 622|    |-		}
|    | 622|+		
| 623| 623| 		if (!done)
| 624| 624| 			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
| 625| 625| 	}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 615| 615| 		{
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 618|+				types[sortingClasses[c]].push({ "ent": active[i], "pos": positions[i]});
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 615| 615| 		{
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 618|+				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i] });
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
|    | [NORMAL] ESLintBear (dot-notation):
|    | ["Unknown"] is better written in dot notation.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types.Unknown.push({"ent": active[i], "pos": positions[i]});
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types["Unknown"].push({ "ent": active[i], "pos": positions[i]});
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types["Unknown"].push({"ent": active[i], "pos": positions[i] });
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 639| 639| 	if (this.columnar)
| 640| 640| 	{
| 641| 641| 		shape = "square";
| 642|    |-		cols = Math.min(count,3);
|    | 642|+		cols = Math.min(count, 3);
| 643| 643| 		shiftRows = false;
| 644| 644| 		centerGap = 0;
| 645| 645| 		sortingOrder = null;
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 693| 693| 					n -= r%2;
| 694| 694| 			}
| 695| 695| 			else if (shape == "triangle")
| 696|    |-			{
|    | 696|+			
| 697| 697| 				if (shiftRows)
| 698| 698| 					var n = r + 1;
| 699| 699| 				else
| 700| 700| 					var n = r * 2 + 1;
| 701|    |-			}
|    | 701|+			
| 702| 702| 			if (!shiftRows && n > left)
| 703| 703| 				n = left;
| 704| 704| 			for (var c = 0; c < n && left > 0; ++c)
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 734| 734| 	// calculating offset distances without a zero average makes no sense, as the formation
| 735| 735| 	// will jump to a different position any time
| 736| 736| 	var avgoffset = Vector2D.average(offsets);
| 737|    |-	offsets.forEach(function (o) {o.sub(avgoffset);});
|    | 737|+	offsets.forEach(function(o) {o.sub(avgoffset);});
| 738| 738| 
| 739| 739| 	// sort the available places in certain ways
| 740| 740| 	// the places first in the list will contain the heaviest units as defined by the order
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = { "row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'column'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column": offsets[closestOffsetId].column};
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column };
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 803| 803| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 804| 804| {
| 805| 805| 	var offsetPositions = [];
| 806|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 806|+	var { sin, cos} = this.GetEstimatedOrientation(pos);
| 807| 807| 	// calculate the world positions
| 808| 808| 	for (var o of offsets)
| 809| 809| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 803| 803| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 804| 804| {
| 805| 805| 	var offsetPositions = [];
| 806|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 806|+	var {sin, cos } = this.GetEstimatedOrientation(pos);
| 807| 807| 	// calculate the world positions
| 808| 808| 	for (var o of offsets)
| 809| 809| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 820| 820| Formation.prototype.GetEstimatedOrientation = function(pos)
| 821| 821| {
| 822| 822| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 823|    |-	var r = {"sin": 0, "cos": 1};
|    | 823|+	var r = { "sin": 0, "cos": 1};
| 824| 824| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 825| 825| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 826| 826| 	{
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 820| 820| Formation.prototype.GetEstimatedOrientation = function(pos)
| 821| 821| {
| 822| 822| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 823|    |-	var r = {"sin": 0, "cos": 1};
|    | 823|+	var r = {"sin": 0, "cos": 1 };
| 824| 824| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 825| 825| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 826| 826| 	{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 902| 902| 		cmpOtherFormation.RemoveMembers(otherMembers);
| 903| 903| 		this.AddMembers(otherMembers);
| 904| 904| 		Engine.DestroyEntity(this.twinFormations[i]);
| 905|    |-		this.twinFormations.splice(i,1);
|    | 905|+		this.twinFormations.splice(i, 1);
| 906| 906| 	}
| 907| 907| 	// Switch between column and box if necessary
| 908| 908| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);

binaries/data/mods/public/simulation/components/Formation.js
| 426| »   for·(var·ent·of·this.formationMembersWithAura)
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 472| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 513| »   »   var·cmpUnitAI·=·Engine.QueryInterface(offset.ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 548| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 600| »   »   var·sortingClasses·=·this.sortingClasses.slice();
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 609| »   for·(var·i·in·active)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 624| »   »   »   types["Unknown"].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | ['Unknown'] is better written in dot notation.

binaries/data/mods/public/simulation/components/Formation.js
| 664| »   »   for·(var·i·=·0;·i·<·count;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 698| »   »   »   »   »   var·n·=·r·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 700| »   »   »   »   »   var·n·=·r·*·2·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'c' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 711| »   »   »   »   »   var·x·=·side·*·Math.ceil(c/2)·*·separation.width;
|    | [NORMAL] JSHintBear:
|    | 'x' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 714| »   »   »   »   »   if·(x·==·0)·//·don't·use·the·center·position·with·a·center·gap
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 716| »   »   »   »   »   x·+=·side·*·centerGap·/·2;
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 722| »   »   »   »   offsets.push(new·Vector2D(x·+·r1,·z·+·r2));
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 702| »   »   »   if·(!shiftRows·&&·n·>·left)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   »   n·=·left;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 708| »   »   »   »   if·(n%2·==·0)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 718| »   »   »   »   var·column·=·Math.ceil(n/2)·+·Math.ceil(c/2)·*·side;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 728| »   »   »   this.maxColumnsUsed[r]·=·n;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 757| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 601| »   sortingClasses.push("Unknown");
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 606| »   for·(var·i·=·0;·i·<·sortingClasses.length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 607| »   »   types[sortingClasses[i]]·=·[];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 614| »   »   for·(var·c·=·0;·c·<·sortingClasses.length;·++c)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 616| »   »   »   if·(classes.indexOf(sortingClasses[c])·>·-1)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 618| »   »   »   »   types[sortingClasses[c]].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 757| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 759| »   »   var·t·=·types[sortingClasses[i-1]];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 864| »   var·cmpUnitMotion·=·Engine.QueryInterface(this.entity,·IID_UnitMotion);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitMotion' is already defined.
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 449| 449| 				continue;
| 450| 450| 
| 451| 451| 			if (state.pack.progress == 0)
| 452|    |-			{
|    | 452|+			
| 453| 453| 				if (state.pack.packed)
| 454| 454| 					checks.unpackButton = true;
| 455| 455| 				else
| 456| 456| 					checks.packButton = true;
| 457|    |-			}
|    | 457|+			
| 458| 458| 			else if (state.pack.packed)
| 459| 459| 				checks.unpackCancelButton = true;
| 460| 460| 			else
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 760| 760| 				addResearchToQueue(data.item.researchFacilityId, t);
| 761| 761| 			})(tech);
| 762| 762| 
| 763|    |-			button.onPressRight = (t => function () {
|    | 763|+			button.onPressRight = (t => function() {
| 764| 764| 				showTemplateDetails(
| 765| 765| 					t,
| 766| 766| 					GetTemplateData(data.unitEntStates.find(state => state.id == data.item.researchFacilityId).template).nativeCiv);
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 938| 938| 			"player": data.player
| 939| 939| 		});
| 940| 940| 
| 941|    |-		let unitIds = data.unitEntStates.map(status => status.id)
|    | 941|+		let unitIds = data.unitEntStates.map(status => status.id);
| 942| 942| 		let [buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch] =
| 943| 943| 			getTrainingStatus(unitIds, data.item, data.playerState);
| 944| 944| 

binaries/data/mods/public/gui/session/selection_panels.js
|  48| »   »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
|  59| »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 728| »   »   »   »   »   »   switch·(entity.check)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 941| »   »   let·unitIds·=·data.unitEntStates.map(status·=>·status.id)
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|  66|  66| 		let phase = "";
|  67|  67| 		let cmpTechnologyManager = QueryPlayerIDInterface(i, IID_TechnologyManager);
|  68|  68| 		if (cmpTechnologyManager)
|  69|    |-		{
|    |  69|+		
|  70|  70| 			if (cmpTechnologyManager.IsTechnologyResearched("phase_city"))
|  71|  71| 				phase = "city";
|  72|  72| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_town"))
|  73|  73| 				phase = "town";
|  74|  74| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_village"))
|  75|  75| 				phase = "village";
|  76|    |-		}
|    |  76|+		
|  77|  77| 
|  78|  78| 		// store player ally/neutral/enemy data as arrays
|  79|  79| 		let allies = [];
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 410| 410| 			ret.attack[type].elevationBonus = range.elevationBonus;
| 411| 411| 
| 412| 412| 			if (cmpUnitAI && cmpPosition && cmpPosition.IsInWorld())
| 413|    |-			{
|    | 413|+			
| 414| 414| 				// For units, take the range in front of it, no spread. So angle = 0
| 415| 415| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 416|    |-			}
|    | 416|+			
| 417| 417| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 418| 418| 			{
| 419| 419| 				// For buildings, take the average elevation around it. So angle = 2*pi
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 415| 415| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 416| 416| 			}
| 417| 417| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 418|    |-			{
|    | 418|+			
| 419| 419| 				// For buildings, take the average elevation around it. So angle = 2*pi
| 420| 420| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 421|    |-			}
|    | 421|+			
| 422| 422| 			else
| 423| 423| 			{
| 424| 424| 				// not in world, set a default?
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 420| 420| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 421| 421| 			}
| 422| 422| 			else
| 423|    |-			{
|    | 423|+			
| 424| 424| 				// not in world, set a default?
| 425| 425| 				ret.attack[type].elevationAdaptedRange = ret.attack.maxRange;
| 426|    |-			}
|    | 426|+			
| 427| 427| 		}
| 428| 428| 	}
| 429| 429| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 796| 796| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 797| 797| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 798| 798| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 799|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 799|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 800| 800| 	}
| 801| 801| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 802| 802| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1315|1315| 		}
|1316|1316| 	}
|1317|1317| 	else
|1318|    |-	{
|    |1318|+	
|1319|1319| 		// Didn't snap to an existing entity, add the starting tower manually. To prevent odd-looking rotation jumps
|1320|1320| 		// when shift-clicking to build a wall, reuse the placement angle that was last seen on a validly positioned
|1321|1321| 		// wall piece.
|1336|1336| 			"pos": start.pos,
|1337|1337| 			"angle": previewEntities.length > 0 ? previewEntities[0].angle : this.placementWallLastAngle
|1338|1338| 		});
|1339|    |-	}
|    |1339|+	
|1340|1340| 
|1341|1341| 	if (end.pos)
|1342|1342| 	{
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1339|1339| 	}
|1340|1340| 
|1341|1341| 	if (end.pos)
|1342|    |-	{
|    |1342|+	
|1343|1343| 		// Analogous to the starting side case above
|1344|1344| 		if (end.snappedEnt && end.snappedEnt != INVALID_ENTITY)
|1345|1345| 		{
|1377|1377| 				"pos": end.pos,
|1378|1378| 				"angle": previewEntities.length > 0 ? previewEntities[previewEntities.length-1].angle : this.placementWallLastAngle
|1379|1379| 			});
|1380|    |-	}
|    |1380|+	
|1381|1381| 
|1382|1382| 	let cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain);
|1383|1383| 	if (!cmpTerrain)
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1555|1555| 
|1556|1556| 		let cmpVisual = Engine.QueryInterface(ent, IID_Visual);
|1557|1557| 		if (cmpVisual)
|1558|    |-		{
|    |1558|+		
|1559|1559| 			if (!allPiecesValid || !canAfford)
|1560|1560| 				cmpVisual.SetShadingColor(1.4, 0.4, 0.4, 1);
|1561|1561| 			else
|1562|1562| 				cmpVisual.SetShadingColor(1, 1, 1, 1);
|1563|    |-		}
|    |1563|+		
|1564|1564| 
|1565|1565| 		++entPool.numUsed;
|1566|1566| 	}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1629|1629| 			{
|1630|1630| 				minDist2 = dist2;
|1631|1631| 				minDistEntitySnapData = {
|1632|    |-						"x": pos.x,
|    |1632|+					"x": pos.x,
|1633|1633| 						"z": pos.z,
|1634|1634| 						"angle": cmpPosition.GetRotation().y,
|1635|1635| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1630|1630| 				minDist2 = dist2;
|1631|1631| 				minDistEntitySnapData = {
|1632|1632| 						"x": pos.x,
|1633|    |-						"z": pos.z,
|    |1633|+					"z": pos.z,
|1634|1634| 						"angle": cmpPosition.GetRotation().y,
|1635|1635| 						"ent": ent
|1636|1636| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1631|1631| 				minDistEntitySnapData = {
|1632|1632| 						"x": pos.x,
|1633|1633| 						"z": pos.z,
|1634|    |-						"angle": cmpPosition.GetRotation().y,
|    |1634|+					"angle": cmpPosition.GetRotation().y,
|1635|1635| 						"ent": ent
|1636|1636| 				};
|1637|1637| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1632|1632| 						"x": pos.x,
|1633|1633| 						"z": pos.z,
|1634|1634| 						"angle": cmpPosition.GetRotation().y,
|1635|    |-						"ent": ent
|    |1635|+					"ent": ent
|1636|1636| 				};
|1637|1637| 			}
|1638|1638| 		}
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1777|1777| 			result.gain = cmpEntityTrader.GetGoods().amount;
|1778|1778| 	}
|1779|1779| 	else if (data.target === secondMarket)
|1780|    |-	{
|    |1780|+	
|1781|1781| 		result = {
|1782|1782| 			"type": "is second",
|1783|1783| 			"gain": cmpEntityTrader.GetGoods().amount,
|1784|1784| 		};
|1785|    |-	}
|    |1785|+	
|1786|1786| 	else if (!firstMarket)
|1787|1787| 	{
|1788|1788| 		result = { "type": "set first" };
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1784|1784| 		};
|1785|1785| 	}
|1786|1786| 	else if (!firstMarket)
|1787|    |-	{
|    |1787|+	
|1788|1788| 		result = { "type": "set first" };
|1789|    |-	}
|    |1789|+	
|1790|1790| 	else if (!secondMarket)
|1791|1791| 	{
|1792|1792| 		result = {
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1788|1788| 		result = { "type": "set first" };
|1789|1789| 	}
|1790|1790| 	else if (!secondMarket)
|1791|    |-	{
|    |1791|+	
|1792|1792| 		result = {
|1793|1793| 			"type": "set second",
|1794|1794| 			"gain": cmpEntityTrader.CalculateGain(firstMarket, data.target),
|1795|1795| 		};
|1796|    |-	}
|    |1796|+	
|1797|1797| 	else
|1798|1798| 	{
|1799|1799| 		// Else both markets are not null and target is different from them
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1795|1795| 		};
|1796|1796| 	}
|1797|1797| 	else
|1798|    |-	{
|    |1798|+	
|1799|1799| 		// Else both markets are not null and target is different from them
|1800|1800| 		result = { "type": "set first" };
|1801|    |-	}
|    |1801|+	
|1802|1802| 	return result;
|1803|1803| };
|1804|1804| 

binaries/data/mods/public/simulation/helpers/Commands.js
| 900| »   var·ids·=·[·id·for·(id·in·members)·];
|    | [MAJOR] ESLintBear:
|    | Parsing error: Unexpected token for

binaries/data/mods/public/simulation/helpers/Commands.js
|  53| var·g_Commands·=·{
|    | [NORMAL] JSHintBear:
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 541| »   »   »   »   ····&&·player·!=·+cmd.owner)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
| 729| »   »   »   »   var·cmpGUIInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGUIInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 900| »   var·ids·=·[·id·for·(id·in·members)·];
|    | [NORMAL] JSHintBear:
|    | 'array comprehension' is only available in Mozilla JavaScript extensions (use moz option).

binaries/data/mods/public/simulation/helpers/Commands.js
| 900| »   var·ids·=·[·id·for·(id·in·members)·];
|    | [NORMAL] JSHintBear:
|    | Expected 'for' and instead saw 'id'.

binaries/data/mods/public/simulation/helpers/Commands.js
| 950| »   »   for·(var·i·=·0;·i·<·length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 963| »   »   var·count·=·0;
|    | [NORMAL] JSHintBear:
|    | 'count' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1110| »   »   var·cmpGuiInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGuiInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1362| »   »   var·piece·=·pieces[j];
|    | [NORMAL] JSHintBear:
|    | 'piece' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1445| »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1483| »   »   »   &&·cmpFormation.GetMemberCount()·==·formation.entities.length)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
|1509| »   »   »   »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1542| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.

Link to build: https://jenkins.wildfiregames.com/job/differential/437/display/redirect

elexis added inline comments.Apr 25 2018, 6:35 PM
binaries/data/mods/public/gui/session/selection_panels.js
294

Is it supposed to be that way, or wouldn't some subset of entities being able to build a formation suffice?

binaries/data/mods/public/gui/session/selection_panels_helpers.js
22 ↗(On Diff #6473)

Isn't this GUI selection code is called once per tick?
Doing a GUIInterface call once per tick is too performance costy as far as the collective experience went,
so the things should be parsed from the templates (possibly using a function from globalscripts/) or from the GetEntityState data that is only fetched once per turn.

Perhaps we don't need to do elaborate parsing to begin with if we find a simpler condition to hide/show the formation panel.

binaries/data/mods/public/simulation/templates/template_formation.xml
26

If you want to fix those too, fine for me (this patch cant be done prior to a24 anyway)

Angen added inline comments.Apr 25 2018, 7:23 PM
binaries/data/mods/public/gui/session/selection_panels.js
294

No, I didnt realised this will happen for mixed units.

binaries/data/mods/public/gui/session/selection_panels_helpers.js
22 ↗(On Diff #6473)

I just switched from canMoveSelectionIntoFormation to canAllEntsUseAnyFormation, they are both written the same way. And they both pass g_Selected.toList()
Plus, I do not call it for every available formation but only once.

But if it affects performance so badly I can try something else.

temple added a subscriber: temple.Apr 26 2018, 2:47 AM

(Doesn't work great with twin formations, but I'd rather just get rid of those.)

wraitii added a reviewer: Restricted Owners Package.May 14 2018, 11:55 AM
Angen updated this revision to Diff 6599.May 20 2018, 4:09 PM

Show formations when someone can be part of it.

Successful build - Chance fights ever on the side of the prudent.

Linter detected issues:
Executing section Default...
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 1 tab but found 2.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels_helpers.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels_helpers.js
|  21|  21| {
|  22|  22| 	return Engine.GuiInterfaceCall("CanSomeEntUseSomeFormation", {
|  23|  23| 		"ents": g_Selection.toList()
|  24|    |-		});
|    |  24|+	});
|  25|  25| }
|  26|  26| 
|  27|  27| function hasSameRestrictionCategory(templateName1, templateName2)
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels_helpers.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels_helpers.js
| 421| 421| 	let otherEnts = [];
| 422| 422| 
| 423| 423| 	for (let ent of garrisonHolders)
| 424|    |-	{
|    | 424|+	
| 425| 425| 		if (controlsPlayer(GetEntityState(ent).player))
| 426| 426| 			ownEnts.push(ent);
| 427| 427| 		else
| 428| 428| 			otherEnts.push(ent);
| 429|    |-	}
|    | 429|+	
| 430| 430| 
| 431| 431| 	if (ownEnts.length)
| 432| 432| 		Engine.PostNetworkCommand({
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 449| 449| 				continue;
| 450| 450| 
| 451| 451| 			if (state.pack.progress == 0)
| 452|    |-			{
|    | 452|+			
| 453| 453| 				if (state.pack.packed)
| 454| 454| 					checks.unpackButton = true;
| 455| 455| 				else
| 456| 456| 					checks.packButton = true;
| 457|    |-			}
|    | 457|+			
| 458| 458| 			else if (state.pack.packed)
| 459| 459| 				checks.unpackCancelButton = true;
| 460| 460| 			else
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 760| 760| 				addResearchToQueue(data.item.researchFacilityId, t);
| 761| 761| 			})(tech);
| 762| 762| 
| 763|    |-			button.onPressRight = (t => function () {
|    | 763|+			button.onPressRight = (t => function() {
| 764| 764| 				showTemplateDetails(
| 765| 765| 					t,
| 766| 766| 					GetTemplateData(data.unitEntStates.find(state => state.id == data.item.researchFacilityId).template).nativeCiv);
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 938| 938| 			"player": data.player
| 939| 939| 		});
| 940| 940| 
| 941|    |-		let unitIds = data.unitEntStates.map(status => status.id)
|    | 941|+		let unitIds = data.unitEntStates.map(status => status.id);
| 942| 942| 		let [buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch] =
| 943| 943| 			getTrainingStatus(unitIds, data.item, data.playerState);
| 944| 944| 

binaries/data/mods/public/gui/session/selection_panels.js
|  48| »   »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
|  59| »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 728| »   »   »   »   »   »   switch·(entity.check)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 941| »   »   let·unitIds·=·data.unitEntStates.map(status·=>·status.id)
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/helpers/Commands.js
| 900| »   var·ids·=·[·id·for·(id·in·members)·];
|    | [MAJOR] ESLintBear:
|    | Parsing error: Unexpected token for

binaries/data/mods/public/simulation/helpers/Commands.js
|  53| var·g_Commands·=·{
|    | [NORMAL] JSHintBear:
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 541| »   »   »   »   ····&&·player·!=·+cmd.owner)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
| 729| »   »   »   »   var·cmpGUIInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGUIInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 900| »   var·ids·=·[·id·for·(id·in·members)·];
|    | [NORMAL] JSHintBear:
|    | 'array comprehension' is only available in Mozilla JavaScript extensions (use moz option).

binaries/data/mods/public/simulation/helpers/Commands.js
| 900| »   var·ids·=·[·id·for·(id·in·members)·];
|    | [NORMAL] JSHintBear:
|    | Expected 'for' and instead saw 'id'.

binaries/data/mods/public/simulation/helpers/Commands.js
| 950| »   »   for·(var·i·=·0;·i·<·length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 963| »   »   var·count·=·0;
|    | [NORMAL] JSHintBear:
|    | 'count' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1110| »   »   var·cmpGuiInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGuiInterface' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1362| »   »   var·piece·=·pieces[j];
|    | [NORMAL] JSHintBear:
|    | 'piece' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1445| »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1483| »   »   »   &&·cmpFormation.GetMemberCount()·==·formation.entities.length)
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/helpers/Commands.js
|1509| »   »   »   »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1542| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = { "sin": 0, "cos": 0};
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = {"sin": 0, "cos": 0 };
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return { "width": this.width, "depth": this.depth};
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return {"width": this.width, "depth": this.depth };
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return { "width":1, "depth": 1};
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'width'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return {"width": 1, "depth": 1};
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return {"width":1, "depth": 1 };
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 569| 569| 	if (!footprints.length)
| 570| 570| 		return {"width":1, "depth": 1};
| 571| 571| 
| 572|    |-	var r = {"width": 0, "depth": 0};
|    | 572|+	var r = { "width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
| 574| 574| 	{
| 575| 575| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 569| 569| 	if (!footprints.length)
| 570| 570| 		return {"width":1, "depth": 1};
| 571| 571| 
| 572|    |-	var r = {"width": 0, "depth": 0};
|    | 572|+	var r = {"width": 0, "depth": 0 };
| 573| 573| 	for (var shape of footprints)
| 574| 574| 	{
| 575| 575| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
| 574|    |-	{
|    | 574|+	
| 575| 575| 		if (shape.type == "circle")
| 576| 576| 		{
| 577| 577| 			r.width += shape.radius * 2;
| 582| 582| 			r.width += shape.width;
| 583| 583| 			r.depth += shape.depth;
| 584| 584| 		}
| 585|    |-	}
|    | 585|+	
| 586| 586| 	r.width /= footprints.length;
| 587| 587| 	r.depth /= footprints.length;
| 588| 588| 	return r;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 595| 595| 	separation.depth *= this.separationMultiplier.depth;
| 596| 596| 
| 597| 597| 	if (this.columnar)
| 598|    |-		var sortingClasses = ["Cavalry","Infantry"];
|    | 598|+		var sortingClasses = ["Cavalry", "Infantry"];
| 599| 599| 	else
| 600| 600| 		var sortingClasses = this.sortingClasses.slice();
| 601| 601| 	sortingClasses.push("Unknown");
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 612| 612| 		var classes = cmpIdentity.GetClassesList();
| 613| 613| 		var done = false;
| 614| 614| 		for (var c = 0; c < sortingClasses.length; ++c)
| 615|    |-		{
|    | 615|+		
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618| 618| 				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
| 622|    |-		}
|    | 622|+		
| 623| 623| 		if (!done)
| 624| 624| 			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
| 625| 625| 	}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 615| 615| 		{
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 618|+				types[sortingClasses[c]].push({ "ent": active[i], "pos": positions[i]});
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 615| 615| 		{
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 618|+				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i] });
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
|    | [NORMAL] ESLintBear (dot-notation):
|    | ["Unknown"] is better written in dot notation.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types.Unknown.push({"ent": active[i], "pos": positions[i]});
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types["Unknown"].push({ "ent": active[i], "pos": positions[i]});
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types["Unknown"].push({"ent": active[i], "pos": positions[i] });
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 639| 639| 	if (this.columnar)
| 640| 640| 	{
| 641| 641| 		shape = "square";
| 642|    |-		cols = Math.min(count,3);
|    | 642|+		cols = Math.min(count, 3);
| 643| 643| 		shiftRows = false;
| 644| 644| 		centerGap = 0;
| 645| 645| 		sortingOrder = null;
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 693| 693| 					n -= r%2;
| 694| 694| 			}
| 695| 695| 			else if (shape == "triangle")
| 696|    |-			{
|    | 696|+			
| 697| 697| 				if (shiftRows)
| 698| 698| 					var n = r + 1;
| 699| 699| 				else
| 700| 700| 					var n = r * 2 + 1;
| 701|    |-			}
|    | 701|+			
| 702| 702| 			if (!shiftRows && n > left)
| 703| 703| 				n = left;
| 704| 704| 			for (var c = 0; c < n && left > 0; ++c)
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 734| 734| 	// calculating offset distances without a zero average makes no sense, as the formation
| 735| 735| 	// will jump to a different position any time
| 736| 736| 	var avgoffset = Vector2D.average(offsets);
| 737|    |-	offsets.forEach(function (o) {o.sub(avgoffset);});
|    | 737|+	offsets.forEach(function(o) {o.sub(avgoffset);});
| 738| 738| 
| 739| 739| 	// sort the available places in certain ways
| 740| 740| 	// the places first in the list will contain the heaviest units as defined by the order
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = { "row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'column'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column": offsets[closestOffsetId].column};
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column };
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 803| 803| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 804| 804| {
| 805| 805| 	var offsetPositions = [];
| 806|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 806|+	var { sin, cos} = this.GetEstimatedOrientation(pos);
| 807| 807| 	// calculate the world positions
| 808| 808| 	for (var o of offsets)
| 809| 809| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 803| 803| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 804| 804| {
| 805| 805| 	var offsetPositions = [];
| 806|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 806|+	var {sin, cos } = this.GetEstimatedOrientation(pos);
| 807| 807| 	// calculate the world positions
| 808| 808| 	for (var o of offsets)
| 809| 809| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 820| 820| Formation.prototype.GetEstimatedOrientation = function(pos)
| 821| 821| {
| 822| 822| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 823|    |-	var r = {"sin": 0, "cos": 1};
|    | 823|+	var r = { "sin": 0, "cos": 1};
| 824| 824| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 825| 825| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 826| 826| 	{
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 820| 820| Formation.prototype.GetEstimatedOrientation = function(pos)
| 821| 821| {
| 822| 822| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 823|    |-	var r = {"sin": 0, "cos": 1};
|    | 823|+	var r = {"sin": 0, "cos": 1 };
| 824| 824| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 825| 825| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 826| 826| 	{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 902| 902| 		cmpOtherFormation.RemoveMembers(otherMembers);
| 903| 903| 		this.AddMembers(otherMembers);
| 904| 904| 		Engine.DestroyEntity(this.twinFormations[i]);
| 905|    |-		this.twinFormations.splice(i,1);
|    | 905|+		this.twinFormations.splice(i, 1);
| 906| 906| 	}
| 907| 907| 	// Switch between column and box if necessary
| 908| 908| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);

binaries/data/mods/public/simulation/components/Formation.js
| 426| »   for·(var·ent·of·this.formationMembersWithAura)
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 472| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 513| »   »   var·cmpUnitAI·=·Engine.QueryInterface(offset.ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 548| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 600| »   »   var·sortingClasses·=·this.sortingClasses.slice();
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 609| »   for·(var·i·in·active)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 624| »   »   »   types["Unknown"].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | ['Unknown'] is better written in dot notation.

binaries/data/mods/public/simulation/components/Formation.js
| 664| »   »   for·(var·i·=·0;·i·<·count;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 698| »   »   »   »   »   var·n·=·r·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 700| »   »   »   »   »   var·n·=·r·*·2·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'c' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 711| »   »   »   »   »   var·x·=·side·*·Math.ceil(c/2)·*·separation.width;
|    | [NORMAL] JSHintBear:
|    | 'x' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 714| »   »   »   »   »   if·(x·==·0)·//·don't·use·the·center·position·with·a·center·gap
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 716| »   »   »   »   »   x·+=·side·*·centerGap·/·2;
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 722| »   »   »   »   offsets.push(new·Vector2D(x·+·r1,·z·+·r2));
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 702| »   »   »   if·(!shiftRows·&&·n·>·left)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   »   n·=·left;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 708| »   »   »   »   if·(n%2·==·0)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 718| »   »   »   »   var·column·=·Math.ceil(n/2)·+·Math.ceil(c/2)·*·side;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 728| »   »   »   this.maxColumnsUsed[r]·=·n;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 757| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 601| »   sortingClasses.push("Unknown");
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 606| »   for·(var·i·=·0;·i·<·sortingClasses.length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 607| »   »   types[sortingClasses[i]]·=·[];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 614| »   »   for·(var·c·=·0;·c·<·sortingClasses.length;·++c)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 616| »   »   »   if·(classes.indexOf(sortingClasses[c])·>·-1)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 618| »   »   »   »   types[sortingClasses[c]].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 757| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 759| »   »   var·t·=·types[sortingClasses[i-1]];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 864| »   var·cmpUnitMotion·=·Engine.QueryInterface(this.entity,·IID_UnitMotion);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitMotion' is already defined.
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|  66|  66| 		let phase = "";
|  67|  67| 		let cmpTechnologyManager = QueryPlayerIDInterface(i, IID_TechnologyManager);
|  68|  68| 		if (cmpTechnologyManager)
|  69|    |-		{
|    |  69|+		
|  70|  70| 			if (cmpTechnologyManager.IsTechnologyResearched("phase_city"))
|  71|  71| 				phase = "city";
|  72|  72| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_town"))
|  73|  73| 				phase = "town";
|  74|  74| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_village"))
|  75|  75| 				phase = "village";
|  76|    |-		}
|    |  76|+		
|  77|  77| 
|  78|  78| 		// store player ally/neutral/enemy data as arrays
|  79|  79| 		let allies = [];
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 410| 410| 			ret.attack[type].elevationBonus = range.elevationBonus;
| 411| 411| 
| 412| 412| 			if (cmpUnitAI && cmpPosition && cmpPosition.IsInWorld())
| 413|    |-			{
|    | 413|+			
| 414| 414| 				// For units, take the range in front of it, no spread. So angle = 0
| 415| 415| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 416|    |-			}
|    | 416|+			
| 417| 417| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 418| 418| 			{
| 419| 419| 				// For buildings, take the average elevation around it. So angle = 2*pi
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 415| 415| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 416| 416| 			}
| 417| 417| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 418|    |-			{
|    | 418|+			
| 419| 419| 				// For buildings, take the average elevation around it. So angle = 2*pi
| 420| 420| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 421|    |-			}
|    | 421|+			
| 422| 422| 			else
| 423| 423| 			{
| 424| 424| 				// not in world, set a default?
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 420| 420| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 421| 421| 			}
| 422| 422| 			else
| 423|    |-			{
|    | 423|+			
| 424| 424| 				// not in world, set a default?
| 425| 425| 				ret.attack[type].elevationAdaptedRange = ret.attack.maxRange;
| 426|    |-			}
|    | 426|+			
| 427| 427| 		}
| 428| 428| 	}
| 429| 429| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 796| 796| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 797| 797| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 798| 798| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 799|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 799|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 800| 800| 	}
| 801| 801| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 802| 802| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1315|1315| 		}
|1316|1316| 	}
|1317|1317| 	else
|1318|    |-	{
|    |1318|+	
|1319|1319| 		// Didn't snap to an existing entity, add the starting tower manually. To prevent odd-looking rotation jumps
|1320|1320| 		// when shift-clicking to build a wall, reuse the placement angle that was last seen on a validly positioned
|1321|1321| 		// wall piece.
|1336|1336| 			"pos": start.pos,
|1337|1337| 			"angle": previewEntities.length > 0 ? previewEntities[0].angle : this.placementWallLastAngle
|1338|1338| 		});
|1339|    |-	}
|    |1339|+	
|1340|1340| 
|1341|1341| 	if (end.pos)
|1342|1342| 	{
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1339|1339| 	}
|1340|1340| 
|1341|1341| 	if (end.pos)
|1342|    |-	{
|    |1342|+	
|1343|1343| 		// Analogous to the starting side case above
|1344|1344| 		if (end.snappedEnt && end.snappedEnt != INVALID_ENTITY)
|1345|1345| 		{
|1377|1377| 				"pos": end.pos,
|1378|1378| 				"angle": previewEntities.length > 0 ? previewEntities[previewEntities.length-1].angle : this.placementWallLastAngle
|1379|1379| 			});
|1380|    |-	}
|    |1380|+	
|1381|1381| 
|1382|1382| 	let cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain);
|1383|1383| 	if (!cmpTerrain)
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1555|1555| 
|1556|1556| 		let cmpVisual = Engine.QueryInterface(ent, IID_Visual);
|1557|1557| 		if (cmpVisual)
|1558|    |-		{
|    |1558|+		
|1559|1559| 			if (!allPiecesValid || !canAfford)
|1560|1560| 				cmpVisual.SetShadingColor(1.4, 0.4, 0.4, 1);
|1561|1561| 			else
|1562|1562| 				cmpVisual.SetShadingColor(1, 1, 1, 1);
|1563|    |-		}
|    |1563|+		
|1564|1564| 
|1565|1565| 		++entPool.numUsed;
|1566|1566| 	}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1629|1629| 			{
|1630|1630| 				minDist2 = dist2;
|1631|1631| 				minDistEntitySnapData = {
|1632|    |-						"x": pos.x,
|    |1632|+					"x": pos.x,
|1633|1633| 						"z": pos.z,
|1634|1634| 						"angle": cmpPosition.GetRotation().y,
|1635|1635| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1630|1630| 				minDist2 = dist2;
|1631|1631| 				minDistEntitySnapData = {
|1632|1632| 						"x": pos.x,
|1633|    |-						"z": pos.z,
|    |1633|+					"z": pos.z,
|1634|1634| 						"angle": cmpPosition.GetRotation().y,
|1635|1635| 						"ent": ent
|1636|1636| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1631|1631| 				minDistEntitySnapData = {
|1632|1632| 						"x": pos.x,
|1633|1633| 						"z": pos.z,
|1634|    |-						"angle": cmpPosition.GetRotation().y,
|    |1634|+					"angle": cmpPosition.GetRotation().y,
|1635|1635| 						"ent": ent
|1636|1636| 				};
|1637|1637| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1632|1632| 						"x": pos.x,
|1633|1633| 						"z": pos.z,
|1634|1634| 						"angle": cmpPosition.GetRotation().y,
|1635|    |-						"ent": ent
|    |1635|+					"ent": ent
|1636|1636| 				};
|1637|1637| 			}
|1638|1638| 		}
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1777|1777| 			result.gain = cmpEntityTrader.GetGoods().amount;
|1778|1778| 	}
|1779|1779| 	else if (data.target === secondMarket)
|1780|    |-	{
|    |1780|+	
|1781|1781| 		result = {
|1782|1782| 			"type": "is second",
|1783|1783| 			"gain": cmpEntityTrader.GetGoods().amount,
|1784|1784| 		};
|1785|    |-	}
|    |1785|+	
|1786|1786| 	else if (!firstMarket)
|1787|1787| 	{
|1788|1788| 		result = { "type": "set first" };
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1784|1784| 		};
|1785|1785| 	}
|1786|1786| 	else if (!firstMarket)
|1787|    |-	{
|    |1787|+	
|1788|1788| 		result = { "type": "set first" };
|1789|    |-	}
|    |1789|+	
|1790|1790| 	else if (!secondMarket)
|1791|1791| 	{
|1792|1792| 		result = {
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1788|1788| 		result = { "type": "set first" };
|1789|1789| 	}
|1790|1790| 	else if (!secondMarket)
|1791|    |-	{
|    |1791|+	
|1792|1792| 		result = {
|1793|1793| 			"type": "set second",
|1794|1794| 			"gain": cmpEntityTrader.CalculateGain(firstMarket, data.target),
|1795|1795| 		};
|1796|    |-	}
|    |1796|+	
|1797|1797| 	else
|1798|1798| 	{
|1799|1799| 		// Else both markets are not null and target is different from them
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1795|1795| 		};
|1796|1796| 	}
|1797|1797| 	else
|1798|    |-	{
|    |1798|+	
|1799|1799| 		// Else both markets are not null and target is different from them
|1800|1800| 		result = { "type": "set first" };
|1801|    |-	}
|    |1801|+	
|1802|1802| 	return result;
|1803|1803| };
|1804|1804|

Link to build: https://jenkins.wildfiregames.com/job/differential/531/display/redirect

Angen updated this revision to Diff 6804.Jul 8 2018, 11:45 AM

move functionality for possible formation check to entity state

Build failure - The Moirai have given mortals hearts that can endure.

Linter detected issues:
Executing section Default...
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|  98|  98| 	this.canUseSomeFormation = this.GetFormationsList().length > 0;
|  99|  99| };
| 100| 100| 
| 101|    |-Identity.prototype.Deserialize = function ()
|    | 101|+Identity.prototype.Deserialize = function()
| 102| 102| {
| 103| 103| 	this.Init();
| 104| 104| };
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
| 108| 108| Identity.prototype.CanUseSomeFormation = function()
| 109| 109| {
| 110| 110| 	return this.canUseSomeFormation;
| 111|    |-}
|    | 111|+};
| 112| 112| 
| 113| 113| Identity.prototype.GetCiv = function()
| 114| 114| {

binaries/data/mods/public/simulation/components/Identity.js
| 111| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 291| 291| 		if (unitEntStates.some(state => !hasClass(state, "Unit")))
| 292| 292| 			return [];
| 293| 293| 
| 294|    |-		if(unitEntStates.every(state => {return !state.identity.canUseFormation}))
|    | 294|+		if(unitEntStates.every(state => {return !state.identity.canUseFormation;}))
| 295| 295| 			return [];
| 296| 296| 
| 297| 297| 		if (!g_AvailableFormations.has(unitEntStates[0].player))
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 449| 449| 				continue;
| 450| 450| 
| 451| 451| 			if (state.pack.progress == 0)
| 452|    |-			{
|    | 452|+			
| 453| 453| 				if (state.pack.packed)
| 454| 454| 					checks.unpackButton = true;
| 455| 455| 				else
| 456| 456| 					checks.packButton = true;
| 457|    |-			}
|    | 457|+			
| 458| 458| 			else if (state.pack.packed)
| 459| 459| 				checks.unpackCancelButton = true;
| 460| 460| 			else
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 760| 760| 				addResearchToQueue(data.item.researchFacilityId, t);
| 761| 761| 			})(tech);
| 762| 762| 
| 763|    |-			button.onPressRight = (t => function () {
|    | 763|+			button.onPressRight = (t => function() {
| 764| 764| 				showTemplateDetails(
| 765| 765| 					t,
| 766| 766| 					GetTemplateData(data.unitEntStates.find(state => state.id == data.item.researchFacilityId).template).nativeCiv);
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 938| 938| 			"player": data.player
| 939| 939| 		});
| 940| 940| 
| 941|    |-		let unitIds = data.unitEntStates.map(status => status.id)
|    | 941|+		let unitIds = data.unitEntStates.map(status => status.id);
| 942| 942| 		let [buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch] =
| 943| 943| 			getTrainingStatus(unitIds, data.item, data.playerState);
| 944| 944| 

binaries/data/mods/public/gui/session/selection_panels.js
|  48| »   »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
|  59| »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 728| »   »   »   »   »   »   switch·(entity.check)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 294| »   »   if(unitEntStates.every(state·=>·{return·!state.identity.canUseFormation}))
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/gui/session/selection_panels.js
| 941| »   »   let·unitIds·=·data.unitEntStates.map(status·=>·status.id)
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = { "sin": 0, "cos": 0};
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = {"sin": 0, "cos": 0 };
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return { "width": this.width, "depth": this.depth};
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return {"width": this.width, "depth": this.depth };
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return { "width":1, "depth": 1};
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'width'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return {"width": 1, "depth": 1};
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return {"width":1, "depth": 1 };
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 569| 569| 	if (!footprints.length)
| 570| 570| 		return {"width":1, "depth": 1};
| 571| 571| 
| 572|    |-	var r = {"width": 0, "depth": 0};
|    | 572|+	var r = { "width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
| 574| 574| 	{
| 575| 575| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 569| 569| 	if (!footprints.length)
| 570| 570| 		return {"width":1, "depth": 1};
| 571| 571| 
| 572|    |-	var r = {"width": 0, "depth": 0};
|    | 572|+	var r = {"width": 0, "depth": 0 };
| 573| 573| 	for (var shape of footprints)
| 574| 574| 	{
| 575| 575| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
| 574|    |-	{
|    | 574|+	
| 575| 575| 		if (shape.type == "circle")
| 576| 576| 		{
| 577| 577| 			r.width += shape.radius * 2;
| 582| 582| 			r.width += shape.width;
| 583| 583| 			r.depth += shape.depth;
| 584| 584| 		}
| 585|    |-	}
|    | 585|+	
| 586| 586| 	r.width /= footprints.length;
| 587| 587| 	r.depth /= footprints.length;
| 588| 588| 	return r;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 595| 595| 	separation.depth *= this.separationMultiplier.depth;
| 596| 596| 
| 597| 597| 	if (this.columnar)
| 598|    |-		var sortingClasses = ["Cavalry","Infantry"];
|    | 598|+		var sortingClasses = ["Cavalry", "Infantry"];
| 599| 599| 	else
| 600| 600| 		var sortingClasses = this.sortingClasses.slice();
| 601| 601| 	sortingClasses.push("Unknown");
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 612| 612| 		var classes = cmpIdentity.GetClassesList();
| 613| 613| 		var done = false;
| 614| 614| 		for (var c = 0; c < sortingClasses.length; ++c)
| 615|    |-		{
|    | 615|+		
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618| 618| 				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
| 622|    |-		}
|    | 622|+		
| 623| 623| 		if (!done)
| 624| 624| 			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
| 625| 625| 	}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 615| 615| 		{
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 618|+				types[sortingClasses[c]].push({ "ent": active[i], "pos": positions[i]});
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 615| 615| 		{
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 618|+				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i] });
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
|    | [NORMAL] ESLintBear (dot-notation):
|    | ["Unknown"] is better written in dot notation.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types.Unknown.push({"ent": active[i], "pos": positions[i]});
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types["Unknown"].push({ "ent": active[i], "pos": positions[i]});
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types["Unknown"].push({"ent": active[i], "pos": positions[i] });
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 639| 639| 	if (this.columnar)
| 640| 640| 	{
| 641| 641| 		shape = "square";
| 642|    |-		cols = Math.min(count,3);
|    | 642|+		cols = Math.min(count, 3);
| 643| 643| 		shiftRows = false;
| 644| 644| 		centerGap = 0;
| 645| 645| 		sortingOrder = null;
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 693| 693| 					n -= r%2;
| 694| 694| 			}
| 695| 695| 			else if (shape == "triangle")
| 696|    |-			{
|    | 696|+			
| 697| 697| 				if (shiftRows)
| 698| 698| 					var n = r + 1;
| 699| 699| 				else
| 700| 700| 					var n = r * 2 + 1;
| 701|    |-			}
|    | 701|+			
| 702| 702| 			if (!shiftRows && n > left)
| 703| 703| 				n = left;
| 704| 704| 			for (var c = 0; c < n && left > 0; ++c)
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 734| 734| 	// calculating offset distances without a zero average makes no sense, as the formation
| 735| 735| 	// will jump to a different position any time
| 736| 736| 	var avgoffset = Vector2D.average(offsets);
| 737|    |-	offsets.forEach(function (o) {o.sub(avgoffset);});
|    | 737|+	offsets.forEach(function(o) {o.sub(avgoffset);});
| 738| 738| 
| 739| 739| 	// sort the available places in certain ways
| 740| 740| 	// the places first in the list will contain the heaviest units as defined by the order
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = { "row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'column'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column": offsets[closestOffsetId].column};
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column };
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 803| 803| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 804| 804| {
| 805| 805| 	var offsetPositions = [];
| 806|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 806|+	var { sin, cos} = this.GetEstimatedOrientation(pos);
| 807| 807| 	// calculate the world positions
| 808| 808| 	for (var o of offsets)
| 809| 809| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 803| 803| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 804| 804| {
| 805| 805| 	var offsetPositions = [];
| 806|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 806|+	var {sin, cos } = this.GetEstimatedOrientation(pos);
| 807| 807| 	// calculate the world positions
| 808| 808| 	for (var o of offsets)
| 809| 809| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 820| 820| Formation.prototype.GetEstimatedOrientation = function(pos)
| 821| 821| {
| 822| 822| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 823|    |-	var r = {"sin": 0, "cos": 1};
|    | 823|+	var r = { "sin": 0, "cos": 1};
| 824| 824| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 825| 825| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 826| 826| 	{
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 820| 820| Formation.prototype.GetEstimatedOrientation = function(pos)
| 821| 821| {
| 822| 822| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 823|    |-	var r = {"sin": 0, "cos": 1};
|    | 823|+	var r = {"sin": 0, "cos": 1 };
| 824| 824| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 825| 825| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 826| 826| 	{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 902| 902| 		cmpOtherFormation.RemoveMembers(otherMembers);
| 903| 903| 		this.AddMembers(otherMembers);
| 904| 904| 		Engine.DestroyEntity(this.twinFormations[i]);
| 905|    |-		this.twinFormations.splice(i,1);
|    | 905|+		this.twinFormations.splice(i, 1);
| 906| 906| 	}
| 907| 907| 	// Switch between column and box if necessary
| 908| 908| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);

binaries/data/mods/public/simulation/components/Formation.js
| 426| »   for·(var·ent·of·this.formationMembersWithAura)
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 472| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 513| »   »   var·cmpUnitAI·=·Engine.QueryInterface(offset.ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 548| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 600| »   »   var·sortingClasses·=·this.sortingClasses.slice();
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 609| »   for·(var·i·in·active)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 624| »   »   »   types["Unknown"].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | ['Unknown'] is better written in dot notation.

binaries/data/mods/public/simulation/components/Formation.js
| 664| »   »   for·(var·i·=·0;·i·<·count;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 698| »   »   »   »   »   var·n·=·r·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 700| »   »   »   »   »   var·n·=·r·*·2·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'c' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 711| »   »   »   »   »   var·x·=·side·*·Math.ceil(c/2)·*·separation.width;
|    | [NORMAL] JSHintBear:
|    | 'x' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 714| »   »   »   »   »   if·(x·==·0)·//·don't·use·the·center·position·with·a·center·gap
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 716| »   »   »   »   »   x·+=·side·*·centerGap·/·2;
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 722| »   »   »   »   offsets.push(new·Vector2D(x·+·r1,·z·+·r2));
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 702| »   »   »   if·(!shiftRows·&&·n·>·left)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   »   n·=·left;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 708| »   »   »   »   if·(n%2·==·0)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 718| »   »   »   »   var·column·=·Math.ceil(n/2)·+·Math.ceil(c/2)·*·side;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 728| »   »   »   this.maxColumnsUsed[r]·=·n;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 757| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 601| »   sortingClasses.push("Unknown");
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 606| »   for·(var·i·=·0;·i·<·sortingClasses.length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 607| »   »   types[sortingClasses[i]]·=·[];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 614| »   »   for·(var·c·=·0;·c·<·sortingClasses.length;·++c)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 616| »   »   »   if·(classes.indexOf(sortingClasses[c])·>·-1)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 618| »   »   »   »   types[sortingClasses[c]].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 757| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 759| »   »   var·t·=·types[sortingClasses[i-1]];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 864| »   var·cmpUnitMotion·=·Engine.QueryInterface(this.entity,·IID_UnitMotion);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitMotion' is already defined.
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|  66|  66| 		let phase = "";
|  67|  67| 		let cmpTechnologyManager = QueryPlayerIDInterface(i, IID_TechnologyManager);
|  68|  68| 		if (cmpTechnologyManager)
|  69|    |-		{
|    |  69|+		
|  70|  70| 			if (cmpTechnologyManager.IsTechnologyResearched("phase_city"))
|  71|  71| 				phase = "city";
|  72|  72| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_town"))
|  73|  73| 				phase = "town";
|  74|  74| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_village"))
|  75|  75| 				phase = "village";
|  76|    |-		}
|    |  76|+		
|  77|  77| 
|  78|  78| 		// store player ally/neutral/enemy data as arrays
|  79|  79| 		let allies = [];
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 411| 411| 			ret.attack[type].elevationBonus = range.elevationBonus;
| 412| 412| 
| 413| 413| 			if (cmpUnitAI && cmpPosition && cmpPosition.IsInWorld())
| 414|    |-			{
|    | 414|+			
| 415| 415| 				// For units, take the range in front of it, no spread. So angle = 0
| 416| 416| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 417|    |-			}
|    | 417|+			
| 418| 418| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 419| 419| 			{
| 420| 420| 				// For buildings, take the average elevation around it. So angle = 2*pi
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 416| 416| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 417| 417| 			}
| 418| 418| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 419|    |-			{
|    | 419|+			
| 420| 420| 				// For buildings, take the average elevation around it. So angle = 2*pi
| 421| 421| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 422|    |-			}
|    | 422|+			
| 423| 423| 			else
| 424| 424| 			{
| 425| 425| 				// not in world, set a default?
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 421| 421| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 422| 422| 			}
| 423| 423| 			else
| 424|    |-			{
|    | 424|+			
| 425| 425| 				// not in world, set a default?
| 426| 426| 				ret.attack[type].elevationAdaptedRange = ret.attack.maxRange;
| 427|    |-			}
|    | 427|+			
| 428| 428| 		}
| 429| 429| 	}
| 430| 430| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 792| 792| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 793| 793| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 794| 794| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 795|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 795|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 796| 796| 	}
| 797| 797| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 798| 798| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1311|1311| 		}
|1312|1312| 	}
|1313|1313| 	else
|1314|    |-	{
|    |1314|+	
|1315|1315| 		// Didn't snap to an existing entity, add the starting tower manually. To prevent odd-looking rotation jumps
|1316|1316| 		// when shift-clicking to build a wall, reuse the placement angle that was last seen on a validly positioned
|1317|1317| 		// wall piece.
|1332|1332| 			"pos": start.pos,
|1333|1333| 			"angle": previewEntities.length > 0 ? previewEntities[0].angle : this.placementWallLastAngle
|1334|1334| 		});
|1335|    |-	}
|    |1335|+	
|1336|1336| 
|1337|1337| 	if (end.pos)
|1338|1338| 	{
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1335|1335| 	}
|1336|1336| 
|1337|1337| 	if (end.pos)
|1338|    |-	{
|    |1338|+	
|1339|1339| 		// Analogous to the starting side case above
|1340|1340| 		if (end.snappedEnt && end.snappedEnt != INVALID_ENTITY)
|1341|1341| 		{
|1373|1373| 				"pos": end.pos,
|1374|1374| 				"angle": previewEntities.length > 0 ? previewEntities[previewEntities.length-1].angle : this.placementWallLastAngle
|1375|1375| 			});
|1376|    |-	}
|    |1376|+	
|1377|1377| 
|1378|1378| 	let cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain);
|1379|1379| 	if (!cmpTerrain)
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1551|1551| 
|1552|1552| 		let cmpVisual = Engine.QueryInterface(ent, IID_Visual);
|1553|1553| 		if (cmpVisual)
|1554|    |-		{
|    |1554|+		
|1555|1555| 			if (!allPiecesValid || !canAfford)
|1556|1556| 				cmpVisual.SetShadingColor(1.4, 0.4, 0.4, 1);
|1557|1557| 			else
|1558|1558| 				cmpVisual.SetShadingColor(1, 1, 1, 1);
|1559|    |-		}
|    |1559|+		
|1560|1560| 
|1561|1561| 		++entPool.numUsed;
|1562|1562| 	}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1625|1625| 			{
|1626|1626| 				minDist2 = dist2;
|1627|1627| 				minDistEntitySnapData = {
|1628|    |-						"x": pos.x,
|    |1628|+					"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1626|1626| 				minDist2 = dist2;
|1627|1627| 				minDistEntitySnapData = {
|1628|1628| 						"x": pos.x,
|1629|    |-						"z": pos.z,
|    |1629|+					"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|1632|1632| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1627|1627| 				minDistEntitySnapData = {
|1628|1628| 						"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|    |-						"angle": cmpPosition.GetRotation().y,
|    |1630|+					"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|1632|1632| 				};
|1633|1633| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1628|1628| 						"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|    |-						"ent": ent
|    |1631|+					"ent": ent
|1632|1632| 				};
|1633|1633| 			}
|1634|1634| 		}
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1773|1773| 			result.gain = cmpEntityTrader.GetGoods().amount;
|1774|1774| 	}
|1775|1775| 	else if (data.target === secondMarket)
|1776|    |-	{
|    |1776|+	
|1777|1777| 		result = {
|1778|1778| 			"type": "is second",
|1779|1779| 			"gain": cmpEntityTrader.GetGoods().amount,
|1780|1780| 		};
|1781|    |-	}
|    |1781|+	
|1782|1782| 	else if (!firstMarket)
|1783|1783| 	{
|1784|1784| 		result = { "type": "set first" };
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1780|1780| 		};
|1781|1781| 	}
|1782|1782| 	else if (!firstMarket)
|1783|    |-	{
|    |1783|+	
|1784|1784| 		result = { "type": "set first" };
|1785|    |-	}
|    |1785|+	
|1786|1786| 	else if (!secondMarket)
|1787|1787| 	{
|1788|1788| 		result = {
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1784|1784| 		result = { "type": "set first" };
|1785|1785| 	}
|1786|1786| 	else if (!secondMarket)
|1787|    |-	{
|    |1787|+	
|1788|1788| 		result = {
|1789|1789| 			"type": "set second",
|1790|1790| 			"gain": cmpEntityTrader.CalculateGain(firstMarket, data.target),
|1791|1791| 		};
|1792|    |-	}
|    |1792|+	
|1793|1793| 	else
|1794|1794| 	{
|1795|1795| 		// Else both markets are not null and target is different from them
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1791|1791| 		};
|1792|1792| 	}
|1793|1793| 	else
|1794|    |-	{
|    |1794|+	
|1795|1795| 		// Else both markets are not null and target is different from them
|1796|1796| 		result = { "type": "set first" };
|1797|    |-	}
|    |1797|+	
|1798|1798| 	return result;
|1799|1799| };
|1800|1800|

Link to build: https://jenkins.wildfiregames.com/job/differential/677/display/redirect

Angen updated this revision to Diff 6805.Jul 8 2018, 11:57 AM

fix missing ;

Build failure - The Moirai have given mortals hearts that can endure.

Linter detected issues:
Executing section Default...
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|  98|  98| 	this.canUseSomeFormation = this.GetFormationsList().length > 0;
|  99|  99| };
| 100| 100| 
| 101|    |-Identity.prototype.Deserialize = function ()
|    | 101|+Identity.prototype.Deserialize = function()
| 102| 102| {
| 103| 103| 	this.Init();
| 104| 104| };
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = { "sin": 0, "cos": 0};
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = {"sin": 0, "cos": 0 };
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return { "width": this.width, "depth": this.depth};
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return {"width": this.width, "depth": this.depth };
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return { "width":1, "depth": 1};
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'width'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return {"width": 1, "depth": 1};
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return {"width":1, "depth": 1 };
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 569| 569| 	if (!footprints.length)
| 570| 570| 		return {"width":1, "depth": 1};
| 571| 571| 
| 572|    |-	var r = {"width": 0, "depth": 0};
|    | 572|+	var r = { "width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
| 574| 574| 	{
| 575| 575| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 569| 569| 	if (!footprints.length)
| 570| 570| 		return {"width":1, "depth": 1};
| 571| 571| 
| 572|    |-	var r = {"width": 0, "depth": 0};
|    | 572|+	var r = {"width": 0, "depth": 0 };
| 573| 573| 	for (var shape of footprints)
| 574| 574| 	{
| 575| 575| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
| 574|    |-	{
|    | 574|+	
| 575| 575| 		if (shape.type == "circle")
| 576| 576| 		{
| 577| 577| 			r.width += shape.radius * 2;
| 582| 582| 			r.width += shape.width;
| 583| 583| 			r.depth += shape.depth;
| 584| 584| 		}
| 585|    |-	}
|    | 585|+	
| 586| 586| 	r.width /= footprints.length;
| 587| 587| 	r.depth /= footprints.length;
| 588| 588| 	return r;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 595| 595| 	separation.depth *= this.separationMultiplier.depth;
| 596| 596| 
| 597| 597| 	if (this.columnar)
| 598|    |-		var sortingClasses = ["Cavalry","Infantry"];
|    | 598|+		var sortingClasses = ["Cavalry", "Infantry"];
| 599| 599| 	else
| 600| 600| 		var sortingClasses = this.sortingClasses.slice();
| 601| 601| 	sortingClasses.push("Unknown");
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 612| 612| 		var classes = cmpIdentity.GetClassesList();
| 613| 613| 		var done = false;
| 614| 614| 		for (var c = 0; c < sortingClasses.length; ++c)
| 615|    |-		{
|    | 615|+		
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618| 618| 				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
| 622|    |-		}
|    | 622|+		
| 623| 623| 		if (!done)
| 624| 624| 			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
| 625| 625| 	}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 615| 615| 		{
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 618|+				types[sortingClasses[c]].push({ "ent": active[i], "pos": positions[i]});
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 615| 615| 		{
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 618|+				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i] });
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
|    | [NORMAL] ESLintBear (dot-notation):
|    | ["Unknown"] is better written in dot notation.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types.Unknown.push({"ent": active[i], "pos": positions[i]});
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types["Unknown"].push({ "ent": active[i], "pos": positions[i]});
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types["Unknown"].push({"ent": active[i], "pos": positions[i] });
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 639| 639| 	if (this.columnar)
| 640| 640| 	{
| 641| 641| 		shape = "square";
| 642|    |-		cols = Math.min(count,3);
|    | 642|+		cols = Math.min(count, 3);
| 643| 643| 		shiftRows = false;
| 644| 644| 		centerGap = 0;
| 645| 645| 		sortingOrder = null;
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 693| 693| 					n -= r%2;
| 694| 694| 			}
| 695| 695| 			else if (shape == "triangle")
| 696|    |-			{
|    | 696|+			
| 697| 697| 				if (shiftRows)
| 698| 698| 					var n = r + 1;
| 699| 699| 				else
| 700| 700| 					var n = r * 2 + 1;
| 701|    |-			}
|    | 701|+			
| 702| 702| 			if (!shiftRows && n > left)
| 703| 703| 				n = left;
| 704| 704| 			for (var c = 0; c < n && left > 0; ++c)
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 734| 734| 	// calculating offset distances without a zero average makes no sense, as the formation
| 735| 735| 	// will jump to a different position any time
| 736| 736| 	var avgoffset = Vector2D.average(offsets);
| 737|    |-	offsets.forEach(function (o) {o.sub(avgoffset);});
|    | 737|+	offsets.forEach(function(o) {o.sub(avgoffset);});
| 738| 738| 
| 739| 739| 	// sort the available places in certain ways
| 740| 740| 	// the places first in the list will contain the heaviest units as defined by the order
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = { "row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'column'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column": offsets[closestOffsetId].column};
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column };
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 803| 803| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 804| 804| {
| 805| 805| 	var offsetPositions = [];
| 806|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 806|+	var { sin, cos} = this.GetEstimatedOrientation(pos);
| 807| 807| 	// calculate the world positions
| 808| 808| 	for (var o of offsets)
| 809| 809| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 803| 803| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 804| 804| {
| 805| 805| 	var offsetPositions = [];
| 806|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 806|+	var {sin, cos } = this.GetEstimatedOrientation(pos);
| 807| 807| 	// calculate the world positions
| 808| 808| 	for (var o of offsets)
| 809| 809| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 820| 820| Formation.prototype.GetEstimatedOrientation = function(pos)
| 821| 821| {
| 822| 822| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 823|    |-	var r = {"sin": 0, "cos": 1};
|    | 823|+	var r = { "sin": 0, "cos": 1};
| 824| 824| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 825| 825| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 826| 826| 	{
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 820| 820| Formation.prototype.GetEstimatedOrientation = function(pos)
| 821| 821| {
| 822| 822| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 823|    |-	var r = {"sin": 0, "cos": 1};
|    | 823|+	var r = {"sin": 0, "cos": 1 };
| 824| 824| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 825| 825| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 826| 826| 	{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 902| 902| 		cmpOtherFormation.RemoveMembers(otherMembers);
| 903| 903| 		this.AddMembers(otherMembers);
| 904| 904| 		Engine.DestroyEntity(this.twinFormations[i]);
| 905|    |-		this.twinFormations.splice(i,1);
|    | 905|+		this.twinFormations.splice(i, 1);
| 906| 906| 	}
| 907| 907| 	// Switch between column and box if necessary
| 908| 908| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);

binaries/data/mods/public/simulation/components/Formation.js
| 426| »   for·(var·ent·of·this.formationMembersWithAura)
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 472| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 513| »   »   var·cmpUnitAI·=·Engine.QueryInterface(offset.ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 548| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 600| »   »   var·sortingClasses·=·this.sortingClasses.slice();
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 609| »   for·(var·i·in·active)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 624| »   »   »   types["Unknown"].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | ['Unknown'] is better written in dot notation.

binaries/data/mods/public/simulation/components/Formation.js
| 664| »   »   for·(var·i·=·0;·i·<·count;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 698| »   »   »   »   »   var·n·=·r·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 700| »   »   »   »   »   var·n·=·r·*·2·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'c' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 711| »   »   »   »   »   var·x·=·side·*·Math.ceil(c/2)·*·separation.width;
|    | [NORMAL] JSHintBear:
|    | 'x' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 714| »   »   »   »   »   if·(x·==·0)·//·don't·use·the·center·position·with·a·center·gap
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 716| »   »   »   »   »   x·+=·side·*·centerGap·/·2;
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 722| »   »   »   »   offsets.push(new·Vector2D(x·+·r1,·z·+·r2));
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 702| »   »   »   if·(!shiftRows·&&·n·>·left)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   »   n·=·left;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 708| »   »   »   »   if·(n%2·==·0)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 718| »   »   »   »   var·column·=·Math.ceil(n/2)·+·Math.ceil(c/2)·*·side;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 728| »   »   »   this.maxColumnsUsed[r]·=·n;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 757| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 601| »   sortingClasses.push("Unknown");
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 606| »   for·(var·i·=·0;·i·<·sortingClasses.length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 607| »   »   types[sortingClasses[i]]·=·[];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 614| »   »   for·(var·c·=·0;·c·<·sortingClasses.length;·++c)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 616| »   »   »   if·(classes.indexOf(sortingClasses[c])·>·-1)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 618| »   »   »   »   types[sortingClasses[c]].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 757| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 759| »   »   var·t·=·types[sortingClasses[i-1]];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 864| »   var·cmpUnitMotion·=·Engine.QueryInterface(this.entity,·IID_UnitMotion);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitMotion' is already defined.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 291| 291| 		if (unitEntStates.some(state => !hasClass(state, "Unit")))
| 292| 292| 			return [];
| 293| 293| 
| 294|    |-		if(unitEntStates.every(state => {return !state.identity.canUseFormation}))
|    | 294|+		if(unitEntStates.every(state => {return !state.identity.canUseFormation;}))
| 295| 295| 			return [];
| 296| 296| 
| 297| 297| 		if (!g_AvailableFormations.has(unitEntStates[0].player))
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 449| 449| 				continue;
| 450| 450| 
| 451| 451| 			if (state.pack.progress == 0)
| 452|    |-			{
|    | 452|+			
| 453| 453| 				if (state.pack.packed)
| 454| 454| 					checks.unpackButton = true;
| 455| 455| 				else
| 456| 456| 					checks.packButton = true;
| 457|    |-			}
|    | 457|+			
| 458| 458| 			else if (state.pack.packed)
| 459| 459| 				checks.unpackCancelButton = true;
| 460| 460| 			else
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 760| 760| 				addResearchToQueue(data.item.researchFacilityId, t);
| 761| 761| 			})(tech);
| 762| 762| 
| 763|    |-			button.onPressRight = (t => function () {
|    | 763|+			button.onPressRight = (t => function() {
| 764| 764| 				showTemplateDetails(
| 765| 765| 					t,
| 766| 766| 					GetTemplateData(data.unitEntStates.find(state => state.id == data.item.researchFacilityId).template).nativeCiv);
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 938| 938| 			"player": data.player
| 939| 939| 		});
| 940| 940| 
| 941|    |-		let unitIds = data.unitEntStates.map(status => status.id)
|    | 941|+		let unitIds = data.unitEntStates.map(status => status.id);
| 942| 942| 		let [buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch] =
| 943| 943| 			getTrainingStatus(unitIds, data.item, data.playerState);
| 944| 944| 

binaries/data/mods/public/gui/session/selection_panels.js
|  48| »   »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
|  59| »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 728| »   »   »   »   »   »   switch·(entity.check)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 294| »   »   if(unitEntStates.every(state·=>·{return·!state.identity.canUseFormation}))
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/gui/session/selection_panels.js
| 941| »   »   let·unitIds·=·data.unitEntStates.map(status·=>·status.id)
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|  66|  66| 		let phase = "";
|  67|  67| 		let cmpTechnologyManager = QueryPlayerIDInterface(i, IID_TechnologyManager);
|  68|  68| 		if (cmpTechnologyManager)
|  69|    |-		{
|    |  69|+		
|  70|  70| 			if (cmpTechnologyManager.IsTechnologyResearched("phase_city"))
|  71|  71| 				phase = "city";
|  72|  72| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_town"))
|  73|  73| 				phase = "town";
|  74|  74| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_village"))
|  75|  75| 				phase = "village";
|  76|    |-		}
|    |  76|+		
|  77|  77| 
|  78|  78| 		// store player ally/neutral/enemy data as arrays
|  79|  79| 		let allies = [];
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 411| 411| 			ret.attack[type].elevationBonus = range.elevationBonus;
| 412| 412| 
| 413| 413| 			if (cmpUnitAI && cmpPosition && cmpPosition.IsInWorld())
| 414|    |-			{
|    | 414|+			
| 415| 415| 				// For units, take the range in front of it, no spread. So angle = 0
| 416| 416| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 417|    |-			}
|    | 417|+			
| 418| 418| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 419| 419| 			{
| 420| 420| 				// For buildings, take the average elevation around it. So angle = 2*pi
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 416| 416| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 417| 417| 			}
| 418| 418| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 419|    |-			{
|    | 419|+			
| 420| 420| 				// For buildings, take the average elevation around it. So angle = 2*pi
| 421| 421| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 422|    |-			}
|    | 422|+			
| 423| 423| 			else
| 424| 424| 			{
| 425| 425| 				// not in world, set a default?
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 421| 421| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 422| 422| 			}
| 423| 423| 			else
| 424|    |-			{
|    | 424|+			
| 425| 425| 				// not in world, set a default?
| 426| 426| 				ret.attack[type].elevationAdaptedRange = ret.attack.maxRange;
| 427|    |-			}
|    | 427|+			
| 428| 428| 		}
| 429| 429| 	}
| 430| 430| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 792| 792| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 793| 793| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 794| 794| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 795|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 795|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 796| 796| 	}
| 797| 797| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 798| 798| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1311|1311| 		}
|1312|1312| 	}
|1313|1313| 	else
|1314|    |-	{
|    |1314|+	
|1315|1315| 		// Didn't snap to an existing entity, add the starting tower manually. To prevent odd-looking rotation jumps
|1316|1316| 		// when shift-clicking to build a wall, reuse the placement angle that was last seen on a validly positioned
|1317|1317| 		// wall piece.
|1332|1332| 			"pos": start.pos,
|1333|1333| 			"angle": previewEntities.length > 0 ? previewEntities[0].angle : this.placementWallLastAngle
|1334|1334| 		});
|1335|    |-	}
|    |1335|+	
|1336|1336| 
|1337|1337| 	if (end.pos)
|1338|1338| 	{
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1335|1335| 	}
|1336|1336| 
|1337|1337| 	if (end.pos)
|1338|    |-	{
|    |1338|+	
|1339|1339| 		// Analogous to the starting side case above
|1340|1340| 		if (end.snappedEnt && end.snappedEnt != INVALID_ENTITY)
|1341|1341| 		{
|1373|1373| 				"pos": end.pos,
|1374|1374| 				"angle": previewEntities.length > 0 ? previewEntities[previewEntities.length-1].angle : this.placementWallLastAngle
|1375|1375| 			});
|1376|    |-	}
|    |1376|+	
|1377|1377| 
|1378|1378| 	let cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain);
|1379|1379| 	if (!cmpTerrain)
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1551|1551| 
|1552|1552| 		let cmpVisual = Engine.QueryInterface(ent, IID_Visual);
|1553|1553| 		if (cmpVisual)
|1554|    |-		{
|    |1554|+		
|1555|1555| 			if (!allPiecesValid || !canAfford)
|1556|1556| 				cmpVisual.SetShadingColor(1.4, 0.4, 0.4, 1);
|1557|1557| 			else
|1558|1558| 				cmpVisual.SetShadingColor(1, 1, 1, 1);
|1559|    |-		}
|    |1559|+		
|1560|1560| 
|1561|1561| 		++entPool.numUsed;
|1562|1562| 	}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1625|1625| 			{
|1626|1626| 				minDist2 = dist2;
|1627|1627| 				minDistEntitySnapData = {
|1628|    |-						"x": pos.x,
|    |1628|+					"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1626|1626| 				minDist2 = dist2;
|1627|1627| 				minDistEntitySnapData = {
|1628|1628| 						"x": pos.x,
|1629|    |-						"z": pos.z,
|    |1629|+					"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|1632|1632| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1627|1627| 				minDistEntitySnapData = {
|1628|1628| 						"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|    |-						"angle": cmpPosition.GetRotation().y,
|    |1630|+					"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|1632|1632| 				};
|1633|1633| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1628|1628| 						"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|    |-						"ent": ent
|    |1631|+					"ent": ent
|1632|1632| 				};
|1633|1633| 			}
|1634|1634| 		}
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1773|1773| 			result.gain = cmpEntityTrader.GetGoods().amount;
|1774|1774| 	}
|1775|1775| 	else if (data.target === secondMarket)
|1776|    |-	{
|    |1776|+	
|1777|1777| 		result = {
|1778|1778| 			"type": "is second",
|1779|1779| 			"gain": cmpEntityTrader.GetGoods().amount,
|1780|1780| 		};
|1781|    |-	}
|    |1781|+	
|1782|1782| 	else if (!firstMarket)
|1783|1783| 	{
|1784|1784| 		result = { "type": "set first" };
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1780|1780| 		};
|1781|1781| 	}
|1782|1782| 	else if (!firstMarket)
|1783|    |-	{
|    |1783|+	
|1784|1784| 		result = { "type": "set first" };
|1785|    |-	}
|    |1785|+	
|1786|1786| 	else if (!secondMarket)
|1787|1787| 	{
|1788|1788| 		result = {
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1784|1784| 		result = { "type": "set first" };
|1785|1785| 	}
|1786|1786| 	else if (!secondMarket)
|1787|    |-	{
|    |1787|+	
|1788|1788| 		result = {
|1789|1789| 			"type": "set second",
|1790|1790| 			"gain": cmpEntityTrader.CalculateGain(firstMarket, data.target),
|1791|1791| 		};
|1792|    |-	}
|    |1792|+	
|1793|1793| 	else
|1794|1794| 	{
|1795|1795| 		// Else both markets are not null and target is different from them
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1791|1791| 		};
|1792|1792| 	}
|1793|1793| 	else
|1794|    |-	{
|    |1794|+	
|1795|1795| 		// Else both markets are not null and target is different from them
|1796|1796| 		result = { "type": "set first" };
|1797|    |-	}
|    |1797|+	
|1798|1798| 	return result;
|1799|1799| };
|1800|1800|

Link to build: https://jenkins.wildfiregames.com/job/differential/678/display/redirect

Itms added a subscriber: Itms.Aug 4 2018, 10:38 PM

Build failure - The Moirai have given mortals hearts that can endure.

Linter detected issues:
Executing section Default...
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|  98|  98| 	this.canUseSomeFormation = this.GetFormationsList().length > 0;
|  99|  99| };
| 100| 100| 
| 101|    |-Identity.prototype.Deserialize = function ()
|    | 101|+Identity.prototype.Deserialize = function()
| 102| 102| {
| 103| 103| 	this.Init();
| 104| 104| };
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 291| 291| 		if (unitEntStates.some(state => !hasClass(state, "Unit")))
| 292| 292| 			return [];
| 293| 293| 
| 294|    |-		if(unitEntStates.every(state => {return !state.identity.canUseFormation}))
|    | 294|+		if(unitEntStates.every(state => {return !state.identity.canUseFormation;}))
| 295| 295| 			return [];
| 296| 296| 
| 297| 297| 		if (!g_AvailableFormations.has(unitEntStates[0].player))
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 449| 449| 				continue;
| 450| 450| 
| 451| 451| 			if (state.pack.progress == 0)
| 452|    |-			{
|    | 452|+			
| 453| 453| 				if (state.pack.packed)
| 454| 454| 					checks.unpackButton = true;
| 455| 455| 				else
| 456| 456| 					checks.packButton = true;
| 457|    |-			}
|    | 457|+			
| 458| 458| 			else if (state.pack.packed)
| 459| 459| 				checks.unpackCancelButton = true;
| 460| 460| 			else
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 760| 760| 				addResearchToQueue(data.item.researchFacilityId, t);
| 761| 761| 			})(tech);
| 762| 762| 
| 763|    |-			button.onPressRight = (t => function () {
|    | 763|+			button.onPressRight = (t => function() {
| 764| 764| 				showTemplateDetails(
| 765| 765| 					t,
| 766| 766| 					GetTemplateData(data.unitEntStates.find(state => state.id == data.item.researchFacilityId).template).nativeCiv);
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 938| 938| 			"player": data.player
| 939| 939| 		});
| 940| 940| 
| 941|    |-		let unitIds = data.unitEntStates.map(status => status.id)
|    | 941|+		let unitIds = data.unitEntStates.map(status => status.id);
| 942| 942| 		let [buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch] =
| 943| 943| 			getTrainingStatus(unitIds, data.item, data.playerState);
| 944| 944| 

binaries/data/mods/public/gui/session/selection_panels.js
|  48| »   »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
|  59| »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 728| »   »   »   »   »   »   switch·(entity.check)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 294| »   »   if(unitEntStates.every(state·=>·{return·!state.identity.canUseFormation}))
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/gui/session/selection_panels.js
| 941| »   »   let·unitIds·=·data.unitEntStates.map(status·=>·status.id)
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = { "sin": 0, "cos": 0};
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = {"sin": 0, "cos": 0 };
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return { "width": this.width, "depth": this.depth};
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return {"width": this.width, "depth": this.depth };
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return { "width":1, "depth": 1};
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'width'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return {"width": 1, "depth": 1};
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return {"width":1, "depth": 1 };
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 569| 569| 	if (!footprints.length)
| 570| 570| 		return {"width":1, "depth": 1};
| 571| 571| 
| 572|    |-	var r = {"width": 0, "depth": 0};
|    | 572|+	var r = { "width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
| 574| 574| 	{
| 575| 575| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 569| 569| 	if (!footprints.length)
| 570| 570| 		return {"width":1, "depth": 1};
| 571| 571| 
| 572|    |-	var r = {"width": 0, "depth": 0};
|    | 572|+	var r = {"width": 0, "depth": 0 };
| 573| 573| 	for (var shape of footprints)
| 574| 574| 	{
| 575| 575| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
| 574|    |-	{
|    | 574|+	
| 575| 575| 		if (shape.type == "circle")
| 576| 576| 		{
| 577| 577| 			r.width += shape.radius * 2;
| 582| 582| 			r.width += shape.width;
| 583| 583| 			r.depth += shape.depth;
| 584| 584| 		}
| 585|    |-	}
|    | 585|+	
| 586| 586| 	r.width /= footprints.length;
| 587| 587| 	r.depth /= footprints.length;
| 588| 588| 	return r;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 595| 595| 	separation.depth *= this.separationMultiplier.depth;
| 596| 596| 
| 597| 597| 	if (this.columnar)
| 598|    |-		var sortingClasses = ["Cavalry","Infantry"];
|    | 598|+		var sortingClasses = ["Cavalry", "Infantry"];
| 599| 599| 	else
| 600| 600| 		var sortingClasses = this.sortingClasses.slice();
| 601| 601| 	sortingClasses.push("Unknown");
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 612| 612| 		var classes = cmpIdentity.GetClassesList();
| 613| 613| 		var done = false;
| 614| 614| 		for (var c = 0; c < sortingClasses.length; ++c)
| 615|    |-		{
|    | 615|+		
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618| 618| 				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
| 622|    |-		}
|    | 622|+		
| 623| 623| 		if (!done)
| 624| 624| 			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
| 625| 625| 	}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 615| 615| 		{
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 618|+				types[sortingClasses[c]].push({ "ent": active[i], "pos": positions[i]});
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 615| 615| 		{
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 618|+				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i] });
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
|    | [NORMAL] ESLintBear (dot-notation):
|    | ["Unknown"] is better written in dot notation.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types.Unknown.push({"ent": active[i], "pos": positions[i]});
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types["Unknown"].push({ "ent": active[i], "pos": positions[i]});
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types["Unknown"].push({"ent": active[i], "pos": positions[i] });
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 639| 639| 	if (this.columnar)
| 640| 640| 	{
| 641| 641| 		shape = "square";
| 642|    |-		cols = Math.min(count,3);
|    | 642|+		cols = Math.min(count, 3);
| 643| 643| 		shiftRows = false;
| 644| 644| 		centerGap = 0;
| 645| 645| 		sortingOrder = null;
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 693| 693| 					n -= r%2;
| 694| 694| 			}
| 695| 695| 			else if (shape == "triangle")
| 696|    |-			{
|    | 696|+			
| 697| 697| 				if (shiftRows)
| 698| 698| 					var n = r + 1;
| 699| 699| 				else
| 700| 700| 					var n = r * 2 + 1;
| 701|    |-			}
|    | 701|+			
| 702| 702| 			if (!shiftRows && n > left)
| 703| 703| 				n = left;
| 704| 704| 			for (var c = 0; c < n && left > 0; ++c)
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 734| 734| 	// calculating offset distances without a zero average makes no sense, as the formation
| 735| 735| 	// will jump to a different position any time
| 736| 736| 	var avgoffset = Vector2D.average(offsets);
| 737|    |-	offsets.forEach(function (o) {o.sub(avgoffset);});
|    | 737|+	offsets.forEach(function(o) {o.sub(avgoffset);});
| 738| 738| 
| 739| 739| 	// sort the available places in certain ways
| 740| 740| 	// the places first in the list will contain the heaviest units as defined by the order
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = { "row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'column'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column": offsets[closestOffsetId].column};
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column };
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 803| 803| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 804| 804| {
| 805| 805| 	var offsetPositions = [];
| 806|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 806|+	var { sin, cos} = this.GetEstimatedOrientation(pos);
| 807| 807| 	// calculate the world positions
| 808| 808| 	for (var o of offsets)
| 809| 809| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 803| 803| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 804| 804| {
| 805| 805| 	var offsetPositions = [];
| 806|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 806|+	var {sin, cos } = this.GetEstimatedOrientation(pos);
| 807| 807| 	// calculate the world positions
| 808| 808| 	for (var o of offsets)
| 809| 809| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 820| 820| Formation.prototype.GetEstimatedOrientation = function(pos)
| 821| 821| {
| 822| 822| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 823|    |-	var r = {"sin": 0, "cos": 1};
|    | 823|+	var r = { "sin": 0, "cos": 1};
| 824| 824| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 825| 825| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 826| 826| 	{
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 820| 820| Formation.prototype.GetEstimatedOrientation = function(pos)
| 821| 821| {
| 822| 822| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 823|    |-	var r = {"sin": 0, "cos": 1};
|    | 823|+	var r = {"sin": 0, "cos": 1 };
| 824| 824| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 825| 825| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 826| 826| 	{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 902| 902| 		cmpOtherFormation.RemoveMembers(otherMembers);
| 903| 903| 		this.AddMembers(otherMembers);
| 904| 904| 		Engine.DestroyEntity(this.twinFormations[i]);
| 905|    |-		this.twinFormations.splice(i,1);
|    | 905|+		this.twinFormations.splice(i, 1);
| 906| 906| 	}
| 907| 907| 	// Switch between column and box if necessary
| 908| 908| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);

binaries/data/mods/public/simulation/components/Formation.js
| 426| »   for·(var·ent·of·this.formationMembersWithAura)
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 472| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 513| »   »   var·cmpUnitAI·=·Engine.QueryInterface(offset.ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 548| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 600| »   »   var·sortingClasses·=·this.sortingClasses.slice();
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 609| »   for·(var·i·in·active)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 624| »   »   »   types["Unknown"].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | ['Unknown'] is better written in dot notation.

binaries/data/mods/public/simulation/components/Formation.js
| 664| »   »   for·(var·i·=·0;·i·<·count;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 698| »   »   »   »   »   var·n·=·r·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 700| »   »   »   »   »   var·n·=·r·*·2·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'c' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 711| »   »   »   »   »   var·x·=·side·*·Math.ceil(c/2)·*·separation.width;
|    | [NORMAL] JSHintBear:
|    | 'x' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 714| »   »   »   »   »   if·(x·==·0)·//·don't·use·the·center·position·with·a·center·gap
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 716| »   »   »   »   »   x·+=·side·*·centerGap·/·2;
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 722| »   »   »   »   offsets.push(new·Vector2D(x·+·r1,·z·+·r2));
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 702| »   »   »   if·(!shiftRows·&&·n·>·left)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   »   n·=·left;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 708| »   »   »   »   if·(n%2·==·0)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 718| »   »   »   »   var·column·=·Math.ceil(n/2)·+·Math.ceil(c/2)·*·side;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 728| »   »   »   this.maxColumnsUsed[r]·=·n;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 757| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 601| »   sortingClasses.push("Unknown");
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 606| »   for·(var·i·=·0;·i·<·sortingClasses.length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 607| »   »   types[sortingClasses[i]]·=·[];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 614| »   »   for·(var·c·=·0;·c·<·sortingClasses.length;·++c)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 616| »   »   »   if·(classes.indexOf(sortingClasses[c])·>·-1)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 618| »   »   »   »   types[sortingClasses[c]].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 757| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 759| »   »   var·t·=·types[sortingClasses[i-1]];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 864| »   var·cmpUnitMotion·=·Engine.QueryInterface(this.entity,·IID_UnitMotion);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitMotion' is already defined.
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|  66|  66| 		let phase = "";
|  67|  67| 		let cmpTechnologyManager = QueryPlayerIDInterface(i, IID_TechnologyManager);
|  68|  68| 		if (cmpTechnologyManager)
|  69|    |-		{
|    |  69|+		
|  70|  70| 			if (cmpTechnologyManager.IsTechnologyResearched("phase_city"))
|  71|  71| 				phase = "city";
|  72|  72| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_town"))
|  73|  73| 				phase = "town";
|  74|  74| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_village"))
|  75|  75| 				phase = "village";
|  76|    |-		}
|    |  76|+		
|  77|  77| 
|  78|  78| 		// store player ally/neutral/enemy data as arrays
|  79|  79| 		let allies = [];
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 411| 411| 			ret.attack[type].elevationBonus = range.elevationBonus;
| 412| 412| 
| 413| 413| 			if (cmpUnitAI && cmpPosition && cmpPosition.IsInWorld())
| 414|    |-			{
|    | 414|+			
| 415| 415| 				// For units, take the range in front of it, no spread. So angle = 0
| 416| 416| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 417|    |-			}
|    | 417|+			
| 418| 418| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 419| 419| 			{
| 420| 420| 				// For buildings, take the average elevation around it. So angle = 2*pi
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 416| 416| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 417| 417| 			}
| 418| 418| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 419|    |-			{
|    | 419|+			
| 420| 420| 				// For buildings, take the average elevation around it. So angle = 2*pi
| 421| 421| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 422|    |-			}
|    | 422|+			
| 423| 423| 			else
| 424| 424| 			{
| 425| 425| 				// not in world, set a default?
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 421| 421| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 422| 422| 			}
| 423| 423| 			else
| 424|    |-			{
|    | 424|+			
| 425| 425| 				// not in world, set a default?
| 426| 426| 				ret.attack[type].elevationAdaptedRange = ret.attack.maxRange;
| 427|    |-			}
|    | 427|+			
| 428| 428| 		}
| 429| 429| 	}
| 430| 430| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 792| 792| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 793| 793| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 794| 794| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 795|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 795|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 796| 796| 	}
| 797| 797| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 798| 798| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1311|1311| 		}
|1312|1312| 	}
|1313|1313| 	else
|1314|    |-	{
|    |1314|+	
|1315|1315| 		// Didn't snap to an existing entity, add the starting tower manually. To prevent odd-looking rotation jumps
|1316|1316| 		// when shift-clicking to build a wall, reuse the placement angle that was last seen on a validly positioned
|1317|1317| 		// wall piece.
|1332|1332| 			"pos": start.pos,
|1333|1333| 			"angle": previewEntities.length > 0 ? previewEntities[0].angle : this.placementWallLastAngle
|1334|1334| 		});
|1335|    |-	}
|    |1335|+	
|1336|1336| 
|1337|1337| 	if (end.pos)
|1338|1338| 	{
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1335|1335| 	}
|1336|1336| 
|1337|1337| 	if (end.pos)
|1338|    |-	{
|    |1338|+	
|1339|1339| 		// Analogous to the starting side case above
|1340|1340| 		if (end.snappedEnt && end.snappedEnt != INVALID_ENTITY)
|1341|1341| 		{
|1373|1373| 				"pos": end.pos,
|1374|1374| 				"angle": previewEntities.length > 0 ? previewEntities[previewEntities.length-1].angle : this.placementWallLastAngle
|1375|1375| 			});
|1376|    |-	}
|    |1376|+	
|1377|1377| 
|1378|1378| 	let cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain);
|1379|1379| 	if (!cmpTerrain)
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1551|1551| 
|1552|1552| 		let cmpVisual = Engine.QueryInterface(ent, IID_Visual);
|1553|1553| 		if (cmpVisual)
|1554|    |-		{
|    |1554|+		
|1555|1555| 			if (!allPiecesValid || !canAfford)
|1556|1556| 				cmpVisual.SetShadingColor(1.4, 0.4, 0.4, 1);
|1557|1557| 			else
|1558|1558| 				cmpVisual.SetShadingColor(1, 1, 1, 1);
|1559|    |-		}
|    |1559|+		
|1560|1560| 
|1561|1561| 		++entPool.numUsed;
|1562|1562| 	}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1625|1625| 			{
|1626|1626| 				minDist2 = dist2;
|1627|1627| 				minDistEntitySnapData = {
|1628|    |-						"x": pos.x,
|    |1628|+					"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1626|1626| 				minDist2 = dist2;
|1627|1627| 				minDistEntitySnapData = {
|1628|1628| 						"x": pos.x,
|1629|    |-						"z": pos.z,
|    |1629|+					"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|1632|1632| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1627|1627| 				minDistEntitySnapData = {
|1628|1628| 						"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|    |-						"angle": cmpPosition.GetRotation().y,
|    |1630|+					"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|1632|1632| 				};
|1633|1633| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1628|1628| 						"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|    |-						"ent": ent
|    |1631|+					"ent": ent
|1632|1632| 				};
|1633|1633| 			}
|1634|1634| 		}
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1773|1773| 			result.gain = cmpEntityTrader.GetGoods().amount;
|1774|1774| 	}
|1775|1775| 	else if (data.target === secondMarket)
|1776|    |-	{
|    |1776|+	
|1777|1777| 		result = {
|1778|1778| 			"type": "is second",
|1779|1779| 			"gain": cmpEntityTrader.GetGoods().amount,
|1780|1780| 		};
|1781|    |-	}
|    |1781|+	
|1782|1782| 	else if (!firstMarket)
|1783|1783| 	{
|1784|1784| 		result = { "type": "set first" };
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1780|1780| 		};
|1781|1781| 	}
|1782|1782| 	else if (!firstMarket)
|1783|    |-	{
|    |1783|+	
|1784|1784| 		result = { "type": "set first" };
|1785|    |-	}
|    |1785|+	
|1786|1786| 	else if (!secondMarket)
|1787|1787| 	{
|1788|1788| 		result = {
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1784|1784| 		result = { "type": "set first" };
|1785|1785| 	}
|1786|1786| 	else if (!secondMarket)
|1787|    |-	{
|    |1787|+	
|1788|1788| 		result = {
|1789|1789| 			"type": "set second",
|1790|1790| 			"gain": cmpEntityTrader.CalculateGain(firstMarket, data.target),
|1791|1791| 		};
|1792|    |-	}
|    |1792|+	
|1793|1793| 	else
|1794|1794| 	{
|1795|1795| 		// Else both markets are not null and target is different from them
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1791|1791| 		};
|1792|1792| 	}
|1793|1793| 	else
|1794|    |-	{
|    |1794|+	
|1795|1795| 		// Else both markets are not null and target is different from them
|1796|1796| 		result = { "type": "set first" };
|1797|    |-	}
|    |1797|+	
|1798|1798| 	return result;
|1799|1799| };
|1800|1800|

Link to build: https://jenkins.wildfiregames.com/job/differential/707/display/redirect

Vulcan added a comment.Aug 5 2018, 7:01 PM

Build failure - The Moirai have given mortals hearts that can endure.

Linter detected issues:
Executing section Default...
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|  98|  98| 	this.canUseSomeFormation = this.GetFormationsList().length > 0;
|  99|  99| };
| 100| 100| 
| 101|    |-Identity.prototype.Deserialize = function ()
|    | 101|+Identity.prototype.Deserialize = function()
| 102| 102| {
| 103| 103| 	this.Init();
| 104| 104| };
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = { "sin": 0, "cos": 0};
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 131| 131| 	this.formationMembersWithAura = []; // Members with a formation aura
| 132| 132| 	this.width = 0;
| 133| 133| 	this.depth = 0;
| 134|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 134|+	this.oldOrientation = {"sin": 0, "cos": 0 };
| 135| 135| 	this.twinFormations = [];
| 136| 136| 	// distance from which two twin formations will merge into one.
| 137| 137| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return { "width": this.width, "depth": this.depth};
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 149| 149| 
| 150| 150| Formation.prototype.GetSize = function()
| 151| 151| {
| 152|    |-	return {"width": this.width, "depth": this.depth};
|    | 152|+	return {"width": this.width, "depth": this.depth };
| 153| 153| };
| 154| 154| 
| 155| 155| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return { "width":1, "depth": 1};
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'width'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return {"width": 1, "depth": 1};
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 567| 567| 			footprints.push(cmpFootprint.GetShape());
| 568| 568| 	}
| 569| 569| 	if (!footprints.length)
| 570|    |-		return {"width":1, "depth": 1};
|    | 570|+		return {"width":1, "depth": 1 };
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 569| 569| 	if (!footprints.length)
| 570| 570| 		return {"width":1, "depth": 1};
| 571| 571| 
| 572|    |-	var r = {"width": 0, "depth": 0};
|    | 572|+	var r = { "width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
| 574| 574| 	{
| 575| 575| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 569| 569| 	if (!footprints.length)
| 570| 570| 		return {"width":1, "depth": 1};
| 571| 571| 
| 572|    |-	var r = {"width": 0, "depth": 0};
|    | 572|+	var r = {"width": 0, "depth": 0 };
| 573| 573| 	for (var shape of footprints)
| 574| 574| 	{
| 575| 575| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 571| 571| 
| 572| 572| 	var r = {"width": 0, "depth": 0};
| 573| 573| 	for (var shape of footprints)
| 574|    |-	{
|    | 574|+	
| 575| 575| 		if (shape.type == "circle")
| 576| 576| 		{
| 577| 577| 			r.width += shape.radius * 2;
| 582| 582| 			r.width += shape.width;
| 583| 583| 			r.depth += shape.depth;
| 584| 584| 		}
| 585|    |-	}
|    | 585|+	
| 586| 586| 	r.width /= footprints.length;
| 587| 587| 	r.depth /= footprints.length;
| 588| 588| 	return r;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 595| 595| 	separation.depth *= this.separationMultiplier.depth;
| 596| 596| 
| 597| 597| 	if (this.columnar)
| 598|    |-		var sortingClasses = ["Cavalry","Infantry"];
|    | 598|+		var sortingClasses = ["Cavalry", "Infantry"];
| 599| 599| 	else
| 600| 600| 		var sortingClasses = this.sortingClasses.slice();
| 601| 601| 	sortingClasses.push("Unknown");
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 612| 612| 		var classes = cmpIdentity.GetClassesList();
| 613| 613| 		var done = false;
| 614| 614| 		for (var c = 0; c < sortingClasses.length; ++c)
| 615|    |-		{
|    | 615|+		
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618| 618| 				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
| 622|    |-		}
|    | 622|+		
| 623| 623| 		if (!done)
| 624| 624| 			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
| 625| 625| 	}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 615| 615| 		{
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 618|+				types[sortingClasses[c]].push({ "ent": active[i], "pos": positions[i]});
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 615| 615| 		{
| 616| 616| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 617| 617| 			{
| 618|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 618|+				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i] });
| 619| 619| 				done = true;
| 620| 620| 				break;
| 621| 621| 			}
|    | [NORMAL] ESLintBear (dot-notation):
|    | ["Unknown"] is better written in dot notation.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types.Unknown.push({"ent": active[i], "pos": positions[i]});
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types["Unknown"].push({ "ent": active[i], "pos": positions[i]});
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 621| 621| 			}
| 622| 622| 		}
| 623| 623| 		if (!done)
| 624|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 624|+			types["Unknown"].push({"ent": active[i], "pos": positions[i] });
| 625| 625| 	}
| 626| 626| 
| 627| 627| 	var count = active.length;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 639| 639| 	if (this.columnar)
| 640| 640| 	{
| 641| 641| 		shape = "square";
| 642|    |-		cols = Math.min(count,3);
|    | 642|+		cols = Math.min(count, 3);
| 643| 643| 		shiftRows = false;
| 644| 644| 		centerGap = 0;
| 645| 645| 		sortingOrder = null;
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 693| 693| 					n -= r%2;
| 694| 694| 			}
| 695| 695| 			else if (shape == "triangle")
| 696|    |-			{
|    | 696|+			
| 697| 697| 				if (shiftRows)
| 698| 698| 					var n = r + 1;
| 699| 699| 				else
| 700| 700| 					var n = r * 2 + 1;
| 701|    |-			}
|    | 701|+			
| 702| 702| 			if (!shiftRows && n > left)
| 703| 703| 				n = left;
| 704| 704| 			for (var c = 0; c < n && left > 0; ++c)
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 734| 734| 	// calculating offset distances without a zero average makes no sense, as the formation
| 735| 735| 	// will jump to a different position any time
| 736| 736| 	var avgoffset = Vector2D.average(offsets);
| 737|    |-	offsets.forEach(function (o) {o.sub(avgoffset);});
|    | 737|+	offsets.forEach(function(o) {o.sub(avgoffset);});
| 738| 738| 
| 739| 739| 	// sort the available places in certain ways
| 740| 740| 	// the places first in the list will contain the heaviest units as defined by the order
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = { "row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'column'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column": offsets[closestOffsetId].column};
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 793| 793| 			closestOffsetId = i;
| 794| 794| 		}
| 795| 795| 	}
| 796|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 796|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column };
| 797| 797| 	return closestOffsetId;
| 798| 798| };
| 799| 799| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 803| 803| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 804| 804| {
| 805| 805| 	var offsetPositions = [];
| 806|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 806|+	var { sin, cos} = this.GetEstimatedOrientation(pos);
| 807| 807| 	// calculate the world positions
| 808| 808| 	for (var o of offsets)
| 809| 809| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 803| 803| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 804| 804| {
| 805| 805| 	var offsetPositions = [];
| 806|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 806|+	var {sin, cos } = this.GetEstimatedOrientation(pos);
| 807| 807| 	// calculate the world positions
| 808| 808| 	for (var o of offsets)
| 809| 809| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 820| 820| Formation.prototype.GetEstimatedOrientation = function(pos)
| 821| 821| {
| 822| 822| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 823|    |-	var r = {"sin": 0, "cos": 1};
|    | 823|+	var r = { "sin": 0, "cos": 1};
| 824| 824| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 825| 825| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 826| 826| 	{
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 820| 820| Formation.prototype.GetEstimatedOrientation = function(pos)
| 821| 821| {
| 822| 822| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 823|    |-	var r = {"sin": 0, "cos": 1};
|    | 823|+	var r = {"sin": 0, "cos": 1 };
| 824| 824| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 825| 825| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 826| 826| 	{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 902| 902| 		cmpOtherFormation.RemoveMembers(otherMembers);
| 903| 903| 		this.AddMembers(otherMembers);
| 904| 904| 		Engine.DestroyEntity(this.twinFormations[i]);
| 905|    |-		this.twinFormations.splice(i,1);
|    | 905|+		this.twinFormations.splice(i, 1);
| 906| 906| 	}
| 907| 907| 	// Switch between column and box if necessary
| 908| 908| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);

binaries/data/mods/public/simulation/components/Formation.js
| 426| »   for·(var·ent·of·this.formationMembersWithAura)
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 472| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 513| »   »   var·cmpUnitAI·=·Engine.QueryInterface(offset.ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 548| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 600| »   »   var·sortingClasses·=·this.sortingClasses.slice();
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 609| »   for·(var·i·in·active)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 624| »   »   »   types["Unknown"].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | ['Unknown'] is better written in dot notation.

binaries/data/mods/public/simulation/components/Formation.js
| 664| »   »   for·(var·i·=·0;·i·<·count;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 698| »   »   »   »   »   var·n·=·r·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 700| »   »   »   »   »   var·n·=·r·*·2·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'c' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 711| »   »   »   »   »   var·x·=·side·*·Math.ceil(c/2)·*·separation.width;
|    | [NORMAL] JSHintBear:
|    | 'x' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 714| »   »   »   »   »   if·(x·==·0)·//·don't·use·the·center·position·with·a·center·gap
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 716| »   »   »   »   »   x·+=·side·*·centerGap·/·2;
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 722| »   »   »   »   offsets.push(new·Vector2D(x·+·r1,·z·+·r2));
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 702| »   »   »   if·(!shiftRows·&&·n·>·left)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   »   n·=·left;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 704| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 708| »   »   »   »   if·(n%2·==·0)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 718| »   »   »   »   var·column·=·Math.ceil(n/2)·+·Math.ceil(c/2)·*·side;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 728| »   »   »   this.maxColumnsUsed[r]·=·n;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 757| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 601| »   sortingClasses.push("Unknown");
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 606| »   for·(var·i·=·0;·i·<·sortingClasses.length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 607| »   »   types[sortingClasses[i]]·=·[];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 614| »   »   for·(var·c·=·0;·c·<·sortingClasses.length;·++c)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 616| »   »   »   if·(classes.indexOf(sortingClasses[c])·>·-1)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 618| »   »   »   »   types[sortingClasses[c]].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 757| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 759| »   »   var·t·=·types[sortingClasses[i-1]];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 864| »   var·cmpUnitMotion·=·Engine.QueryInterface(this.entity,·IID_UnitMotion);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitMotion' is already defined.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 291| 291| 		if (unitEntStates.some(state => !hasClass(state, "Unit")))
| 292| 292| 			return [];
| 293| 293| 
| 294|    |-		if(unitEntStates.every(state => {return !state.identity.canUseFormation}))
|    | 294|+		if(unitEntStates.every(state => {return !state.identity.canUseFormation;}))
| 295| 295| 			return [];
| 296| 296| 
| 297| 297| 		if (!g_AvailableFormations.has(unitEntStates[0].player))
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 449| 449| 				continue;
| 450| 450| 
| 451| 451| 			if (state.pack.progress == 0)
| 452|    |-			{
|    | 452|+			
| 453| 453| 				if (state.pack.packed)
| 454| 454| 					checks.unpackButton = true;
| 455| 455| 				else
| 456| 456| 					checks.packButton = true;
| 457|    |-			}
|    | 457|+			
| 458| 458| 			else if (state.pack.packed)
| 459| 459| 				checks.unpackCancelButton = true;
| 460| 460| 			else
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 760| 760| 				addResearchToQueue(data.item.researchFacilityId, t);
| 761| 761| 			})(tech);
| 762| 762| 
| 763|    |-			button.onPressRight = (t => function () {
|    | 763|+			button.onPressRight = (t => function() {
| 764| 764| 				showTemplateDetails(
| 765| 765| 					t,
| 766| 766| 					GetTemplateData(data.unitEntStates.find(state => state.id == data.item.researchFacilityId).template).nativeCiv);
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 938| 938| 			"player": data.player
| 939| 939| 		});
| 940| 940| 
| 941|    |-		let unitIds = data.unitEntStates.map(status => status.id)
|    | 941|+		let unitIds = data.unitEntStates.map(status => status.id);
| 942| 942| 		let [buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch] =
| 943| 943| 			getTrainingStatus(unitIds, data.item, data.playerState);
| 944| 944| 

binaries/data/mods/public/gui/session/selection_panels.js
|  48| »   »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
|  59| »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 728| »   »   »   »   »   »   switch·(entity.check)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 294| »   »   if(unitEntStates.every(state·=>·{return·!state.identity.canUseFormation}))
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/gui/session/selection_panels.js
| 941| »   »   let·unitIds·=·data.unitEntStates.map(status·=>·status.id)
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|  66|  66| 		let phase = "";
|  67|  67| 		let cmpTechnologyManager = QueryPlayerIDInterface(i, IID_TechnologyManager);
|  68|  68| 		if (cmpTechnologyManager)
|  69|    |-		{
|    |  69|+		
|  70|  70| 			if (cmpTechnologyManager.IsTechnologyResearched("phase_city"))
|  71|  71| 				phase = "city";
|  72|  72| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_town"))
|  73|  73| 				phase = "town";
|  74|  74| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_village"))
|  75|  75| 				phase = "village";
|  76|    |-		}
|    |  76|+		
|  77|  77| 
|  78|  78| 		// store player ally/neutral/enemy data as arrays
|  79|  79| 		let allies = [];
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 411| 411| 			ret.attack[type].elevationBonus = range.elevationBonus;
| 412| 412| 
| 413| 413| 			if (cmpUnitAI && cmpPosition && cmpPosition.IsInWorld())
| 414|    |-			{
|    | 414|+			
| 415| 415| 				// For units, take the range in front of it, no spread. So angle = 0
| 416| 416| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 417|    |-			}
|    | 417|+			
| 418| 418| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 419| 419| 			{
| 420| 420| 				// For buildings, take the average elevation around it. So angle = 2*pi
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 416| 416| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 417| 417| 			}
| 418| 418| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 419|    |-			{
|    | 419|+			
| 420| 420| 				// For buildings, take the average elevation around it. So angle = 2*pi
| 421| 421| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 422|    |-			}
|    | 422|+			
| 423| 423| 			else
| 424| 424| 			{
| 425| 425| 				// not in world, set a default?
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 421| 421| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 422| 422| 			}
| 423| 423| 			else
| 424|    |-			{
|    | 424|+			
| 425| 425| 				// not in world, set a default?
| 426| 426| 				ret.attack[type].elevationAdaptedRange = ret.attack.maxRange;
| 427|    |-			}
|    | 427|+			
| 428| 428| 		}
| 429| 429| 	}
| 430| 430| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 792| 792| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 793| 793| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 794| 794| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 795|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 795|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 796| 796| 	}
| 797| 797| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 798| 798| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1311|1311| 		}
|1312|1312| 	}
|1313|1313| 	else
|1314|    |-	{
|    |1314|+	
|1315|1315| 		// Didn't snap to an existing entity, add the starting tower manually. To prevent odd-looking rotation jumps
|1316|1316| 		// when shift-clicking to build a wall, reuse the placement angle that was last seen on a validly positioned
|1317|1317| 		// wall piece.
|1332|1332| 			"pos": start.pos,
|1333|1333| 			"angle": previewEntities.length > 0 ? previewEntities[0].angle : this.placementWallLastAngle
|1334|1334| 		});
|1335|    |-	}
|    |1335|+	
|1336|1336| 
|1337|1337| 	if (end.pos)
|1338|1338| 	{
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1335|1335| 	}
|1336|1336| 
|1337|1337| 	if (end.pos)
|1338|    |-	{
|    |1338|+	
|1339|1339| 		// Analogous to the starting side case above
|1340|1340| 		if (end.snappedEnt && end.snappedEnt != INVALID_ENTITY)
|1341|1341| 		{
|1373|1373| 				"pos": end.pos,
|1374|1374| 				"angle": previewEntities.length > 0 ? previewEntities[previewEntities.length-1].angle : this.placementWallLastAngle
|1375|1375| 			});
|1376|    |-	}
|    |1376|+	
|1377|1377| 
|1378|1378| 	let cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain);
|1379|1379| 	if (!cmpTerrain)
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1551|1551| 
|1552|1552| 		let cmpVisual = Engine.QueryInterface(ent, IID_Visual);
|1553|1553| 		if (cmpVisual)
|1554|    |-		{
|    |1554|+		
|1555|1555| 			if (!allPiecesValid || !canAfford)
|1556|1556| 				cmpVisual.SetShadingColor(1.4, 0.4, 0.4, 1);
|1557|1557| 			else
|1558|1558| 				cmpVisual.SetShadingColor(1, 1, 1, 1);
|1559|    |-		}
|    |1559|+		
|1560|1560| 
|1561|1561| 		++entPool.numUsed;
|1562|1562| 	}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1625|1625| 			{
|1626|1626| 				minDist2 = dist2;
|1627|1627| 				minDistEntitySnapData = {
|1628|    |-						"x": pos.x,
|    |1628|+					"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1626|1626| 				minDist2 = dist2;
|1627|1627| 				minDistEntitySnapData = {
|1628|1628| 						"x": pos.x,
|1629|    |-						"z": pos.z,
|    |1629|+					"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|1632|1632| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1627|1627| 				minDistEntitySnapData = {
|1628|1628| 						"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|    |-						"angle": cmpPosition.GetRotation().y,
|    |1630|+					"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|1632|1632| 				};
|1633|1633| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1628|1628| 						"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|    |-						"ent": ent
|    |1631|+					"ent": ent
|1632|1632| 				};
|1633|1633| 			}
|1634|1634| 		}
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1773|1773| 			result.gain = cmpEntityTrader.GetGoods().amount;
|1774|1774| 	}
|1775|1775| 	else if (data.target === secondMarket)
|1776|    |-	{
|    |1776|+	
|1777|1777| 		result = {
|1778|1778| 			"type": "is second",
|1779|1779| 			"gain": cmpEntityTrader.GetGoods().amount,
|1780|1780| 		};
|1781|    |-	}
|    |1781|+	
|1782|1782| 	else if (!firstMarket)
|1783|1783| 	{
|1784|1784| 		result = { "type": "set first" };
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1780|1780| 		};
|1781|1781| 	}
|1782|1782| 	else if (!firstMarket)
|1783|    |-	{
|    |1783|+	
|1784|1784| 		result = { "type": "set first" };
|1785|    |-	}
|    |1785|+	
|1786|1786| 	else if (!secondMarket)
|1787|1787| 	{
|1788|1788| 		result = {
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1784|1784| 		result = { "type": "set first" };
|1785|1785| 	}
|1786|1786| 	else if (!secondMarket)
|1787|    |-	{
|    |1787|+	
|1788|1788| 		result = {
|1789|1789| 			"type": "set second",
|1790|1790| 			"gain": cmpEntityTrader.CalculateGain(firstMarket, data.target),
|1791|1791| 		};
|1792|    |-	}
|    |1792|+	
|1793|1793| 	else
|1794|1794| 	{
|1795|1795| 		// Else both markets are not null and target is different from them
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1791|1791| 		};
|1792|1792| 	}
|1793|1793| 	else
|1794|    |-	{
|    |1794|+	
|1795|1795| 		// Else both markets are not null and target is different from them
|1796|1796| 		result = { "type": "set first" };
|1797|    |-	}
|    |1797|+	
|1798|1798| 	return result;
|1799|1799| };
|1800|1800|

Link to build: https://jenkins.wildfiregames.com/job/differential/709/display/redirect

Itms added a comment.Aug 5 2018, 7:06 PM

ERROR: JavaScript error: simulation/components/GuiInterface.js line 246
TypeError: cmpIdentity.CanUseSomeFormation is not a function
GuiInterface.prototype.GetEntityState@simulation/components/GuiInterface.js:246:23
@simulation/components/tests/test_GuiInterface.js:566:25

Angen updated this revision to Diff 7729.Apr 12 2019, 6:32 PM

rebase

Build failure - The Moirai have given mortals hearts that can endure.

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|  98|  98| 	this.canUseSomeFormation = this.GetFormationsList().length > 0;
|  99|  99| };
| 100| 100| 
| 101|    |-Identity.prototype.Deserialize = function ()
|    | 101|+Identity.prototype.Deserialize = function()
| 102| 102| {
| 103| 103| 	this.Init();
| 104| 104| };
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
| 108| 108| Identity.prototype.CanUseSomeFormation = function()
| 109| 109| {
| 110| 110| 	return this.canUseSomeFormation;
| 111|    |-}
|    | 111|+};
| 112| 112| 
| 113| 113| Identity.prototype.GetCiv = function()
| 114| 114| {

binaries/data/mods/public/simulation/components/Identity.js
| 111| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (no-trailing-spaces):
|    | Trailing spaces not allowed.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 293| 293| 
| 294| 294| 		if (unitEntStates.every(state => !state.identity.canUseSomeFormation))
| 295| 295| 			return [];
| 296|    |-				
|    | 296|+
| 297| 297| 		if (!g_AvailableFormations.has(unitEntStates[0].player))
| 298| 298| 			g_AvailableFormations.set(unitEntStates[0].player, Engine.GuiInterfaceCall("GetAvailableFormations", unitEntStates[0].player));
| 299| 299| 
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 449| 449| 				continue;
| 450| 450| 
| 451| 451| 			if (state.pack.progress == 0)
| 452|    |-			{
|    | 452|+			
| 453| 453| 				if (state.pack.packed)
| 454| 454| 					checks.unpackButton = true;
| 455| 455| 				else
| 456| 456| 					checks.packButton = true;
| 457|    |-			}
|    | 457|+			
| 458| 458| 			else if (state.pack.packed)
| 459| 459| 				checks.unpackCancelButton = true;
| 460| 460| 			else
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 760| 760| 				addResearchToQueue(data.item.researchFacilityId, t);
| 761| 761| 			})(tech);
| 762| 762| 
| 763|    |-			button.onPressRight = (t => function () {
|    | 763|+			button.onPressRight = (t => function() {
| 764| 764| 				showTemplateDetails(
| 765| 765| 					t,
| 766| 766| 					GetTemplateData(data.unitEntStates.find(state => state.id == data.item.researchFacilityId).template).nativeCiv);
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 938| 938| 			"player": data.player
| 939| 939| 		});
| 940| 940| 
| 941|    |-		let unitIds = data.unitEntStates.map(status => status.id)
|    | 941|+		let unitIds = data.unitEntStates.map(status => status.id);
| 942| 942| 		let [buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch] =
| 943| 943| 			getTrainingStatus(unitIds, data.item, data.playerState);
| 944| 944| 

binaries/data/mods/public/gui/session/selection_panels.js
|  48| »   »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
|  59| »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 728| »   »   »   »   »   »   switch·(entity.check)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 941| »   »   let·unitIds·=·data.unitEntStates.map(status·=>·status.id)
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 130| 130| 	this.formationMembersWithAura = []; // Members with a formation aura
| 131| 131| 	this.width = 0;
| 132| 132| 	this.depth = 0;
| 133|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 133|+	this.oldOrientation = { "sin": 0, "cos": 0};
| 134| 134| 	this.twinFormations = [];
| 135| 135| 	// distance from which two twin formations will merge into one.
| 136| 136| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 130| 130| 	this.formationMembersWithAura = []; // Members with a formation aura
| 131| 131| 	this.width = 0;
| 132| 132| 	this.depth = 0;
| 133|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 133|+	this.oldOrientation = {"sin": 0, "cos": 0 };
| 134| 134| 	this.twinFormations = [];
| 135| 135| 	// distance from which two twin formations will merge into one.
| 136| 136| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 148| 148| 
| 149| 149| Formation.prototype.GetSize = function()
| 150| 150| {
| 151|    |-	return {"width": this.width, "depth": this.depth};
|    | 151|+	return { "width": this.width, "depth": this.depth};
| 152| 152| };
| 153| 153| 
| 154| 154| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 148| 148| 
| 149| 149| Formation.prototype.GetSize = function()
| 150| 150| {
| 151|    |-	return {"width": this.width, "depth": this.depth};
|    | 151|+	return {"width": this.width, "depth": this.depth };
| 152| 152| };
| 153| 153| 
| 154| 154| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 566| 566| 			footprints.push(cmpFootprint.GetShape());
| 567| 567| 	}
| 568| 568| 	if (!footprints.length)
| 569|    |-		return {"width":1, "depth": 1};
|    | 569|+		return { "width":1, "depth": 1};
| 570| 570| 
| 571| 571| 	var r = {"width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'width'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 566| 566| 			footprints.push(cmpFootprint.GetShape());
| 567| 567| 	}
| 568| 568| 	if (!footprints.length)
| 569|    |-		return {"width":1, "depth": 1};
|    | 569|+		return {"width": 1, "depth": 1};
| 570| 570| 
| 571| 571| 	var r = {"width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 566| 566| 			footprints.push(cmpFootprint.GetShape());
| 567| 567| 	}
| 568| 568| 	if (!footprints.length)
| 569|    |-		return {"width":1, "depth": 1};
|    | 569|+		return {"width":1, "depth": 1 };
| 570| 570| 
| 571| 571| 	var r = {"width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 568| 568| 	if (!footprints.length)
| 569| 569| 		return {"width":1, "depth": 1};
| 570| 570| 
| 571|    |-	var r = {"width": 0, "depth": 0};
|    | 571|+	var r = { "width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
| 573| 573| 	{
| 574| 574| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 568| 568| 	if (!footprints.length)
| 569| 569| 		return {"width":1, "depth": 1};
| 570| 570| 
| 571|    |-	var r = {"width": 0, "depth": 0};
|    | 571|+	var r = {"width": 0, "depth": 0 };
| 572| 572| 	for (var shape of footprints)
| 573| 573| 	{
| 574| 574| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 570| 570| 
| 571| 571| 	var r = {"width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
| 573|    |-	{
|    | 573|+	
| 574| 574| 		if (shape.type == "circle")
| 575| 575| 		{
| 576| 576| 			r.width += shape.radius * 2;
| 581| 581| 			r.width += shape.width;
| 582| 582| 			r.depth += shape.depth;
| 583| 583| 		}
| 584|    |-	}
|    | 584|+	
| 585| 585| 	r.width /= footprints.length;
| 586| 586| 	r.depth /= footprints.length;
| 587| 587| 	return r;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 594| 594| 	separation.depth *= this.separationMultiplier.depth;
| 595| 595| 
| 596| 596| 	if (this.columnar)
| 597|    |-		var sortingClasses = ["Cavalry","Infantry"];
|    | 597|+		var sortingClasses = ["Cavalry", "Infantry"];
| 598| 598| 	else
| 599| 599| 		var sortingClasses = this.sortingClasses.slice();
| 600| 600| 	sortingClasses.push("Unknown");
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 611| 611| 		var classes = cmpIdentity.GetClassesList();
| 612| 612| 		var done = false;
| 613| 613| 		for (var c = 0; c < sortingClasses.length; ++c)
| 614|    |-		{
|    | 614|+		
| 615| 615| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 616| 616| 			{
| 617| 617| 				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
| 618| 618| 				done = true;
| 619| 619| 				break;
| 620| 620| 			}
| 621|    |-		}
|    | 621|+		
| 622| 622| 		if (!done)
| 623| 623| 			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
| 624| 624| 	}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 614| 614| 		{
| 615| 615| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 616| 616| 			{
| 617|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 617|+				types[sortingClasses[c]].push({ "ent": active[i], "pos": positions[i]});
| 618| 618| 				done = true;
| 619| 619| 				break;
| 620| 620| 			}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 614| 614| 		{
| 615| 615| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 616| 616| 			{
| 617|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 617|+				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i] });
| 618| 618| 				done = true;
| 619| 619| 				break;
| 620| 620| 			}
|    | [NORMAL] ESLintBear (dot-notation):
|    | ["Unknown"] is better written in dot notation.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 620| 620| 			}
| 621| 621| 		}
| 622| 622| 		if (!done)
| 623|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 623|+			types.Unknown.push({"ent": active[i], "pos": positions[i]});
| 624| 624| 	}
| 625| 625| 
| 626| 626| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 620| 620| 			}
| 621| 621| 		}
| 622| 622| 		if (!done)
| 623|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 623|+			types["Unknown"].push({ "ent": active[i], "pos": positions[i]});
| 624| 624| 	}
| 625| 625| 
| 626| 626| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 620| 620| 			}
| 621| 621| 		}
| 622| 622| 		if (!done)
| 623|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 623|+			types["Unknown"].push({"ent": active[i], "pos": positions[i] });
| 624| 624| 	}
| 625| 625| 
| 626| 626| 	var count = active.length;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 638| 638| 	if (this.columnar)
| 639| 639| 	{
| 640| 640| 		shape = "square";
| 641|    |-		cols = Math.min(count,3);
|    | 641|+		cols = Math.min(count, 3);
| 642| 642| 		shiftRows = false;
| 643| 643| 		centerGap = 0;
| 644| 644| 		sortingOrder = null;
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 692| 692| 					n -= r%2;
| 693| 693| 			}
| 694| 694| 			else if (shape == "triangle")
| 695|    |-			{
|    | 695|+			
| 696| 696| 				if (shiftRows)
| 697| 697| 					var n = r + 1;
| 698| 698| 				else
| 699| 699| 					var n = r * 2 + 1;
| 700|    |-			}
|    | 700|+			
| 701| 701| 			if (!shiftRows && n > left)
| 702| 702| 				n = left;
| 703| 703| 			for (var c = 0; c < n && left > 0; ++c)
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 733| 733| 	// calculating offset distances without a zero average makes no sense, as the formation
| 734| 734| 	// will jump to a different position any time
| 735| 735| 	var avgoffset = Vector2D.average(offsets);
| 736|    |-	offsets.forEach(function (o) {o.sub(avgoffset);});
|    | 736|+	offsets.forEach(function(o) {o.sub(avgoffset);});
| 737| 737| 
| 738| 738| 	// sort the available places in certain ways
| 739| 739| 	// the places first in the list will contain the heaviest units as defined by the order
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 792| 792| 			closestOffsetId = i;
| 793| 793| 		}
| 794| 794| 	}
| 795|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 795|+	this.memberPositions[entPos.ent] = { "row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
| 796| 796| 	return closestOffsetId;
| 797| 797| };
| 798| 798| 
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'column'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 792| 792| 			closestOffsetId = i;
| 793| 793| 		}
| 794| 794| 	}
| 795|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 795|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column": offsets[closestOffsetId].column};
| 796| 796| 	return closestOffsetId;
| 797| 797| };
| 798| 798| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 792| 792| 			closestOffsetId = i;
| 793| 793| 		}
| 794| 794| 	}
| 795|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 795|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column };
| 796| 796| 	return closestOffsetId;
| 797| 797| };
| 798| 798| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 802| 802| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 803| 803| {
| 804| 804| 	var offsetPositions = [];
| 805|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 805|+	var { sin, cos} = this.GetEstimatedOrientation(pos);
| 806| 806| 	// calculate the world positions
| 807| 807| 	for (var o of offsets)
| 808| 808| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 802| 802| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 803| 803| {
| 804| 804| 	var offsetPositions = [];
| 805|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 805|+	var {sin, cos } = this.GetEstimatedOrientation(pos);
| 806| 806| 	// calculate the world positions
| 807| 807| 	for (var o of offsets)
| 808| 808| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 819| 819| Formation.prototype.GetEstimatedOrientation = function(pos)
| 820| 820| {
| 821| 821| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 822|    |-	var r = {"sin": 0, "cos": 1};
|    | 822|+	var r = { "sin": 0, "cos": 1};
| 823| 823| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 824| 824| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 825| 825| 	{
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 819| 819| Formation.prototype.GetEstimatedOrientation = function(pos)
| 820| 820| {
| 821| 821| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 822|    |-	var r = {"sin": 0, "cos": 1};
|    | 822|+	var r = {"sin": 0, "cos": 1 };
| 823| 823| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 824| 824| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 825| 825| 	{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 901| 901| 		cmpOtherFormation.RemoveMembers(otherMembers);
| 902| 902| 		this.AddMembers(otherMembers);
| 903| 903| 		Engine.DestroyEntity(this.twinFormations[i]);
| 904|    |-		this.twinFormations.splice(i,1);
|    | 904|+		this.twinFormations.splice(i, 1);
| 905| 905| 	}
| 906| 906| 	// Switch between column and box if necessary
| 907| 907| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);

binaries/data/mods/public/simulation/components/Formation.js
| 425| »   for·(var·ent·of·this.formationMembersWithAura)
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 471| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 512| »   »   var·cmpUnitAI·=·Engine.QueryInterface(offset.ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 547| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 599| »   »   var·sortingClasses·=·this.sortingClasses.slice();
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 608| »   for·(var·i·in·active)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 623| »   »   »   types["Unknown"].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | ['Unknown'] is better written in dot notation.

binaries/data/mods/public/simulation/components/Formation.js
| 663| »   »   for·(var·i·=·0;·i·<·count;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 697| »   »   »   »   »   var·n·=·r·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 699| »   »   »   »   »   var·n·=·r·*·2·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'c' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 710| »   »   »   »   »   var·x·=·side·*·Math.ceil(c/2)·*·separation.width;
|    | [NORMAL] JSHintBear:
|    | 'x' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 713| »   »   »   »   »   if·(x·==·0)·//·don't·use·the·center·position·with·a·center·gap
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 715| »   »   »   »   »   x·+=·side·*·centerGap·/·2;
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 721| »   »   »   »   offsets.push(new·Vector2D(x·+·r1,·z·+·r2));
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 701| »   »   »   if·(!shiftRows·&&·n·>·left)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 702| »   »   »   »   n·=·left;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 707| »   »   »   »   if·(n%2·==·0)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 717| »   »   »   »   var·column·=·Math.ceil(n/2)·+·Math.ceil(c/2)·*·side;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 727| »   »   »   this.maxColumnsUsed[r]·=·n;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 756| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 600| »   sortingClasses.push("Unknown");
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 605| »   for·(var·i·=·0;·i·<·sortingClasses.length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 606| »   »   types[sortingClasses[i]]·=·[];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 613| »   »   for·(var·c·=·0;·c·<·sortingClasses.length;·++c)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 615| »   »   »   if·(classes.indexOf(sortingClasses[c])·>·-1)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 617| »   »   »   »   types[sortingClasses[c]].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 756| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 758| »   »   var·t·=·types[sortingClasses[i-1]];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 863| »   var·cmpUnitMotion·=·Engine.QueryInterface(this.entity,·IID_UnitMotion);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitMotion' is already defined.
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|  66|  66| 		let phase = "";
|  67|  67| 		let cmpTechnologyManager = QueryPlayerIDInterface(i, IID_TechnologyManager);
|  68|  68| 		if (cmpTechnologyManager)
|  69|    |-		{
|    |  69|+		
|  70|  70| 			if (cmpTechnologyManager.IsTechnologyResearched("phase_city"))
|  71|  71| 				phase = "city";
|  72|  72| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_town"))
|  73|  73| 				phase = "town";
|  74|  74| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_village"))
|  75|  75| 				phase = "village";
|  76|    |-		}
|    |  76|+		
|  77|  77| 
|  78|  78| 		// store player ally/neutral/enemy data as arrays
|  79|  79| 		let allies = [];
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 411| 411| 			ret.attack[type].elevationBonus = range.elevationBonus;
| 412| 412| 
| 413| 413| 			if (cmpUnitAI && cmpPosition && cmpPosition.IsInWorld())
| 414|    |-			{
|    | 414|+			
| 415| 415| 				// For units, take the range in front of it, no spread. So angle = 0
| 416| 416| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 417|    |-			}
|    | 417|+			
| 418| 418| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 419| 419| 			{
| 420| 420| 				// For buildings, take the average elevation around it. So angle = 2*pi
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 416| 416| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 417| 417| 			}
| 418| 418| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 419|    |-			{
|    | 419|+			
| 420| 420| 				// For buildings, take the average elevation around it. So angle = 2*pi
| 421| 421| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 422|    |-			}
|    | 422|+			
| 423| 423| 			else
| 424| 424| 			{
| 425| 425| 				// not in world, set a default?
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 421| 421| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 422| 422| 			}
| 423| 423| 			else
| 424|    |-			{
|    | 424|+			
| 425| 425| 				// not in world, set a default?
| 426| 426| 				ret.attack[type].elevationAdaptedRange = ret.attack.maxRange;
| 427|    |-			}
|    | 427|+			
| 428| 428| 		}
| 429| 429| 	}
| 430| 430| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 792| 792| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 793| 793| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 794| 794| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 795|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 795|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 796| 796| 	}
| 797| 797| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 798| 798| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1311|1311| 		}
|1312|1312| 	}
|1313|1313| 	else
|1314|    |-	{
|    |1314|+	
|1315|1315| 		// Didn't snap to an existing entity, add the starting tower manually. To prevent odd-looking rotation jumps
|1316|1316| 		// when shift-clicking to build a wall, reuse the placement angle that was last seen on a validly positioned
|1317|1317| 		// wall piece.
|1332|1332| 			"pos": start.pos,
|1333|1333| 			"angle": previewEntities.length > 0 ? previewEntities[0].angle : this.placementWallLastAngle
|1334|1334| 		});
|1335|    |-	}
|    |1335|+	
|1336|1336| 
|1337|1337| 	if (end.pos)
|1338|1338| 	{
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1335|1335| 	}
|1336|1336| 
|1337|1337| 	if (end.pos)
|1338|    |-	{
|    |1338|+	
|1339|1339| 		// Analogous to the starting side case above
|1340|1340| 		if (end.snappedEnt && end.snappedEnt != INVALID_ENTITY)
|1341|1341| 		{
|1373|1373| 				"pos": end.pos,
|1374|1374| 				"angle": previewEntities.length > 0 ? previewEntities[previewEntities.length-1].angle : this.placementWallLastAngle
|1375|1375| 			});
|1376|    |-	}
|    |1376|+	
|1377|1377| 
|1378|1378| 	let cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain);
|1379|1379| 	if (!cmpTerrain)
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1551|1551| 
|1552|1552| 		let cmpVisual = Engine.QueryInterface(ent, IID_Visual);
|1553|1553| 		if (cmpVisual)
|1554|    |-		{
|    |1554|+		
|1555|1555| 			if (!allPiecesValid || !canAfford)
|1556|1556| 				cmpVisual.SetShadingColor(1.4, 0.4, 0.4, 1);
|1557|1557| 			else
|1558|1558| 				cmpVisual.SetShadingColor(1, 1, 1, 1);
|1559|    |-		}
|    |1559|+		
|1560|1560| 
|1561|1561| 		++entPool.numUsed;
|1562|1562| 	}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1625|1625| 			{
|1626|1626| 				minDist2 = dist2;
|1627|1627| 				minDistEntitySnapData = {
|1628|    |-						"x": pos.x,
|    |1628|+					"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1626|1626| 				minDist2 = dist2;
|1627|1627| 				minDistEntitySnapData = {
|1628|1628| 						"x": pos.x,
|1629|    |-						"z": pos.z,
|    |1629|+					"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|1632|1632| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1627|1627| 				minDistEntitySnapData = {
|1628|1628| 						"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|    |-						"angle": cmpPosition.GetRotation().y,
|    |1630|+					"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|1632|1632| 				};
|1633|1633| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1628|1628| 						"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|    |-						"ent": ent
|    |1631|+					"ent": ent
|1632|1632| 				};
|1633|1633| 			}
|1634|1634| 		}
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1773|1773| 			result.gain = cmpEntityTrader.GetGoods().amount;
|1774|1774| 	}
|1775|1775| 	else if (data.target === secondMarket)
|1776|    |-	{
|    |1776|+	
|1777|1777| 		result = {
|1778|1778| 			"type": "is second",
|1779|1779| 			"gain": cmpEntityTrader.GetGoods().amount,
|1780|1780| 		};
|1781|    |-	}
|    |1781|+	
|1782|1782| 	else if (!firstMarket)
|1783|1783| 	{
|1784|1784| 		result = { "type": "set first" };
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1780|1780| 		};
|1781|1781| 	}
|1782|1782| 	else if (!firstMarket)
|1783|    |-	{
|    |1783|+	
|1784|1784| 		result = { "type": "set first" };
|1785|    |-	}
|    |1785|+	
|1786|1786| 	else if (!secondMarket)
|1787|1787| 	{
|1788|1788| 		result = {
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1784|1784| 		result = { "type": "set first" };
|1785|1785| 	}
|1786|1786| 	else if (!secondMarket)
|1787|    |-	{
|    |1787|+	
|1788|1788| 		result = {
|1789|1789| 			"type": "set second",
|1790|1790| 			"gain": cmpEntityTrader.CalculateGain(firstMarket, data.target),
|1791|1791| 		};
|1792|    |-	}
|    |1792|+	
|1793|1793| 	else
|1794|1794| 	{
|1795|1795| 		// Else both markets are not null and target is different from them
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1791|1791| 		};
|1792|1792| 	}
|1793|1793| 	else
|1794|    |-	{
|    |1794|+	
|1795|1795| 		// Else both markets are not null and target is different from them
|1796|1796| 		result = { "type": "set first" };
|1797|    |-	}
|    |1797|+	
|1798|1798| 	return result;
|1799|1799| };
|1800|1800| 
Executing section cli...

Link to build: https://jenkins.wildfiregames.com/job/differential/1199/display/redirect

Angen updated this revision to Diff 7730.Apr 12 2019, 6:52 PM

fix tests

Successful build - Chance fights ever on the side of the prudent.

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (no-trailing-spaces):
|    | Trailing spaces not allowed.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 293| 293| 
| 294| 294| 		if (unitEntStates.every(state => !state.identity.canUseSomeFormation))
| 295| 295| 			return [];
| 296|    |-				
|    | 296|+
| 297| 297| 		if (!g_AvailableFormations.has(unitEntStates[0].player))
| 298| 298| 			g_AvailableFormations.set(unitEntStates[0].player, Engine.GuiInterfaceCall("GetAvailableFormations", unitEntStates[0].player));
| 299| 299| 
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 449| 449| 				continue;
| 450| 450| 
| 451| 451| 			if (state.pack.progress == 0)
| 452|    |-			{
|    | 452|+			
| 453| 453| 				if (state.pack.packed)
| 454| 454| 					checks.unpackButton = true;
| 455| 455| 				else
| 456| 456| 					checks.packButton = true;
| 457|    |-			}
|    | 457|+			
| 458| 458| 			else if (state.pack.packed)
| 459| 459| 				checks.unpackCancelButton = true;
| 460| 460| 			else
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 760| 760| 				addResearchToQueue(data.item.researchFacilityId, t);
| 761| 761| 			})(tech);
| 762| 762| 
| 763|    |-			button.onPressRight = (t => function () {
|    | 763|+			button.onPressRight = (t => function() {
| 764| 764| 				showTemplateDetails(
| 765| 765| 					t,
| 766| 766| 					GetTemplateData(data.unitEntStates.find(state => state.id == data.item.researchFacilityId).template).nativeCiv);
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 938| 938| 			"player": data.player
| 939| 939| 		});
| 940| 940| 
| 941|    |-		let unitIds = data.unitEntStates.map(status => status.id)
|    | 941|+		let unitIds = data.unitEntStates.map(status => status.id);
| 942| 942| 		let [buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch] =
| 943| 943| 			getTrainingStatus(unitIds, data.item, data.playerState);
| 944| 944| 

binaries/data/mods/public/gui/session/selection_panels.js
|  48| »   »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
|  59| »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 728| »   »   »   »   »   »   switch·(entity.check)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 941| »   »   let·unitIds·=·data.unitEntStates.map(status·=>·status.id)
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|  98|  98| 	this.canUseSomeFormation = this.GetFormationsList().length > 0;
|  99|  99| };
| 100| 100| 
| 101|    |-Identity.prototype.Deserialize = function ()
|    | 101|+Identity.prototype.Deserialize = function()
| 102| 102| {
| 103| 103| 	this.Init();
| 104| 104| };
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
| 108| 108| Identity.prototype.CanUseSomeFormation = function()
| 109| 109| {
| 110| 110| 	return this.canUseSomeFormation;
| 111|    |-}
|    | 111|+};
| 112| 112| 
| 113| 113| Identity.prototype.GetCiv = function()
| 114| 114| {

binaries/data/mods/public/simulation/components/Identity.js
| 111| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 3.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  47|  47| 	"GetResource": resource => ({
|  48|  48| 		"aiAnalysisInfluenceGroup":
|  49|  49| 			resource == "food" ? "ignore" :
|  50|    |-			resource == "wood" ? "abundant" : "sparse"
|    |  50|+				resource == "wood" ? "abundant" : "sparse"
|  51|  51| 	})
|  52|  52| };
|  53|  53| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPrices' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  55|  55| 
|  56|  56| 
|  57|  57| AddMock(SYSTEM_ENTITY, IID_Barter, {
|  58|    |-	GetPrices: function() {
|    |  58|+	"GetPrices": function() {
|  59|  59| 		return {
|  60|  60| 			"buy": { "food": 150 },
|  61|  61| 			"sell": { "food": 25 }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'PlayerHasMarket' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  61|  61| 			"sell": { "food": 25 }
|  62|  62| 		};
|  63|  63| 	},
|  64|    |-	PlayerHasMarket: function () { return false; }
|    |  64|+	"PlayerHasMarket": function () { return false; }
|  65|  65| });
|  66|  66| 
|  67|  67| AddMock(SYSTEM_ENTITY, IID_EndGameManager, {
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  61|  61| 			"sell": { "food": 25 }
|  62|  62| 		};
|  63|  63| 	},
|  64|    |-	PlayerHasMarket: function () { return false; }
|    |  64|+	PlayerHasMarket: function() { return false; }
|  65|  65| });
|  66|  66| 
|  67|  67| AddMock(SYSTEM_ENTITY, IID_EndGameManager, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetVictoryConditions' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  65|  65| });
|  66|  66| 
|  67|  67| AddMock(SYSTEM_ENTITY, IID_EndGameManager, {
|  68|    |-	GetVictoryConditions: () => ["conquest", "wonder"],
|    |  68|+	"GetVictoryConditions": () => ["conquest", "wonder"],
|  69|  69| 	GetAlliedVictory: function() { return false; }
|  70|  70| });
|  71|  71| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetAlliedVictory' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  66|  66| 
|  67|  67| AddMock(SYSTEM_ENTITY, IID_EndGameManager, {
|  68|  68| 	GetVictoryConditions: () => ["conquest", "wonder"],
|  69|    |-	GetAlliedVictory: function() { return false; }
|    |  69|+	"GetAlliedVictory": function() { return false; }
|  70|  70| });
|  71|  71| 
|  72|  72| AddMock(SYSTEM_ENTITY, IID_PlayerManager, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetNumPlayers' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  70|  70| });
|  71|  71| 
|  72|  72| AddMock(SYSTEM_ENTITY, IID_PlayerManager, {
|  73|    |-	GetNumPlayers: function() { return 2; },
|    |  73|+	"GetNumPlayers": function() { return 2; },
|  74|  74| 	GetPlayerByID: function(id) { TS_ASSERT(id === 0 || id === 1); return 100+id; }
|  75|  75| });
|  76|  76| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPlayerByID' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  71|  71| 
|  72|  72| AddMock(SYSTEM_ENTITY, IID_PlayerManager, {
|  73|  73| 	GetNumPlayers: function() { return 2; },
|  74|    |-	GetPlayerByID: function(id) { TS_ASSERT(id === 0 || id === 1); return 100+id; }
|    |  74|+	"GetPlayerByID": function(id) { TS_ASSERT(id === 0 || id === 1); return 100+id; }
|  75|  75| });
|  76|  76| 
|  77|  77| AddMock(SYSTEM_ENTITY, IID_RangeManager, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLosVisibility' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  75|  75| });
|  76|  76| 
|  77|  77| AddMock(SYSTEM_ENTITY, IID_RangeManager, {
|  78|    |-	GetLosVisibility: function(ent, player) { return "visible"; },
|    |  78|+	"GetLosVisibility": function(ent, player) { return "visible"; },
|  79|  79| 	GetLosCircular: function() { return false; }
|  80|  80| });
|  81|  81| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLosCircular' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  76|  76| 
|  77|  77| AddMock(SYSTEM_ENTITY, IID_RangeManager, {
|  78|  78| 	GetLosVisibility: function(ent, player) { return "visible"; },
|  79|    |-	GetLosCircular: function() { return false; }
|    |  79|+	"GetLosCircular": function() { return false; }
|  80|  80| });
|  81|  81| 
|  82|  82| AddMock(SYSTEM_ENTITY, IID_TemplateManager, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCurrentTemplateName' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  80|  80| });
|  81|  81| 
|  82|  82| AddMock(SYSTEM_ENTITY, IID_TemplateManager, {
|  83|    |-	GetCurrentTemplateName: function(ent) { return "example"; },
|    |  83|+	"GetCurrentTemplateName": function(ent) { return "example"; },
|  84|  84| 	GetTemplate: function(name) { return ""; }
|  85|  85| });
|  86|  86| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetTemplate' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  81|  81| 
|  82|  82| AddMock(SYSTEM_ENTITY, IID_TemplateManager, {
|  83|  83| 	GetCurrentTemplateName: function(ent) { return "example"; },
|  84|    |-	GetTemplate: function(name) { return ""; }
|    |  84|+	"GetTemplate": function(name) { return ""; }
|  85|  85| });
|  86|  86| 
|  87|  87| AddMock(SYSTEM_ENTITY, IID_Timer, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetTime' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  85|  85| });
|  86|  86| 
|  87|  87| AddMock(SYSTEM_ENTITY, IID_Timer, {
|  88|    |-	GetTime: function() { return 0; },
|    |  88|+	"GetTime": function() { return 0; },
|  89|  89| 	SetTimeout: function(ent, iid, funcname, time, data) { return 0; }
|  90|  90| });
|  91|  91| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'SetTimeout' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  86|  86| 
|  87|  87| AddMock(SYSTEM_ENTITY, IID_Timer, {
|  88|  88| 	GetTime: function() { return 0; },
|  89|    |-	SetTimeout: function(ent, iid, funcname, time, data) { return 0; }
|    |  89|+	"SetTimeout": function(ent, iid, funcname, time, data) { return 0; }
|  90|  90| });
|  91|  91| 
|  92|  92| AddMock(100, IID_Player, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetName' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  90|  90| });
|  91|  91| 
|  92|  92| AddMock(100, IID_Player, {
|  93|    |-	GetName: function() { return "Player 1"; },
|    |  93|+	"GetName": function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|  95| 	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCiv' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  91|  91| 
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|    |-	GetCiv: function() { return "gaia"; },
|    |  94|+	"GetCiv": function() { return "gaia"; },
|  95|  95| 	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetColor' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|    |-	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|    |  95|+	"GetColor": function() { return { r: 1, g: 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'r' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|    |-	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|    |  95|+	GetColor: function() { return { "r": 1, g: 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'g' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|    |-	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|    |  95|+	GetColor: function() { return { r: 1, "g": 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'b' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|    |-	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|    |  95|+	GetColor: function() { return { r: 1, g: 1, "b": 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'a' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|    |-	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|    |  95|+	GetColor: function() { return { r: 1, g: 1, b: 1, "a": 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|    |-	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|    |  95|+	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1 }; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'CanControlAllUnits' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|  95| 	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|  96|    |-	CanControlAllUnits: function() { return false; },
|    |  96|+	"CanControlAllUnits": function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|  99|  99| 	GetMaxPopulation: function() { return 200; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPopulationCount' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|  95| 	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|    |-	GetPopulationCount: function() { return 10; },
|    |  97|+	"GetPopulationCount": function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|  99|  99| 	GetMaxPopulation: function() { return 200; },
| 100| 100| 	GetResourceCounts: function() { return { food: 100 }; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPopulationLimit' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  95|  95| 	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|    |-	GetPopulationLimit: function() { return 20; },
|    |  98|+	"GetPopulationLimit": function() { return 20; },
|  99|  99| 	GetMaxPopulation: function() { return 200; },
| 100| 100| 	GetResourceCounts: function() { return { food: 100 }; },
| 101| 101| 	GetPanelEntities: function() { return []; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetMaxPopulation' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|  99|    |-	GetMaxPopulation: function() { return 200; },
|    |  99|+	"GetMaxPopulation": function() { return 200; },
| 100| 100| 	GetResourceCounts: function() { return { food: 100 }; },
| 101| 101| 	GetPanelEntities: function() { return []; },
| 102| 102| 	IsTrainingBlocked: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetResourceCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|  99|  99| 	GetMaxPopulation: function() { return 200; },
| 100|    |-	GetResourceCounts: function() { return { food: 100 }; },
|    | 100|+	"GetResourceCounts": function() { return { food: 100 }; },
| 101| 101| 	GetPanelEntities: function() { return []; },
| 102| 102| 	IsTrainingBlocked: function() { return false; },
| 103| 103| 	GetState: function() { return "active"; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'food' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|  99|  99| 	GetMaxPopulation: function() { return 200; },
| 100|    |-	GetResourceCounts: function() { return { food: 100 }; },
|    | 100|+	GetResourceCounts: function() { return { "food": 100 }; },
| 101| 101| 	GetPanelEntities: function() { return []; },
| 102| 102| 	IsTrainingBlocked: function() { return false; },
| 103| 103| 	GetState: function() { return "active"; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPanelEntities' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|  99|  99| 	GetMaxPopulation: function() { return 200; },
| 100| 100| 	GetResourceCounts: function() { return { food: 100 }; },
| 101|    |-	GetPanelEntities: function() { return []; },
|    | 101|+	"GetPanelEntities": function() { return []; },
| 102| 102| 	IsTrainingBlocked: function() { return false; },
| 103| 103| 	GetState: function() { return "active"; },
| 104| 104| 	GetTeam: function() { return -1; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsTrainingBlocked' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  99|  99| 	GetMaxPopulation: function() { return 200; },
| 100| 100| 	GetResourceCounts: function() { return { food: 100 }; },
| 101| 101| 	GetPanelEntities: function() { return []; },
| 102|    |-	IsTrainingBlocked: function() { return false; },
|    | 102|+	"IsTrainingBlocked": function() { return false; },
| 103| 103| 	GetState: function() { return "active"; },
| 104| 104| 	GetTeam: function() { return -1; },
| 105| 105| 	GetLockTeams: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetState' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 100| 100| 	GetResourceCounts: function() { return { food: 100 }; },
| 101| 101| 	GetPanelEntities: function() { return []; },
| 102| 102| 	IsTrainingBlocked: function() { return false; },
| 103|    |-	GetState: function() { return "active"; },
|    | 103|+	"GetState": function() { return "active"; },
| 104| 104| 	GetTeam: function() { return -1; },
| 105| 105| 	GetLockTeams: function() { return false; },
| 106| 106| 	GetCheatsEnabled: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetTeam' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 101| 101| 	GetPanelEntities: function() { return []; },
| 102| 102| 	IsTrainingBlocked: function() { return false; },
| 103| 103| 	GetState: function() { return "active"; },
| 104|    |-	GetTeam: function() { return -1; },
|    | 104|+	"GetTeam": function() { return -1; },
| 105| 105| 	GetLockTeams: function() { return false; },
| 106| 106| 	GetCheatsEnabled: function() { return false; },
| 107| 107| 	GetDiplomacy: function() { return [-1, 1]; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLockTeams' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 102| 102| 	IsTrainingBlocked: function() { return false; },
| 103| 103| 	GetState: function() { return "active"; },
| 104| 104| 	GetTeam: function() { return -1; },
| 105|    |-	GetLockTeams: function() { return false; },
|    | 105|+	"GetLockTeams": function() { return false; },
| 106| 106| 	GetCheatsEnabled: function() { return false; },
| 107| 107| 	GetDiplomacy: function() { return [-1, 1]; },
| 108| 108| 	IsAlly: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCheatsEnabled' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 103| 103| 	GetState: function() { return "active"; },
| 104| 104| 	GetTeam: function() { return -1; },
| 105| 105| 	GetLockTeams: function() { return false; },
| 106|    |-	GetCheatsEnabled: function() { return false; },
|    | 106|+	"GetCheatsEnabled": function() { return false; },
| 107| 107| 	GetDiplomacy: function() { return [-1, 1]; },
| 108| 108| 	IsAlly: function() { return false; },
| 109| 109| 	IsMutualAlly: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetDiplomacy' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 104| 104| 	GetTeam: function() { return -1; },
| 105| 105| 	GetLockTeams: function() { return false; },
| 106| 106| 	GetCheatsEnabled: function() { return false; },
| 107|    |-	GetDiplomacy: function() { return [-1, 1]; },
|    | 107|+	"GetDiplomacy": function() { return [-1, 1]; },
| 108| 108| 	IsAlly: function() { return false; },
| 109| 109| 	IsMutualAlly: function() { return false; },
| 110| 110| 	IsNeutral: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 105| 105| 	GetLockTeams: function() { return false; },
| 106| 106| 	GetCheatsEnabled: function() { return false; },
| 107| 107| 	GetDiplomacy: function() { return [-1, 1]; },
| 108|    |-	IsAlly: function() { return false; },
|    | 108|+	"IsAlly": function() { return false; },
| 109| 109| 	IsMutualAlly: function() { return false; },
| 110| 110| 	IsNeutral: function() { return false; },
| 111| 111| 	IsEnemy: function() { return true; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsMutualAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 106| 106| 	GetCheatsEnabled: function() { return false; },
| 107| 107| 	GetDiplomacy: function() { return [-1, 1]; },
| 108| 108| 	IsAlly: function() { return false; },
| 109|    |-	IsMutualAlly: function() { return false; },
|    | 109|+	"IsMutualAlly": function() { return false; },
| 110| 110| 	IsNeutral: function() { return false; },
| 111| 111| 	IsEnemy: function() { return true; },
| 112| 112| 	GetDisabledTemplates: function() { return {}; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsNeutral' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 107| 107| 	GetDiplomacy: function() { return [-1, 1]; },
| 108| 108| 	IsAlly: function() { return false; },
| 109| 109| 	IsMutualAlly: function() { return false; },
| 110|    |-	IsNeutral: function() { return false; },
|    | 110|+	"IsNeutral": function() { return false; },
| 111| 111| 	IsEnemy: function() { return true; },
| 112| 112| 	GetDisabledTemplates: function() { return {}; },
| 113| 113| 	GetDisabledTechnologies: function() { return {}; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsEnemy' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 108| 108| 	IsAlly: function() { return false; },
| 109| 109| 	IsMutualAlly: function() { return false; },
| 110| 110| 	IsNeutral: function() { return false; },
| 111|    |-	IsEnemy: function() { return true; },
|    | 111|+	"IsEnemy": function() { return true; },
| 112| 112| 	GetDisabledTemplates: function() { return {}; },
| 113| 113| 	GetDisabledTechnologies: function() { return {}; },
| 114| 114| 	GetSpyCostMultiplier: function() { return 1; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetDisabledTemplates' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 109| 109| 	IsMutualAlly: function() { return false; },
| 110| 110| 	IsNeutral: function() { return false; },
| 111| 111| 	IsEnemy: function() { return true; },
| 112|    |-	GetDisabledTemplates: function() { return {}; },
|    | 112|+	"GetDisabledTemplates": function() { return {}; },
| 113| 113| 	GetDisabledTechnologies: function() { return {}; },
| 114| 114| 	GetSpyCostMultiplier: function() { return 1; },
| 115| 115| 	HasSharedDropsites: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetDisabledTechnologies' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 110| 110| 	IsNeutral: function() { return false; },
| 111| 111| 	IsEnemy: function() { return true; },
| 112| 112| 	GetDisabledTemplates: function() { return {}; },
| 113|    |-	GetDisabledTechnologies: function() { return {}; },
|    | 113|+	"GetDisabledTechnologies": function() { return {}; },
| 114| 114| 	GetSpyCostMultiplier: function() { return 1; },
| 115| 115| 	HasSharedDropsites: function() { return false; },
| 116| 116| 	HasSharedLos: function() { return false; }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetSpyCostMultiplier' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 111| 111| 	IsEnemy: function() { return true; },
| 112| 112| 	GetDisabledTemplates: function() { return {}; },
| 113| 113| 	GetDisabledTechnologies: function() { return {}; },
| 114|    |-	GetSpyCostMultiplier: function() { return 1; },
|    | 114|+	"GetSpyCostMultiplier": function() { return 1; },
| 115| 115| 	HasSharedDropsites: function() { return false; },
| 116| 116| 	HasSharedLos: function() { return false; }
| 117| 117| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'HasSharedDropsites' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 112| 112| 	GetDisabledTemplates: function() { return {}; },
| 113| 113| 	GetDisabledTechnologies: function() { return {}; },
| 114| 114| 	GetSpyCostMultiplier: function() { return 1; },
| 115|    |-	HasSharedDropsites: function() { return false; },
|    | 115|+	"HasSharedDropsites": function() { return false; },
| 116| 116| 	HasSharedLos: function() { return false; }
| 117| 117| });
| 118| 118| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'HasSharedLos' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 113| 113| 	GetDisabledTechnologies: function() { return {}; },
| 114| 114| 	GetSpyCostMultiplier: function() { return 1; },
| 115| 115| 	HasSharedDropsites: function() { return false; },
| 116|    |-	HasSharedLos: function() { return false; }
|    | 116|+	"HasSharedLos": function() { return false; }
| 117| 117| });
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLimits' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 117| 117| });
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120|    |-	GetLimits: function() { return {"Foo": 10}; },
|    | 120|+	"GetLimits": function() { return {"Foo": 10}; },
| 121| 121| 	GetCounts: function() { return {"Foo": 5}; },
| 122| 122| 	GetLimitChangers: function() {return {"Foo": {}}; }
| 123| 123| });
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 117| 117| });
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120|    |-	GetLimits: function() { return {"Foo": 10}; },
|    | 120|+	GetLimits: function() { return { "Foo": 10}; },
| 121| 121| 	GetCounts: function() { return {"Foo": 5}; },
| 122| 122| 	GetLimitChangers: function() {return {"Foo": {}}; }
| 123| 123| });
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 117| 117| });
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120|    |-	GetLimits: function() { return {"Foo": 10}; },
|    | 120|+	GetLimits: function() { return {"Foo": 10 }; },
| 121| 121| 	GetCounts: function() { return {"Foo": 5}; },
| 122| 122| 	GetLimitChangers: function() {return {"Foo": {}}; }
| 123| 123| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120| 120| 	GetLimits: function() { return {"Foo": 10}; },
| 121|    |-	GetCounts: function() { return {"Foo": 5}; },
|    | 121|+	"GetCounts": function() { return {"Foo": 5}; },
| 122| 122| 	GetLimitChangers: function() {return {"Foo": {}}; }
| 123| 123| });
| 124| 124| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120| 120| 	GetLimits: function() { return {"Foo": 10}; },
| 121|    |-	GetCounts: function() { return {"Foo": 5}; },
|    | 121|+	GetCounts: function() { return { "Foo": 5}; },
| 122| 122| 	GetLimitChangers: function() {return {"Foo": {}}; }
| 123| 123| });
| 124| 124| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120| 120| 	GetLimits: function() { return {"Foo": 10}; },
| 121|    |-	GetCounts: function() { return {"Foo": 5}; },
|    | 121|+	GetCounts: function() { return {"Foo": 5 }; },
| 122| 122| 	GetLimitChangers: function() {return {"Foo": {}}; }
| 123| 123| });
| 124| 124| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLimitChangers' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120| 120| 	GetLimits: function() { return {"Foo": 10}; },
| 121| 121| 	GetCounts: function() { return {"Foo": 5}; },
| 122|    |-	GetLimitChangers: function() {return {"Foo": {}}; }
|    | 122|+	"GetLimitChangers": function() {return {"Foo": {}}; }
| 123| 123| });
| 124| 124| 
| 125| 125| AddMock(100, IID_TechnologyManager, {
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120| 120| 	GetLimits: function() { return {"Foo": 10}; },
| 121| 121| 	GetCounts: function() { return {"Foo": 5}; },
| 122|    |-	GetLimitChangers: function() {return {"Foo": {}}; }
|    | 122|+	GetLimitChangers: function() {return { "Foo": {}}; }
| 123| 123| });
| 124| 124| 
| 125| 125| AddMock(100, IID_TechnologyManager, {
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120| 120| 	GetLimits: function() { return {"Foo": 10}; },
| 121| 121| 	GetCounts: function() { return {"Foo": 5}; },
| 122|    |-	GetLimitChangers: function() {return {"Foo": {}}; }
|    | 122|+	GetLimitChangers: function() {return {"Foo": {} }; }
| 123| 123| });
| 124| 124| 
| 125| 125| AddMock(100, IID_TechnologyManager, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetBasicStatistics' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 132| 132| });
| 133| 133| 
| 134| 134| AddMock(100, IID_StatisticsTracker, {
| 135|    |-	GetBasicStatistics: function() {
|    | 135|+	"GetBasicStatistics": function() {
| 136| 136| 		return {
| 137| 137| 			"resourcesGathered": {
| 138| 138| 				"food": 100,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetSequences' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 144| 144| 			"percentMapExplored": 10
| 145| 145| 		};
| 146| 146| 	},
| 147|    |-	GetSequences: function() {
|    | 147|+	"GetSequences": function() {
| 148| 148| 		return {
| 149| 149| 			"unitsTrained": [0, 10],
| 150| 150| 			"unitsLost": [0, 42],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IncreaseTrainedUnitsCounter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 169| 169| 			"teamPeakPercentOfMapControlled": [0, 10]
| 170| 170| 		};
| 171| 171| 	},
| 172|    |-	IncreaseTrainedUnitsCounter: function() { return 1; },
|    | 172|+	"IncreaseTrainedUnitsCounter": function() { return 1; },
| 173| 173| 	IncreaseConstructedBuildingsCounter: function() { return 1; },
| 174| 174| 	IncreaseBuiltCivCentresCounter: function() { return 1; }
| 175| 175| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IncreaseConstructedBuildingsCounter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 170| 170| 		};
| 171| 171| 	},
| 172| 172| 	IncreaseTrainedUnitsCounter: function() { return 1; },
| 173|    |-	IncreaseConstructedBuildingsCounter: function() { return 1; },
|    | 173|+	"IncreaseConstructedBuildingsCounter": function() { return 1; },
| 174| 174| 	IncreaseBuiltCivCentresCounter: function() { return 1; }
| 175| 175| });
| 176| 176| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IncreaseBuiltCivCentresCounter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 171| 171| 	},
| 172| 172| 	IncreaseTrainedUnitsCounter: function() { return 1; },
| 173| 173| 	IncreaseConstructedBuildingsCounter: function() { return 1; },
| 174|    |-	IncreaseBuiltCivCentresCounter: function() { return 1; }
|    | 174|+	"IncreaseBuiltCivCentresCounter": function() { return 1; }
| 175| 175| });
| 176| 176| 
| 177| 177| AddMock(101, IID_Player, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetName' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 175| 175| });
| 176| 176| 
| 177| 177| AddMock(101, IID_Player, {
| 178|    |-	GetName: function() { return "Player 2"; },
|    | 178|+	"GetName": function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180| 180| 	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCiv' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 176| 176| 
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179|    |-	GetCiv: function() { return "mace"; },
|    | 179|+	"GetCiv": function() { return "mace"; },
| 180| 180| 	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetColor' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180|    |-	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
|    | 180|+	"GetColor": function() { return { r: 1, g: 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'r' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180|    |-	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
|    | 180|+	GetColor: function() { return { "r": 1, g: 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'g' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180|    |-	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
|    | 180|+	GetColor: function() { return { r: 1, "g": 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'b' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180|    |-	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
|    | 180|+	GetColor: function() { return { r: 1, g: 0, "b": 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'a' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180|    |-	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
|    | 180|+	GetColor: function() { return { r: 1, g: 0, b: 0, "a": 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180|    |-	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
|    | 180|+	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1 }; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'CanControlAllUnits' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180| 180| 	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
| 181|    |-	CanControlAllUnits: function() { return true; },
|    | 181|+	"CanControlAllUnits": function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
| 184| 184| 	GetMaxPopulation: function() { return 300; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPopulationCount' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180| 180| 	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182|    |-	GetPopulationCount: function() { return 40; },
|    | 182|+	"GetPopulationCount": function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
| 184| 184| 	GetMaxPopulation: function() { return 300; },
| 185| 185| 	GetResourceCounts: function() { return { food: 200 }; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPopulationLimit' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 180| 180| 	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183|    |-	GetPopulationLimit: function() { return 30; },
|    | 183|+	"GetPopulationLimit": function() { return 30; },
| 184| 184| 	GetMaxPopulation: function() { return 300; },
| 185| 185| 	GetResourceCounts: function() { return { food: 200 }; },
| 186| 186| 	GetPanelEntities: function() { return []; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetMaxPopulation' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
| 184|    |-	GetMaxPopulation: function() { return 300; },
|    | 184|+	"GetMaxPopulation": function() { return 300; },
| 185| 185| 	GetResourceCounts: function() { return { food: 200 }; },
| 186| 186| 	GetPanelEntities: function() { return []; },
| 187| 187| 	IsTrainingBlocked: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetResourceCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
| 184| 184| 	GetMaxPopulation: function() { return 300; },
| 185|    |-	GetResourceCounts: function() { return { food: 200 }; },
|    | 185|+	"GetResourceCounts": function() { return { food: 200 }; },
| 186| 186| 	GetPanelEntities: function() { return []; },
| 187| 187| 	IsTrainingBlocked: function() { return false; },
| 188| 188| 	GetState: function() { return "active"; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'food' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
| 184| 184| 	GetMaxPopulation: function() { return 300; },
| 185|    |-	GetResourceCounts: function() { return { food: 200 }; },
|    | 185|+	GetResourceCounts: function() { return { "food": 200 }; },
| 186| 186| 	GetPanelEntities: function() { return []; },
| 187| 187| 	IsTrainingBlocked: function() { return false; },
| 188| 188| 	GetState: function() { return "active"; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPanelEntities' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 183| 183| 	GetPopulationLimit: function() { return 30; },
| 184| 184| 	GetMaxPopulation: function() { return 300; },
| 185| 185| 	GetResourceCounts: function() { return { food: 200 }; },
| 186|    |-	GetPanelEntities: function() { return []; },
|    | 186|+	"GetPanelEntities": function() { return []; },
| 187| 187| 	IsTrainingBlocked: function() { return false; },
| 188| 188| 	GetState: function() { return "active"; },
| 189| 189| 	GetTeam: function() { return -1; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsTrainingBlocked' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 184| 184| 	GetMaxPopulation: function() { return 300; },
| 185| 185| 	GetResourceCounts: function() { return { food: 200 }; },
| 186| 186| 	GetPanelEntities: function() { return []; },
| 187|    |-	IsTrainingBlocked: function() { return false; },
|    | 187|+	"IsTrainingBlocked": function() { return false; },
| 188| 188| 	GetState: function() { return "active"; },
| 189| 189| 	GetTeam: function() { return -1; },
| 190| 190| 	GetLockTeams: function() {return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetState' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 185| 185| 	GetResourceCounts: function() { return { food: 200 }; },
| 186| 186| 	GetPanelEntities: function() { return []; },
| 187| 187| 	IsTrainingBlocked: function() { return false; },
| 188|    |-	GetState: function() { return "active"; },
|    | 188|+	"GetState": function() { return "active"; },
| 189| 189| 	GetTeam: function() { return -1; },
| 190| 190| 	GetLockTeams: function() {return false; },
| 191| 191| 	GetCheatsEnabled: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetTeam' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 186| 186| 	GetPanelEntities: function() { return []; },
| 187| 187| 	IsTrainingBlocked: function() { return false; },
| 188| 188| 	GetState: function() { return "active"; },
| 189|    |-	GetTeam: function() { return -1; },
|    | 189|+	"GetTeam": function() { return -1; },
| 190| 190| 	GetLockTeams: function() {return false; },
| 191| 191| 	GetCheatsEnabled: function() { return false; },
| 192| 192| 	GetDiplomacy: function() { return [-1, 1]; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLockTeams' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 187| 187| 	IsTrainingBlocked: function() { return false; },
| 188| 188| 	GetState: function() { return "active"; },
| 189| 189| 	GetTeam: function() { return -1; },
| 190|    |-	GetLockTeams: function() {return false; },
|    | 190|+	"GetLockTeams": function() {return false; },
| 191| 191| 	GetCheatsEnabled: function() { return false; },
| 192| 192| 	GetDiplomacy: function() { return [-1, 1]; },
| 193| 193| 	IsAlly: function() { return true; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCheatsEnabled' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 188| 188| 	GetState: function() { return "active"; },
| 189| 189| 	GetTeam: function() { return -1; },
| 190| 190| 	GetLockTeams: function() {return false; },
| 191|    |-	GetCheatsEnabled: function() { return false; },
|    | 191|+	"GetCheatsEnabled": function() { return false; },
| 192| 192| 	GetDiplomacy: function() { return [-1, 1]; },
| 193| 193| 	IsAlly: function() { return true; },
| 194| 194| 	IsMutualAlly: function() {return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetDiplomacy' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 189| 189| 	GetTeam: function() { return -1; },
| 190| 190| 	GetLockTeams: function() {return false; },
| 191| 191| 	GetCheatsEnabled: function() { return false; },
| 192|    |-	GetDiplomacy: function() { return [-1, 1]; },
|    | 192|+	"GetDiplomacy": function() { return [-1, 1]; },
| 193| 193| 	IsAlly: function() { return true; },
| 194| 194| 	IsMutualAlly: function() {return false; },
| 195| 195| 	IsNeutral: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 190| 190| 	GetLockTeams: function() {return false; },
| 191| 191| 	GetCheatsEnabled: function() { return false; },
| 192| 192| 	GetDiplomacy: function() { return [-1, 1]; },
| 193|    |-	IsAlly: function() { return true; },
|    | 193|+	"IsAlly": function() { return true; },
| 194| 194| 	IsMutualAlly: function() {return false; },
| 195| 195| 	IsNeutral: function() { return false; },
| 196| 196| 	IsEnemy: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsMutualAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 191| 191| 	GetCheatsEnabled: function() { return false; },
| 192| 192| 	GetDiplomacy: function() { return [-1, 1]; },
| 193| 193| 	IsAlly: function() { return true; },
| 194|    |-	IsMutualAlly: function() {return false; },
|    | 194|+	"IsMutualAlly": function() {return false; },
| 195| 195| 	IsNeutral: function() { return false; },
| 196| 196| 	IsEnemy: function() { return false; },
| 197| 197| 	GetDisabledTemplates: function() { return {}; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsNeutral' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 192| 192| 	GetDiplomacy: function() { return [-1, 1]; },
| 193| 193| 	IsAlly: function() { return true; },
| 194| 194| 	IsMutualAlly: function() {return false; },
| 195|    |-	IsNeutral: function() { return false; },
|    | 195|+	"IsNeutral": function() { return false; },
| 196| 196| 	IsEnemy: function() { return false; },
| 197| 197| 	GetDisabledTemplates: function() { return {}; },
| 198| 198| 	GetDisabledTechnologies: function() { return {}; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsEnemy' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 193| 193| 	IsAlly: function() { return true; },
| 194| 194| 	IsMutualAlly: function() {return false; },
| 195| 195| 	IsNeutral: function() { return false; },
| 196|    |-	IsEnemy: function() { return false; },
|    | 196|+	"IsEnemy": function() { return false; },
| 197| 197| 	GetDisabledTemplates: function() { return {}; },
| 198| 198| 	GetDisabledTechnologies: function() { return {}; },
| 199| 199| 	GetSpyCostMultiplier: function() { return 1; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetDisabledTemplates' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 194| 194| 	IsMutualAlly: function() {return false; },
| 195| 195| 	IsNeutral: function() { return false; },
| 196| 196| 	IsEnemy: function() { return false; },
| 197|    |-	GetDisabledTemplates: function() { return {}; },
|    | 197|+	"GetDisabledTemplates": function() { return {}; },
| 198| 198| 	GetDisabledTechnologies: function() { return {}; },
| 199| 199| 	GetSpyCostMultiplier: function() { return 1; },
| 200| 200| 	HasSharedDropsites: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetDisabledTechnologies' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 195| 195| 	IsNeutral: function() { return false; },
| 196| 196| 	IsEnemy: function() { return false; },
| 197| 197| 	GetDisabledTemplates: function() { return {}; },
| 198|    |-	GetDisabledTechnologies: function() { return {}; },
|    | 198|+	"GetDisabledTechnologies": function() { return {}; },
| 199| 199| 	GetSpyCostMultiplier: function() { return 1; },
| 200| 200| 	HasSharedDropsites: function() { return false; },
| 201| 201| 	HasSharedLos: function() { return false; }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetSpyCostMultiplier' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 196| 196| 	IsEnemy: function() { return false; },
| 197| 197| 	GetDisabledTemplates: function() { return {}; },
| 198| 198| 	GetDisabledTechnologies: function() { return {}; },
| 199|    |-	GetSpyCostMultiplier: function() { return 1; },
|    | 199|+	"GetSpyCostMultiplier": function() { return 1; },
| 200| 200| 	HasSharedDropsites: function() { return false; },
| 201| 201| 	HasSharedLos: function() { return false; }
| 202| 202| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'HasSharedDropsites' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 197| 197| 	GetDisabledTemplates: function() { return {}; },
| 198| 198| 	GetDisabledTechnologies: function() { return {}; },
| 199| 199| 	GetSpyCostMultiplier: function() { return 1; },
| 200|    |-	HasSharedDropsites: function() { return false; },
|    | 200|+	"HasSharedDropsites": function() { return false; },
| 201| 201| 	HasSharedLos: function() { return false; }
| 202| 202| });
| 203| 203| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'HasSharedLos' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 198| 198| 	GetDisabledTechnologies: function() { return {}; },
| 199| 199| 	GetSpyCostMultiplier: function() { return 1; },
| 200| 200| 	HasSharedDropsites: function() { return false; },
| 201|    |-	HasSharedLos: function() { return false; }
|    | 201|+	"HasSharedLos": function() { return false; }
| 202| 202| });
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLimits' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 202| 202| });
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205|    |-	GetLimits: function() { return {"Bar": 20}; },
|    | 205|+	"GetLimits": function() { return {"Bar": 20}; },
| 206| 206| 	GetCounts: function() { return {"Bar": 0}; },
| 207| 207| 	GetLimitChangers: function() {return {"Bar": {}}; }
| 208| 208| });
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 202| 202| });
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205|    |-	GetLimits: function() { return {"Bar": 20}; },
|    | 205|+	GetLimits: function() { return { "Bar": 20}; },
| 206| 206| 	GetCounts: function() { return {"Bar": 0}; },
| 207| 207| 	GetLimitChangers: function() {return {"Bar": {}}; }
| 208| 208| });
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 202| 202| });
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205|    |-	GetLimits: function() { return {"Bar": 20}; },
|    | 205|+	GetLimits: function() { return {"Bar": 20 }; },
| 206| 206| 	GetCounts: function() { return {"Bar": 0}; },
| 207| 207| 	GetLimitChangers: function() {return {"Bar": {}}; }
| 208| 208| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205| 205| 	GetLimits: function() { return {"Bar": 20}; },
| 206|    |-	GetCounts: function() { return {"Bar": 0}; },
|    | 206|+	"GetCounts": function() { return {"Bar": 0}; },
| 207| 207| 	GetLimitChangers: function() {return {"Bar": {}}; }
| 208| 208| });
| 209| 209| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205| 205| 	GetLimits: function() { return {"Bar": 20}; },
| 206|    |-	GetCounts: function() { return {"Bar": 0}; },
|    | 206|+	GetCounts: function() { return { "Bar": 0}; },
| 207| 207| 	GetLimitChangers: function() {return {"Bar": {}}; }
| 208| 208| });
| 209| 209| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205| 205| 	GetLimits: function() { return {"Bar": 20}; },
| 206|    |-	GetCounts: function() { return {"Bar": 0}; },
|    | 206|+	GetCounts: function() { return {"Bar": 0 }; },
| 207| 207| 	GetLimitChangers: function() {return {"Bar": {}}; }
| 208| 208| });
| 209| 209| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLimitChangers' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205| 205| 	GetLimits: function() { return {"Bar": 20}; },
| 206| 206| 	GetCounts: function() { return {"Bar": 0}; },
| 207|    |-	GetLimitChangers: function() {return {"Bar": {}}; }
|    | 207|+	"GetLimitChangers": function() {return {"Bar": {}}; }
| 208| 208| });
| 209| 209| 
| 210| 210| AddMock(101, IID_TechnologyManager, {
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205| 205| 	GetLimits: function() { return {"Bar": 20}; },
| 206| 206| 	GetCounts: function() { return {"Bar": 0}; },
| 207|    |-	GetLimitChangers: function() {return {"Bar": {}}; }
|    | 207|+	GetLimitChangers: function() {return { "Bar": {}}; }
| 208| 208| });
| 209| 209| 
| 210| 210| AddMock(101, IID_TechnologyManager, {
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205| 205| 	GetLimits: function() { return {"Bar": 20}; },
| 206| 206| 	GetCounts: function() { return {"Bar": 0}; },
| 207|    |-	GetLimitChangers: function() {return {"Bar": {}}; }
|    | 207|+	GetLimitChangers: function() {return {"Bar": {} }; }
| 208| 208| });
| 209| 209| 
| 210| 210| AddMock(101, IID_TechnologyManager, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetBasicStatistics' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 217| 217| });
| 218| 218| 
| 219| 219| AddMock(101, IID_StatisticsTracker, {
| 220|    |-	GetBasicStatistics: function() {
|    | 220|+	"GetBasicStatistics": function() {
| 221| 221| 		return {
| 222| 222| 			"resourcesGathered": {
| 223| 223| 				"food": 100,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetSequences' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 229| 229| 			"percentMapExplored": 10
| 230| 230| 		};
| 231| 231| 	},
| 232|    |-	GetSequences: function() {
|    | 232|+	"GetSequences": function() {
| 233| 233| 		return {
| 234| 234| 			"unitsTrained": [0, 10],
| 235| 235| 			"unitsLost": [0, 9],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IncreaseTrainedUnitsCounter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 254| 254| 			"teamPeakPercentOfMapControlled": [0, 10]
| 255| 255| 		};
| 256| 256| 	},
| 257|    |-	IncreaseTrainedUnitsCounter: function() { return 1; },
|    | 257|+	"IncreaseTrainedUnitsCounter": function() { return 1; },
| 258| 258| 	IncreaseConstructedBuildingsCounter: function() { return 1; },
| 259| 259| 	IncreaseBuiltCivCentresCounter: function() { return 1; }
| 260| 260| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IncreaseConstructedBuildingsCounter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 255| 255| 		};
| 256| 256| 	},
| 257| 257| 	IncreaseTrainedUnitsCounter: function() { return 1; },
| 258|    |-	IncreaseConstructedBuildingsCounter: function() { return 1; },
|    | 258|+	"IncreaseConstructedBuildingsCounter": function() { return 1; },
| 259| 259| 	IncreaseBuiltCivCentresCounter: function() { return 1; }
| 260| 260| });
| 261| 261| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IncreaseBuiltCivCentresCounter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 256| 256| 	},
| 257| 257| 	IncreaseTrainedUnitsCounter: function() { return 1; },
| 258| 258| 	IncreaseConstructedBuildingsCounter: function() { return 1; },
| 259|    |-	IncreaseBuiltCivCentresCounter: function() { return 1; }
|    | 259|+	"IncreaseBuiltCivCentresCounter": function() { return 1; }
| 260| 260| });
| 261| 261| 
| 262| 262| // Note: property order matters when using TS_ASSERT_UNEVAL_EQUALS,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'players' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 263| 263| //	because uneval preserves property order. So make sure this object
| 264| 264| //	matches the ordering in GuiInterface.
| 265| 265| TS_ASSERT_UNEVAL_EQUALS(cmp.GetSimulationState(), {
| 266|    |-	players: [
|    | 266|+	"players": [
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'name' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 265| 265| TS_ASSERT_UNEVAL_EQUALS(cmp.GetSimulationState(), {
| 266| 266| 	players: [
| 267| 267| 		{
| 268|    |-			name: "Player 1",
|    | 268|+			"name": "Player 1",
| 269| 269| 			civ: "gaia",
| 270| 270| 			color: { r:1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'civ' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 266| 266| 	players: [
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269|    |-			civ: "gaia",
|    | 269|+			"civ": "gaia",
| 270| 270| 			color: { r:1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'color' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			"color": { r:1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'r' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { "r":1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'r'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r: 1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'g' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r:1, "g":1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'g'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r:1, g: 1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'b' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r:1, g:1, "b":1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'b'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r:1, g:1, b: 1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'a' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r:1, g:1, b:1, "a":1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'a'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r:1, g:1, b:1, a: 1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'controlsAll' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270| 270| 			color: { r:1, g:1, b:1, a:1 },
| 271|    |-			controlsAll: false,
|    | 271|+			"controlsAll": false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
| 274| 274| 			popMax: 200,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'popCount' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 269| 269| 			civ: "gaia",
| 270| 270| 			color: { r:1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272|    |-			popCount: 10,
|    | 272|+			"popCount": 10,
| 273| 273| 			popLimit: 20,
| 274| 274| 			popMax: 200,
| 275| 275| 			panelEntities: [],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'popLimit' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 270| 270| 			color: { r:1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273|    |-			popLimit: 20,
|    | 273|+			"popLimit": 20,
| 274| 274| 			popMax: 200,
| 275| 275| 			panelEntities: [],
| 276| 276| 			resourceCounts: { food: 100 },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'popMax' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
| 274|    |-			popMax: 200,
|    | 274|+			"popMax": 200,
| 275| 275| 			panelEntities: [],
| 276| 276| 			resourceCounts: { food: 100 },
| 277| 277| 			trainingBlocked: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'panelEntities' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
| 274| 274| 			popMax: 200,
| 275|    |-			panelEntities: [],
|    | 275|+			"panelEntities": [],
| 276| 276| 			resourceCounts: { food: 100 },
| 277| 277| 			trainingBlocked: false,
| 278| 278| 			state: "active",
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'resourceCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 273| 273| 			popLimit: 20,
| 274| 274| 			popMax: 200,
| 275| 275| 			panelEntities: [],
| 276|    |-			resourceCounts: { food: 100 },
|    | 276|+			"resourceCounts": { food: 100 },
| 277| 277| 			trainingBlocked: false,
| 278| 278| 			state: "active",
| 279| 279| 			team: -1,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'food' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 273| 273| 			popLimit: 20,
| 274| 274| 			popMax: 200,
| 275| 275| 			panelEntities: [],
| 276|    |-			resourceCounts: { food: 100 },
|    | 276|+			resourceCounts: { "food": 100 },
| 277| 277| 			trainingBlocked: false,
| 278| 278| 			state: "active",
| 279| 279| 			team: -1,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'trainingBlocked' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 274| 274| 			popMax: 200,
| 275| 275| 			panelEntities: [],
| 276| 276| 			resourceCounts: { food: 100 },
| 277|    |-			trainingBlocked: false,
|    | 277|+			"trainingBlocked": false,
| 278| 278| 			state: "active",
| 279| 279| 			team: -1,
| 280| 280| 			teamsLocked: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'state' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 275| 275| 			panelEntities: [],
| 276| 276| 			resourceCounts: { food: 100 },
| 277| 277| 			trainingBlocked: false,
| 278|    |-			state: "active",
|    | 278|+			"state": "active",
| 279| 279| 			team: -1,
| 280| 280| 			teamsLocked: false,
| 281| 281| 			cheatsEnabled: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'team' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 276| 276| 			resourceCounts: { food: 100 },
| 277| 277| 			trainingBlocked: false,
| 278| 278| 			state: "active",
| 279|    |-			team: -1,
|    | 279|+			"team": -1,
| 280| 280| 			teamsLocked: false,
| 281| 281| 			cheatsEnabled: false,
| 282| 282| 			disabledTemplates: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'teamsLocked' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 277| 277| 			trainingBlocked: false,
| 278| 278| 			state: "active",
| 279| 279| 			team: -1,
| 280|    |-			teamsLocked: false,
|    | 280|+			"teamsLocked": false,
| 281| 281| 			cheatsEnabled: false,
| 282| 282| 			disabledTemplates: {},
| 283| 283| 			disabledTechnologies: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'cheatsEnabled' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 278| 278| 			state: "active",
| 279| 279| 			team: -1,
| 280| 280| 			teamsLocked: false,
| 281|    |-			cheatsEnabled: false,
|    | 281|+			"cheatsEnabled": false,
| 282| 282| 			disabledTemplates: {},
| 283| 283| 			disabledTechnologies: {},
| 284| 284| 			hasSharedDropsites: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'disabledTemplates' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 279| 279| 			team: -1,
| 280| 280| 			teamsLocked: false,
| 281| 281| 			cheatsEnabled: false,
| 282|    |-			disabledTemplates: {},
|    | 282|+			"disabledTemplates": {},
| 283| 283| 			disabledTechnologies: {},
| 284| 284| 			hasSharedDropsites: false,
| 285| 285| 			hasSharedLos: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'disabledTechnologies' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 280| 280| 			teamsLocked: false,
| 281| 281| 			cheatsEnabled: false,
| 282| 282| 			disabledTemplates: {},
| 283|    |-			disabledTechnologies: {},
|    | 283|+			"disabledTechnologies": {},
| 284| 284| 			hasSharedDropsites: false,
| 285| 285| 			hasSharedLos: false,
| 286| 286| 			spyCostMultiplier: 1,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'hasSharedDropsites' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 281| 281| 			cheatsEnabled: false,
| 282| 282| 			disabledTemplates: {},
| 283| 283| 			disabledTechnologies: {},
| 284|    |-			hasSharedDropsites: false,
|    | 284|+			"hasSharedDropsites": false,
| 285| 285| 			hasSharedLos: false,
| 286| 286| 			spyCostMultiplier: 1,
| 287| 287| 			phase: "village",
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'hasSharedLos' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 282| 282| 			disabledTemplates: {},
| 283| 283| 			disabledTechnologies: {},
| 284| 284| 			hasSharedDropsites: false,
| 285|    |-			hasSharedLos: false,
|    | 285|+			"hasSharedLos": false,
| 286| 286| 			spyCostMultiplier: 1,
| 287| 287| 			phase: "village",
| 288| 288| 			isAlly: [false, false],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'spyCostMultiplier' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 283| 283| 			disabledTechnologies: {},
| 284| 284| 			hasSharedDropsites: false,
| 285| 285| 			hasSharedLos: false,
| 286|    |-			spyCostMultiplier: 1,
|    | 286|+			"spyCostMultiplier": 1,
| 287| 287| 			phase: "village",
| 288| 288| 			isAlly: [false, false],
| 289| 289| 			isMutualAlly: [false, false],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'phase' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 284| 284| 			hasSharedDropsites: false,
| 285| 285| 			hasSharedLos: false,
| 286| 286| 			spyCostMultiplier: 1,
| 287|    |-			phase: "village",
|    | 287|+			"phase": "village",
| 288| 288| 			isAlly: [false, false],
| 289| 289| 			isMutualAlly: [false, false],
| 290| 290| 			isNeutral: [false, false],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 285| 285| 			hasSharedLos: false,
| 286| 286| 			spyCostMultiplier: 1,
| 287| 287| 			phase: "village",
| 288|    |-			isAlly: [false, false],
|    | 288|+			"isAlly": [false, false],
| 289| 289| 			isMutualAlly: [false, false],
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isMutualAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 286| 286| 			spyCostMultiplier: 1,
| 287| 287| 			phase: "village",
| 288| 288| 			isAlly: [false, false],
| 289|    |-			isMutualAlly: [false, false],
|    | 289|+			"isMutualAlly": [false, false],
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isNeutral' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 287| 287| 			phase: "village",
| 288| 288| 			isAlly: [false, false],
| 289| 289| 			isMutualAlly: [false, false],
| 290|    |-			isNeutral: [false, false],
|    | 290|+			"isNeutral": [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isEnemy' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 288| 288| 			isAlly: [false, false],
| 289| 289| 			isMutualAlly: [false, false],
| 290| 290| 			isNeutral: [false, false],
| 291|    |-			isEnemy: [true, true],
|    | 291|+			"isEnemy": [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'entityLimits' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 289| 289| 			isMutualAlly: [false, false],
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292|    |-			entityLimits: {"Foo": 10},
|    | 292|+			"entityLimits": {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 289| 289| 			isMutualAlly: [false, false],
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292|    |-			entityLimits: {"Foo": 10},
|    | 292|+			entityLimits: { "Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 289| 289| 			isMutualAlly: [false, false],
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292|    |-			entityLimits: {"Foo": 10},
|    | 292|+			entityLimits: {"Foo": 10 },
| 293| 293| 			entityCounts: {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'entityCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293|    |-			entityCounts: {"Foo": 5},
|    | 293|+			"entityCounts": {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293|    |-			entityCounts: {"Foo": 5},
|    | 293|+			entityCounts: { "Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293|    |-			entityCounts: {"Foo": 5},
|    | 293|+			entityCounts: {"Foo": 5 },
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'entityLimitChangers' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294|    |-			entityLimitChangers: {"Foo": {}},
|    | 294|+			"entityLimitChangers": {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
| 297| 297| 			researchedTechs: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294|    |-			entityLimitChangers: {"Foo": {}},
|    | 294|+			entityLimitChangers: { "Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
| 297| 297| 			researchedTechs: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294|    |-			entityLimitChangers: {"Foo": {}},
|    | 294|+			entityLimitChangers: {"Foo": {} },
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
| 297| 297| 			researchedTechs: new Set(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'researchQueued' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 292| 292| 			entityLimits: {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295|    |-			researchQueued: new Map(),
|    | 295|+			"researchQueued": new Map(),
| 296| 296| 			researchStarted: new Set(),
| 297| 297| 			researchedTechs: new Set(),
| 298| 298| 			classCounts: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'researchStarted' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 293| 293| 			entityCounts: {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296|    |-			researchStarted: new Set(),
|    | 296|+			"researchStarted": new Set(),
| 297| 297| 			researchedTechs: new Set(),
| 298| 298| 			classCounts: {},
| 299| 299| 			typeCountsByClass: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'researchedTechs' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
| 297|    |-			researchedTechs: new Set(),
|    | 297|+			"researchedTechs": new Set(),
| 298| 298| 			classCounts: {},
| 299| 299| 			typeCountsByClass: {},
| 300| 300| 			canBarter: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'classCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
| 297| 297| 			researchedTechs: new Set(),
| 298|    |-			classCounts: {},
|    | 298|+			"classCounts": {},
| 299| 299| 			typeCountsByClass: {},
| 300| 300| 			canBarter: false,
| 301| 301| 			barterPrices: {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'typeCountsByClass' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 296| 296| 			researchStarted: new Set(),
| 297| 297| 			researchedTechs: new Set(),
| 298| 298| 			classCounts: {},
| 299|    |-			typeCountsByClass: {},
|    | 299|+			"typeCountsByClass": {},
| 300| 300| 			canBarter: false,
| 301| 301| 			barterPrices: {
| 302| 302| 				"buy": { "food": 150 },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'canBarter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 297| 297| 			researchedTechs: new Set(),
| 298| 298| 			classCounts: {},
| 299| 299| 			typeCountsByClass: {},
| 300|    |-			canBarter: false,
|    | 300|+			"canBarter": false,
| 301| 301| 			barterPrices: {
| 302| 302| 				"buy": { "food": 150 },
| 303| 303| 				"sell": { "food": 25 }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'barterPrices' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 298| 298| 			classCounts: {},
| 299| 299| 			typeCountsByClass: {},
| 300| 300| 			canBarter: false,
| 301|    |-			barterPrices: {
|    | 301|+			"barterPrices": {
| 302| 302| 				"buy": { "food": 150 },
| 303| 303| 				"sell": { "food": 25 }
| 304| 304| 			},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'statistics' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 302| 302| 				"buy": { "food": 150 },
| 303| 303| 				"sell": { "food": 25 }
| 304| 304| 			},
| 305|    |-			statistics: {
|    | 305|+			"statistics": {
| 306| 306| 				resourcesGathered: {
| 307| 307| 					food: 100,
| 308| 308| 					wood: 0,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'resourcesGathered' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 303| 303| 				"sell": { "food": 25 }
| 304| 304| 			},
| 305| 305| 			statistics: {
| 306|    |-				resourcesGathered: {
|    | 306|+				"resourcesGathered": {
| 307| 307| 					food: 100,
| 308| 308| 					wood: 0,
| 309| 309| 					metal: 0,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'food' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 304| 304| 			},
| 305| 305| 			statistics: {
| 306| 306| 				resourcesGathered: {
| 307|    |-					food: 100,
|    | 307|+					"food": 100,
| 308| 308| 					wood: 0,
| 309| 309| 					metal: 0,
| 310| 310| 					stone: 0,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'wood' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 305| 305| 			statistics: {
| 306| 306| 				resourcesGathered: {
| 307| 307| 					food: 100,
| 308|    |-					wood: 0,
|    | 308|+					"wood": 0,
| 309| 309| 					metal: 0,
| 310| 310| 					stone: 0,
| 311| 311| 					vegetarianFood: 0
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'metal' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 306| 306| 				resourcesGathered: {
| 307| 307| 					food: 100,
| 308| 308| 					wood: 0,
| 309|    |-					metal: 0,
|    | 309|+					"metal": 0,
| 310| 310| 					stone: 0,
| 311| 311| 					vegetarianFood: 0
| 312| 312| 				},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'stone' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 307| 307| 					food: 100,
| 308| 308| 					wood: 0,
| 309| 309| 					metal: 0,
| 310|    |-					stone: 0,
|    | 310|+					"stone": 0,
| 311| 311| 					vegetarianFood: 0
| 312| 312| 				},
| 313| 313| 				percentMapExplored: 10
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'vegetarianFood' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 308| 308| 					wood: 0,
| 309| 309| 					metal: 0,
| 310| 310| 					stone: 0,
| 311|    |-					vegetarianFood: 0
|    | 311|+					"vegetarianFood": 0
| 312| 312| 				},
| 313| 313| 				percentMapExplored: 10
| 314| 314| 			}
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'percentMapExplored' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 310| 310| 					stone: 0,
| 311| 311| 					vegetarianFood: 0
| 312| 312| 				},
| 313|    |-				percentMapExplored: 10
|    | 313|+				"percentMapExplored": 10
| 314| 314| 			}
| 315| 315| 		},
| 316| 316| 		{
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'name' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 314| 314| 			}
| 315| 315| 		},
| 316| 316| 		{
| 317|    |-			name: "Player 2",
|    | 317|+			"name": "Player 2",
| 318| 318| 			civ: "mace",
| 319| 319| 			color: { r:1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'civ' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 315| 315| 		},
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318|    |-			civ: "mace",
|    | 318|+			"civ": "mace",
| 319| 319| 			color: { r:1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'color' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			"color": { r:1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'r' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { "r":1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'r'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r: 1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'g' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r:1, "g":0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'g'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r:1, g: 0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'b' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r:1, g:0, "b":0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'b'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r:1, g:0, b: 0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'a' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r:1, g:0, b:0, "a":1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'a'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r:1, g:0, b:0, a: 1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'controlsAll' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319| 319| 			color: { r:1, g:0, b:0, a:1 },
| 320|    |-			controlsAll: true,
|    | 320|+			"controlsAll": true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
| 323| 323| 			popMax: 300,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'popCount' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 318| 318| 			civ: "mace",
| 319| 319| 			color: { r:1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321|    |-			popCount: 40,
|    | 321|+			"popCount": 40,
| 322| 322| 			popLimit: 30,
| 323| 323| 			popMax: 300,
| 324| 324| 			panelEntities: [],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'popLimit' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 319| 319| 			color: { r:1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322|    |-			popLimit: 30,
|    | 322|+			"popLimit": 30,
| 323| 323| 			popMax: 300,
| 324| 324| 			panelEntities: [],
| 325| 325| 			resourceCounts: { food: 200 },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'popMax' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
| 323|    |-			popMax: 300,
|    | 323|+			"popMax": 300,
| 324| 324| 			panelEntities: [],
| 325| 325| 			resourceCounts: { food: 200 },
| 326| 326| 			trainingBlocked: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'panelEntities' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
| 323| 323| 			popMax: 300,
| 324|    |-			panelEntities: [],
|    | 324|+			"panelEntities": [],
| 325| 325| 			resourceCounts: { food: 200 },
| 326| 326| 			trainingBlocked: false,
| 327| 327| 			state: "active",
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'resourceCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 322| 322| 			popLimit: 30,
| 323| 323| 			popMax: 300,
| 324| 324| 			panelEntities: [],
| 325|    |-			resourceCounts: { food: 200 },
|    | 325|+			"resourceCounts": { food: 200 },
| 326| 326| 			trainingBlocked: false,
| 327| 327| 			state: "active",
| 328| 328| 			team: -1,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'food' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 322| 322| 			popLimit: 30,
| 323| 323| 			popMax: 300,
| 324| 324| 			panelEntities: [],
| 325|    |-			resourceCounts: { food: 200 },
|    | 325|+			resourceCounts: { "food": 200 },
| 326| 326| 			trainingBlocked: false,
| 327| 327| 			state: "active",
| 328| 328| 			team: -1,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'trainingBlocked' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 323| 323| 			popMax: 300,
| 324| 324| 			panelEntities: [],
| 325| 325| 			resourceCounts: { food: 200 },
| 326|    |-			trainingBlocked: false,
|    | 326|+			"trainingBlocked": false,
| 327| 327| 			state: "active",
| 328| 328| 			team: -1,
| 329| 329| 			teamsLocked: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'state' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 324| 324| 			panelEntities: [],
| 325| 325| 			resourceCounts: { food: 200 },
| 326| 326| 			trainingBlocked: false,
| 327|    |-			state: "active",
|    | 327|+			"state": "active",
| 328| 328| 			team: -1,
| 329| 329| 			teamsLocked: false,
| 330| 330| 			cheatsEnabled: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'team' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 325| 325| 			resourceCounts: { food: 200 },
| 326| 326| 			trainingBlocked: false,
| 327| 327| 			state: "active",
| 328|    |-			team: -1,
|    | 328|+			"team": -1,
| 329| 329| 			teamsLocked: false,
| 330| 330| 			cheatsEnabled: false,
| 331| 331| 			disabledTemplates: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'teamsLocked' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 326| 326| 			trainingBlocked: false,
| 327| 327| 			state: "active",
| 328| 328| 			team: -1,
| 329|    |-			teamsLocked: false,
|    | 329|+			"teamsLocked": false,
| 330| 330| 			cheatsEnabled: false,
| 331| 331| 			disabledTemplates: {},
| 332| 332| 			disabledTechnologies: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'cheatsEnabled' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 327| 327| 			state: "active",
| 328| 328| 			team: -1,
| 329| 329| 			teamsLocked: false,
| 330|    |-			cheatsEnabled: false,
|    | 330|+			"cheatsEnabled": false,
| 331| 331| 			disabledTemplates: {},
| 332| 332| 			disabledTechnologies: {},
| 333| 333| 			hasSharedDropsites: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'disabledTemplates' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 328| 328| 			team: -1,
| 329| 329| 			teamsLocked: false,
| 330| 330| 			cheatsEnabled: false,
| 331|    |-			disabledTemplates: {},
|    | 331|+			"disabledTemplates": {},
| 332| 332| 			disabledTechnologies: {},
| 333| 333| 			hasSharedDropsites: false,
| 334| 334| 			hasSharedLos: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'disabledTechnologies' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 329| 329| 			teamsLocked: false,
| 330| 330| 			cheatsEnabled: false,
| 331| 331| 			disabledTemplates: {},
| 332|    |-			disabledTechnologies: {},
|    | 332|+			"disabledTechnologies": {},
| 333| 333| 			hasSharedDropsites: false,
| 334| 334| 			hasSharedLos: false,
| 335| 335| 			spyCostMultiplier: 1,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'hasSharedDropsites' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 330| 330| 			cheatsEnabled: false,
| 331| 331| 			disabledTemplates: {},
| 332| 332| 			disabledTechnologies: {},
| 333|    |-			hasSharedDropsites: false,
|    | 333|+			"hasSharedDropsites": false,
| 334| 334| 			hasSharedLos: false,
| 335| 335| 			spyCostMultiplier: 1,
| 336| 336| 			phase: "village",
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'hasSharedLos' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 331| 331| 			disabledTemplates: {},
| 332| 332| 			disabledTechnologies: {},
| 333| 333| 			hasSharedDropsites: false,
| 334|    |-			hasSharedLos: false,
|    | 334|+			"hasSharedLos": false,
| 335| 335| 			spyCostMultiplier: 1,
| 336| 336| 			phase: "village",
| 337| 337| 			isAlly: [true, true],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'spyCostMultiplier' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 332| 332| 			disabledTechnologies: {},
| 333| 333| 			hasSharedDropsites: false,
| 334| 334| 			hasSharedLos: false,
| 335|    |-			spyCostMultiplier: 1,
|    | 335|+			"spyCostMultiplier": 1,
| 336| 336| 			phase: "village",
| 337| 337| 			isAlly: [true, true],
| 338| 338| 			isMutualAlly: [false, false],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'phase' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 333| 333| 			hasSharedDropsites: false,
| 334| 334| 			hasSharedLos: false,
| 335| 335| 			spyCostMultiplier: 1,
| 336|    |-			phase: "village",
|    | 336|+			"phase": "village",
| 337| 337| 			isAlly: [true, true],
| 338| 338| 			isMutualAlly: [false, false],
| 339| 339| 			isNeutral: [false, false],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 334| 334| 			hasSharedLos: false,
| 335| 335| 			spyCostMultiplier: 1,
| 336| 336| 			phase: "village",
| 337|    |-			isAlly: [true, true],
|    | 337|+			"isAlly": [true, true],
| 338| 338| 			isMutualAlly: [false, false],
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isMutualAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 335| 335| 			spyCostMultiplier: 1,
| 336| 336| 			phase: "village",
| 337| 337| 			isAlly: [true, true],
| 338|    |-			isMutualAlly: [false, false],
|    | 338|+			"isMutualAlly": [false, false],
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isNeutral' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 336| 336| 			phase: "village",
| 337| 337| 			isAlly: [true, true],
| 338| 338| 			isMutualAlly: [false, false],
| 339|    |-			isNeutral: [false, false],
|    | 339|+			"isNeutral": [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isEnemy' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 337| 337| 			isAlly: [true, true],
| 338| 338| 			isMutualAlly: [false, false],
| 339| 339| 			isNeutral: [false, false],
| 340|    |-			isEnemy: [false, false],
|    | 340|+			"isEnemy": [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'entityLimits' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 338| 338| 			isMutualAlly: [false, false],
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341|    |-			entityLimits: {"Bar": 20},
|    | 341|+			"entityLimits": {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 338| 338| 			isMutualAlly: [false, false],
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341|    |-			entityLimits: {"Bar": 20},
|    | 341|+			entityLimits: { "Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 338| 338| 			isMutualAlly: [false, false],
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341|    |-			entityLimits: {"Bar": 20},
|    | 341|+			entityLimits: {"Bar": 20 },
| 342| 342| 			entityCounts: {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'entityCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342|    |-			entityCounts: {"Bar": 0},
|    | 342|+			"entityCounts": {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342|    |-			entityCounts: {"Bar": 0},
|    | 342|+			entityCounts: { "Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342|    |-			entityCounts: {"Bar": 0},
|    | 342|+			entityCounts: {"Bar": 0 },
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'entityLimitChangers' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343|    |-			entityLimitChangers: {"Bar": {}},
|    | 343|+			"entityLimitChangers": {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
| 346| 346| 			researchedTechs: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343|    |-			entityLimitChangers: {"Bar": {}},
|    | 343|+			entityLimitChangers: { "Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
| 346| 346| 			researchedTechs: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343|    |-			entityLimitChangers: {"Bar": {}},
|    | 343|+			entityLimitChangers: {"Bar": {} },
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
| 346| 346| 			researchedTechs: new Set(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'researchQueued' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 341| 341| 			entityLimits: {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344|    |-			researchQueued: new Map(),
|    | 344|+			"researchQueued": new Map(),
| 345| 345| 			researchStarted: new Set(),
| 346| 346| 			researchedTechs: new Set(),
| 347| 347| 			classCounts: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'researchStarted' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 342| 342| 			entityCounts: {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345|    |-			researchStarted: new Set(),
|    | 345|+			"researchStarted": new Set(),
| 346| 346| 			researchedTechs: new Set(),
| 347| 347| 			classCounts: {},
| 348| 348| 			typeCountsByClass: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'researchedTechs' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
| 346|    |-			researchedTechs: new Set(),
|    | 346|+			"researchedTechs": new Set(),
| 347| 347| 			classCounts: {},
| 348| 348| 			typeCountsByClass: {},
| 349| 349| 			canBarter: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'classCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
| 346| 346| 			researchedTechs: new Set(),
| 347|    |-			classCounts: {},
|    | 347|+			"classCounts": {},
| 348| 348| 			typeCountsByClass: {},
| 349| 349| 			canBarter: false,
| 350| 350| 			barterPrices: {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'typeCountsByClass' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 345| 345| 			researchStarted: new Set(),
| 346| 346| 			researchedTechs: new Set(),
| 347| 347| 			classCounts: {},
| 348|    |-			typeCountsByClass: {},
|    | 348|+			"typeCountsByClass": {},
| 349| 349| 			canBarter: false,
| 350| 350| 			barterPrices: {
| 351| 351| 				"buy": { "food": 150 },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'canBarter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 346| 346| 			researchedTechs: new Set(),
| 347| 347| 			classCounts: {},
| 348| 348| 			typeCountsByClass: {},
| 349|    |-			canBarter: false,
|    | 349|+			"canBarter": false,
| 350| 350| 			barterPrices: {
| 351| 351| 				"buy": { "food": 150 },
| 352| 352| 				"sell": { "food": 25 }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'barterPrices' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 347| 347| 			classCounts: {},
| 348| 348| 			typeCountsByClass: {},
| 349| 349| 			canBarter: false,
| 350|    |-			barterPrices: {
|    | 350|+			"barterPrices": {
| 351| 351| 				"buy": { "food": 150 },
| 352| 352| 				"sell": { "food": 25 }
| 353| 353| 			},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'statistics' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 351| 351| 				"buy": { "food": 150 },
| 352| 352| 				"sell": { "food": 25 }
| 353| 353| 			},
| 354|    |-			statistics: {
|    | 354|+			"statistics": {
| 355| 355| 				resourcesGathered: {
| 356| 356| 					food: 100,
| 357| 357| 					wood: 0,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'resourcesGathered' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 352| 352| 				"sell": { "food": 25 }
| 353| 353| 			},
| 354| 354| 			statistics: {
| 355|    |-				resourcesGathered: {
|    | 355|+				"resourcesGathered": {
| 356| 356| 					food: 100,
| 357| 357| 					wood: 0,
| 358| 358| 					metal: 0,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'food' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 353| 353| 			},
| 354| 354| 			statistics: {
| 355| 355| 				resourcesGathered: {
| 356|    |-					food: 100,
|    | 356|+					"food": 100,
| 357| 357| 					wood: 0,
| 358| 358| 					metal: 0,
| 359| 359| 					stone: 0,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'wood' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 354| 354| 			statistics: {
| 355| 355| 				resourcesGathered: {
| 356| 356| 					food: 100,
| 357|    |-					wood: 0,
|    | 357|+					"wood": 0,
| 358| 358| 					metal: 0,
| 359| 359| 					stone: 0,
| 360| 360| 					vegetarianFood: 0
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'metal' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 355| 355| 				resourcesGathered: {
| 356| 356| 					food: 100,
| 357| 357| 					wood: 0,
| 358|    |-					metal: 0,
|    | 358|+					"metal": 0,
| 359| 359| 					stone: 0,
| 360| 360| 					vegetarianFood: 0
| 361| 361| 				},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'stone' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 356| 356| 					food: 100,
| 357| 357| 					wood: 0,
| 358| 358| 					metal: 0,
| 359|    |-					stone: 0,
|    | 359|+					"stone": 0,
| 360| 360| 					vegetarianFood: 0
| 361| 361| 				},
| 362| 362| 				percentMapExplored: 10
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'vegetarianFood' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 357| 357| 					wood: 0,
| 358| 358| 					metal: 0,
| 359| 359| 					stone: 0,
| 360|    |-					vegetarianFood: 0
|    | 360|+					"vegetarianFood": 0
| 361| 361| 				},
| 362| 362| 				percentMapExplored: 10
| 363| 363| 			}
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'percentMapExplored' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 359| 359| 					stone: 0,
| 360| 360| 					vegetarianFood: 0
| 361| 361| 				},
| 362|    |-				percentMapExplored: 10
|    | 362|+				"percentMapExplored": 10
| 363| 363| 			}
| 364| 364| 		}
| 365| 365| 	],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'circularMap' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 363| 363| 			}
| 364| 364| 		}
| 365| 365| 	],
| 366|    |-	circularMap: false,
|    | 366|+	"circularMap": false,
| 367| 367| 	timeElapsed: 0,
| 368| 368| 	"victoryConditions": ["conquest", "wonder"],
| 369| 369| 	alliedVictory: false
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'timeElapsed' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 364| 364| 		}
| 365| 365| 	],
| 366| 366| 	circularMap: false,
| 367|    |-	timeElapsed: 0,
|    | 367|+	"timeElapsed": 0,
| 368| 368| 	"victoryConditions": ["conquest", "wonder"],
| 369| 369| 	alliedVictory: false
| 370| 370| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'alliedVictory' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 366| 366| 	circularMap: false,
| 367| 367| 	timeElapsed: 0,
| 368| 368| 	"victoryConditions": ["conquest", "wonder"],
| 369|    |-	alliedVictory: false
|    | 369|+	"alliedVictory": false
| 370| 370| });
| 371| 371| 
| 372| 372| TS_ASSERT_UNEVAL_EQUALS(cmp.GetExtendedSimulationState(), {
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'r'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 374| 374| 		{
| 375| 375| 			"name": "Player 1",
| 376| 376| 			"civ": "gaia",
| 377|    |-			"color": { "r":1, "g":1, "b":1, "a":1 },
|    | 377|+			"color": { "r": 1, "g":1, "b":1, "a":1 },
| 378| 378| 			"controlsAll": false,
| 379| 379| 			"popCount": 10,
| 380| 380| 			"popLimit": 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'g'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 374| 374| 		{
| 375| 375| 			"name": "Player 1",
| 376| 376| 			"civ": "gaia",
| 377|    |-			"color": { "r":1, "g":1, "b":1, "a":1 },
|    | 377|+			"color": { "r":1, "g": 1, "b":1, "a":1 },
| 378| 378| 			"controlsAll": false,
| 379| 379| 			"popCount": 10,
| 380| 380| 			"popLimit": 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'b'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 374| 374| 		{
| 375| 375| 			"name": "Player 1",
| 376| 376| 			"civ": "gaia",
| 377|    |-			"color": { "r":1, "g":1, "b":1, "a":1 },
|    | 377|+			"color": { "r":1, "g":1, "b": 1, "a":1 },
| 378| 378| 			"controlsAll": false,
| 379| 379| 			"popCount": 10,
| 380| 380| 			"popLimit": 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'a'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 374| 374| 		{
| 375| 375| 			"name": "Player 1",
| 376| 376| 			"civ": "gaia",
| 377|    |-			"color": { "r":1, "g":1, "b":1, "a":1 },
|    | 377|+			"color": { "r":1, "g":1, "b":1, "a": 1 },
| 378| 378| 			"controlsAll": false,
| 379| 379| 			"popCount": 10,
| 380| 380| 			"popLimit": 20,
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 396| 396| 			"isMutualAlly": [false, false],
| 397| 397| 			"isNeutral": [false, false],
| 398| 398| 			"isEnemy": [true, true],
| 399|    |-			"entityLimits": {"Foo": 10},
|    | 399|+			"entityLimits": { "Foo": 10},
| 400| 400| 			"entityCounts": {"Foo": 5},
| 401| 401| 			"entityLimitChangers": {"Foo": {}},
| 402| 402| 			"researchQueued": new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 396| 396| 			"isMutualAlly": [false, false],
| 397| 397| 			"isNeutral": [false, false],
| 398| 398| 			"isEnemy": [true, true],
| 399|    |-			"entityLimits": {"Foo": 10},
|    | 399|+			"entityLimits": {"Foo": 10 },
| 400| 400| 			"entityCounts": {"Foo": 5},
| 401| 401| 			"entityLimitChangers": {"Foo": {}},
| 402| 402| 			"researchQueued": new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 397| 397| 			"isNeutral": [false, false],
| 398| 398| 			"isEnemy": [true, true],
| 399| 399| 			"entityLimits": {"Foo": 10},
| 400|    |-			"entityCounts": {"Foo": 5},
|    | 400|+			"entityCounts": { "Foo": 5},
| 401| 401| 			"entityLimitChangers": {"Foo": {}},
| 402| 402| 			"researchQueued": new Map(),
| 403| 403| 			"researchStarted": new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 397| 397| 			"isNeutral": [false, false],
| 398| 398| 			"isEnemy": [true, true],
| 399| 399| 			"entityLimits": {"Foo": 10},
| 400|    |-			"entityCounts": {"Foo": 5},
|    | 400|+			"entityCounts": {"Foo": 5 },
| 401| 401| 			"entityLimitChangers": {"Foo": {}},
| 402| 402| 			"researchQueued": new Map(),
| 403| 403| 			"researchStarted": new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 398| 398| 			"isEnemy": [true, true],
| 399| 399| 			"entityLimits": {"Foo": 10},
| 400| 400| 			"entityCounts": {"Foo": 5},
| 401|    |-			"entityLimitChangers": {"Foo": {}},
|    | 401|+			"entityLimitChangers": { "Foo": {}},
| 402| 402| 			"researchQueued": new Map(),
| 403| 403| 			"researchStarted": new Set(),
| 404| 404| 			"researchedTechs": new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 398| 398| 			"isEnemy": [true, true],
| 399| 399| 			"entityLimits": {"Foo": 10},
| 400| 400| 			"entityCounts": {"Foo": 5},
| 401|    |-			"entityLimitChangers": {"Foo": {}},
|    | 401|+			"entityLimitChangers": {"Foo": {} },
| 402| 402| 			"researchQueued": new Map(),
| 403| 403| 			"researchStarted": new Set(),
| 404| 404| 			"researchedTechs": new Set(),
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'r'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 446| 446| 		{
| 447| 447| 			"name": "Player 2",
| 448| 448| 			"civ": "mace",
| 449|    |-			"color": { "r":1, "g":0, "b":0, "a":1 },
|    | 449|+			"color": { "r": 1, "g":0, "b":0, "a":1 },
| 450| 450| 			"controlsAll": true,
| 451| 451| 			"popCount": 40,
| 452| 452| 			"popLimit": 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'g'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 446| 446| 		{
| 447| 447| 			"name": "Player 2",
| 448| 448| 			"civ": "mace",
| 449|    |-			"color": { "r":1, "g":0, "b":0, "a":1 },
|    | 449|+			"color": { "r":1, "g": 0, "b":0, "a":1 },
| 450| 450| 			"controlsAll": true,
| 451| 451| 			"popCount": 40,
| 452| 452| 			"popLimit": 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'b'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 446| 446| 		{
| 447| 447| 			"name": "Player 2",
| 448| 448| 			"civ": "mace",
| 449|    |-			"color": { "r":1, "g":0, "b":0, "a":1 },
|    | 449|+			"color": { "r":1, "g":0, "b": 0, "a":1 },
| 450| 450| 			"controlsAll": true,
| 451| 451| 			"popCount": 40,
| 452| 452| 			"popLimit": 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'a'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 446| 446| 		{
| 447| 447| 			"name": "Player 2",
| 448| 448| 			"civ": "mace",
| 449|    |-			"color": { "r":1, "g":0, "b":0, "a":1 },
|    | 449|+			"color": { "r":1, "g":0, "b":0, "a": 1 },
| 450| 450| 			"controlsAll": true,
| 451| 451| 			"popCount": 40,
| 452| 452| 			"popLimit": 30,
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 468| 468| 			"isMutualAlly": [false, false],
| 469| 469| 			"isNeutral": [false, false],
| 470| 470| 			"isEnemy": [false, false],
| 471|    |-			"entityLimits": {"Bar": 20},
|    | 471|+			"entityLimits": { "Bar": 20},
| 472| 472| 			"entityCounts": {"Bar": 0},
| 473| 473| 			"entityLimitChangers": {"Bar": {}},
| 474| 474| 			"researchQueued": new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 468| 468| 			"isMutualAlly": [false, false],
| 469| 469| 			"isNeutral": [false, false],
| 470| 470| 			"isEnemy": [false, false],
| 471|    |-			"entityLimits": {"Bar": 20},
|    | 471|+			"entityLimits": {"Bar": 20 },
| 472| 472| 			"entityCounts": {"Bar": 0},
| 473| 473| 			"entityLimitChangers": {"Bar": {}},
| 474| 474| 			"researchQueued": new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 469| 469| 			"isNeutral": [false, false],
| 470| 470| 			"isEnemy": [false, false],
| 471| 471| 			"entityLimits": {"Bar": 20},
| 472|    |-			"entityCounts": {"Bar": 0},
|    | 472|+			"entityCounts": { "Bar": 0},
| 473| 473| 			"entityLimitChangers": {"Bar": {}},
| 474| 474| 			"researchQueued": new Map(),
| 475| 475| 			"researchStarted": new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 469| 469| 			"isNeutral": [false, false],
| 470| 470| 			"isEnemy": [false, false],
| 471| 471| 			"entityLimits": {"Bar": 20},
| 472|    |-			"entityCounts": {"Bar": 0},
|    | 472|+			"entityCounts": {"Bar": 0 },
| 473| 473| 			"entityLimitChangers": {"Bar": {}},
| 474| 474| 			"researchQueued": new Map(),
| 475| 475| 			"researchStarted": new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 470| 470| 			"isEnemy": [false, false],
| 471| 471| 			"entityLimits": {"Bar": 20},
| 472| 472| 			"entityCounts": {"Bar": 0},
| 473|    |-			"entityLimitChangers": {"Bar": {}},
|    | 473|+			"entityLimitChangers": { "Bar": {}},
| 474| 474| 			"researchQueued": new Map(),
| 475| 475| 			"researchStarted": new Set(),
| 476| 476| 			"researchedTechs": new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 470| 470| 			"isEnemy": [false, false],
| 471| 471| 			"entityLimits": {"Bar": 20},
| 472| 472| 			"entityCounts": {"Bar": 0},
| 473|    |-			"entityLimitChangers": {"Bar": {}},
|    | 473|+			"entityLimitChangers": {"Bar": {} },
| 474| 474| 			"researchQueued": new Map(),
| 475| 475| 			"researchStarted": new Set(),
| 476| 476| 			"researchedTechs": new Set(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetEntitiesList' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 524| 524| 
| 525| 525| 
| 526| 526| AddMock(10, IID_Builder, {
| 527|    |-	GetEntitiesList: function() {
|    | 527|+	"GetEntitiesList": function() {
| 528| 528| 		return ["test1", "test2"];
| 529| 529| 	},
| 530| 530| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetHitpoints' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 530| 530| });
| 531| 531| 
| 532| 532| AddMock(10, IID_Health, {
| 533|    |-	GetHitpoints: function() { return 50; },
|    | 533|+	"GetHitpoints": function() { return 50; },
| 534| 534| 	GetMaxHitpoints: function() { return 60; },
| 535| 535| 	IsRepairable: function() { return false; },
| 536| 536| 	IsUnhealable: function() { return false; }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetMaxHitpoints' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 531| 531| 
| 532| 532| AddMock(10, IID_Health, {
| 533| 533| 	GetHitpoints: function() { return 50; },
| 534|    |-	GetMaxHitpoints: function() { return 60; },
|    | 534|+	"GetMaxHitpoints": function() { return 60; },
| 535| 535| 	IsRepairable: function() { return false; },
| 536| 536| 	IsUnhealable: function() { return false; }
| 537| 537| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsRepairable' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 532| 532| AddMock(10, IID_Health, {
| 533| 533| 	GetHitpoints: function() { return 50; },
| 534| 534| 	GetMaxHitpoints: function() { return 60; },
| 535|    |-	IsRepairable: function() { return false; },
|    | 535|+	"IsRepairable": function() { return false; },
| 536| 536| 	IsUnhealable: function() { return false; }
| 537| 537| });
| 538| 538| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsUnhealable' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 533| 533| 	GetHitpoints: function() { return 50; },
| 534| 534| 	GetMaxHitpoints: function() { return 60; },
| 535| 535| 	IsRepairable: function() { return false; },
| 536|    |-	IsUnhealable: function() { return false; }
|    | 536|+	"IsUnhealable": function() { return false; }
| 537| 537| });
| 538| 538| 
| 539| 539| AddMock(10, IID_Identity, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetClassesList' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 537| 537| });
| 538| 538| 
| 539| 539| AddMock(10, IID_Identity, {
| 540|    |-	GetClassesList: function() { return ["class1", "class2"]; },
|    | 540|+	"GetClassesList": function() { return ["class1", "class2"]; },
| 541| 541| 	GetVisibleClassesList: function() { return ["class3", "class4"]; },
| 542| 542| 	GetRank: function() { return "foo"; },
| 543| 543| 	GetSelectionGroupName: function() { return "Selection Group Name"; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetVisibleClassesList' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 538| 538| 
| 539| 539| AddMock(10, IID_Identity, {
| 540| 540| 	GetClassesList: function() { return ["class1", "class2"]; },
| 541|    |-	GetVisibleClassesList: function() { return ["class3", "class4"]; },
|    | 541|+	"GetVisibleClassesList": function() { return ["class3", "class4"]; },
| 542| 542| 	GetRank: function() { return "foo"; },
| 543| 543| 	GetSelectionGroupName: function() { return "Selection Group Name"; },
| 544| 544| 	HasClass: function() { return true; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetRank' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 539| 539| AddMock(10, IID_Identity, {
| 540| 540| 	GetClassesList: function() { return ["class1", "class2"]; },
| 541| 541| 	GetVisibleClassesList: function() { return ["class3", "class4"]; },
| 542|    |-	GetRank: function() { return "foo"; },
|    | 542|+	"GetRank": function() { return "foo"; },
| 543| 543| 	GetSelectionGroupName: function() { return "Selection Group Name"; },
| 544| 544| 	HasClass: function() { return true; },
| 545| 545| 	IsUndeletable: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetSelectionGroupName' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 540| 540| 	GetClassesList: function() { return ["class1", "class2"]; },
| 541| 541| 	GetVisibleClassesList: function() { return ["class3", "class4"]; },
| 542| 542| 	GetRank: function() { return "foo"; },
| 543|    |-	GetSelectionGroupName: function() { return "Selection Group Name"; },
|    | 543|+	"GetSelectionGroupName": function() { return "Selection Group Name"; },
| 544| 544| 	HasClass: function() { return true; },
| 545| 545| 	IsUndeletable: function() { return false; },
| 546| 546| 	CanUseSomeFormation: function() {return false;}
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'HasClass' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 541| 541| 	GetVisibleClassesList: function() { return ["class3", "class4"]; },
| 542| 542| 	GetRank: function() { return "foo"; },
| 543| 543| 	GetSelectionGroupName: function() { return "Selection Group Name"; },
| 544|    |-	HasClass: function() { return true; },
|    | 544|+	"HasClass": function() { return true; },
| 545| 545| 	IsUndeletable: function() { return false; },
| 546| 546| 	CanUseSomeFormation: function() {return false;}
| 547| 547| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsUndeletable' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 542| 542| 	GetRank: function() { return "foo"; },
| 543| 543| 	GetSelectionGroupName: function() { return "Selection Group Name"; },
| 544| 544| 	HasClass: function() { return true; },
| 545|    |-	IsUndeletable: function() { return false; },
|    | 545|+	"IsUndeletable": function() { return false; },
| 546| 546| 	CanUseSomeFormation: function() {return false;}
| 547| 547| });
| 548| 548| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'CanUseSomeFormation' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 543| 543| 	GetSelectionGroupName: function() { return "Selection Group Name"; },
| 544| 544| 	HasClass: function() { return true; },
| 545| 545| 	IsUndeletable: function() { return false; },
| 546|    |-	CanUseSomeFormation: function() {return false;}
|    | 546|+	"CanUseSomeFormation": function() {return false;}
| 547| 547| });
| 548| 548| 
| 549| 549| AddMock(10, IID_Position, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetTurretParent' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 547| 547| });
| 548| 548| 
| 549| 549| AddMock(10, IID_Position, {
| 550|    |-	GetTurretParent: function() {return INVALID_ENTITY;},
|    | 550|+	"GetTurretParent": function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552| 552| 		return {x:1, y:2, z:3};
| 553| 553| 	},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPosition' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 548| 548| 
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551|    |-	GetPosition: function() {
|    | 551|+	"GetPosition": function() {
| 552| 552| 		return {x:1, y:2, z:3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return { x:1, y:2, z:3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'x' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {"x":1, y:2, z:3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'x'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {x: 1, y:2, z:3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'y' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {x:1, "y":2, z:3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'y'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {x:1, y: 2, z:3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'z' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {x:1, y:2, "z":3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'z'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {x:1, y:2, z: 3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {x:1, y:2, z:3 };
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsInWorld' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 551| 551| 	GetPosition: function() {
| 552| 552| 		return {x:1, y:2, z:3};
| 553| 553| 	},
| 554|    |-	IsInWorld: function() {
|    | 554|+	"IsInWorld": function() {
| 555| 555| 		return true;
| 556| 556| 	}
| 557| 557| });
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": { x:1, y:2, z:3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'x' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {"x":1, y:2, z:3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'x'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {x: 1, y:2, z:3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'y' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {x:1, "y":2, z:3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'y'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {x:1, y: 2, z:3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'z' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {x:1, y:2, "z":3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'z'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {x:1, y:2, z: 3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {x:1, y:2, z:3 },
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'isBarterMarket'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 584| 584| 	"builder": true,
| 585| 585| 	"canGarrison": false,
| 586| 586| 	"visibility": "visible",
| 587|    |-	"isBarterMarket":true,
|    | 587|+	"isBarterMarket": true,
| 588| 588| 	"resourceTrickle": {
| 589| 589| 		"interval": 1250,
| 590| 590| 		"rates": { "food": 2, "wood": 3, "stone": 5, "metal": 9 }
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|  66|  66| 		let phase = "";
|  67|  67| 		let cmpTechnologyManager = QueryPlayerIDInterface(i, IID_TechnologyManager);
|  68|  68| 		if (cmpTechnologyManager)
|  69|    |-		{
|    |  69|+		
|  70|  70| 			if (cmpTechnologyManager.IsTechnologyResearched("phase_city"))
|  71|  71| 				phase = "city";
|  72|  72| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_town"))
|  73|  73| 				phase = "town";
|  74|  74| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_village"))
|  75|  75| 				phase = "village";
|  76|    |-		}
|    |  76|+		
|  77|  77| 
|  78|  78| 		// store player ally/neutral/enemy data as arrays
|  79|  79| 		let allies = [];
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 411| 411| 			ret.attack[type].elevationBonus = range.elevationBonus;
| 412| 412| 
| 413| 413| 			if (cmpUnitAI && cmpPosition && cmpPosition.IsInWorld())
| 414|    |-			{
|    | 414|+			
| 415| 415| 				// For units, take the range in front of it, no spread. So angle = 0
| 416| 416| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 417|    |-			}
|    | 417|+			
| 418| 418| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 419| 419| 			{
| 420| 420| 				// For buildings, take the average elevation around it. So angle = 2*pi
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 416| 416| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 417| 417| 			}
| 418| 418| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 419|    |-			{
|    | 419|+			
| 420| 420| 				// For buildings, take the average elevation around it. So angle = 2*pi
| 421| 421| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 422|    |-			}
|    | 422|+			
| 423| 423| 			else
| 424| 424| 			{
| 425| 425| 				// not in world, set a default?
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 421| 421| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 422| 422| 			}
| 423| 423| 			else
| 424|    |-			{
|    | 424|+			
| 425| 425| 				// not in world, set a default?
| 426| 426| 				ret.attack[type].elevationAdaptedRange = ret.attack.maxRange;
| 427|    |-			}
|    | 427|+			
| 428| 428| 		}
| 429| 429| 	}
| 430| 430| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 792| 792| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 793| 793| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 794| 794| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 795|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 795|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 796| 796| 	}
| 797| 797| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 798| 798| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1311|1311| 		}
|1312|1312| 	}
|1313|1313| 	else
|1314|    |-	{
|    |1314|+	
|1315|1315| 		// Didn't snap to an existing entity, add the starting tower manually. To prevent odd-looking rotation jumps
|1316|1316| 		// when shift-clicking to build a wall, reuse the placement angle that was last seen on a validly positioned
|1317|1317| 		// wall piece.
|1332|1332| 			"pos": start.pos,
|1333|1333| 			"angle": previewEntities.length > 0 ? previewEntities[0].angle : this.placementWallLastAngle
|1334|1334| 		});
|1335|    |-	}
|    |1335|+	
|1336|1336| 
|1337|1337| 	if (end.pos)
|1338|1338| 	{
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1335|1335| 	}
|1336|1336| 
|1337|1337| 	if (end.pos)
|1338|    |-	{
|    |1338|+	
|1339|1339| 		// Analogous to the starting side case above
|1340|1340| 		if (end.snappedEnt && end.snappedEnt != INVALID_ENTITY)
|1341|1341| 		{
|1373|1373| 				"pos": end.pos,
|1374|1374| 				"angle": previewEntities.length > 0 ? previewEntities[previewEntities.length-1].angle : this.placementWallLastAngle
|1375|1375| 			});
|1376|    |-	}
|    |1376|+	
|1377|1377| 
|1378|1378| 	let cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain);
|1379|1379| 	if (!cmpTerrain)
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1551|1551| 
|1552|1552| 		let cmpVisual = Engine.QueryInterface(ent, IID_Visual);
|1553|1553| 		if (cmpVisual)
|1554|    |-		{
|    |1554|+		
|1555|1555| 			if (!allPiecesValid || !canAfford)
|1556|1556| 				cmpVisual.SetShadingColor(1.4, 0.4, 0.4, 1);
|1557|1557| 			else
|1558|1558| 				cmpVisual.SetShadingColor(1, 1, 1, 1);
|1559|    |-		}
|    |1559|+		
|1560|1560| 
|1561|1561| 		++entPool.numUsed;
|1562|1562| 	}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1625|1625| 			{
|1626|1626| 				minDist2 = dist2;
|1627|1627| 				minDistEntitySnapData = {
|1628|    |-						"x": pos.x,
|    |1628|+					"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1626|1626| 				minDist2 = dist2;
|1627|1627| 				minDistEntitySnapData = {
|1628|1628| 						"x": pos.x,
|1629|    |-						"z": pos.z,
|    |1629|+					"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|1632|1632| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1627|1627| 				minDistEntitySnapData = {
|1628|1628| 						"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|    |-						"angle": cmpPosition.GetRotation().y,
|    |1630|+					"angle": cmpPosition.GetRotation().y,
|1631|1631| 						"ent": ent
|1632|1632| 				};
|1633|1633| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1628|1628| 						"x": pos.x,
|1629|1629| 						"z": pos.z,
|1630|1630| 						"angle": cmpPosition.GetRotation().y,
|1631|    |-						"ent": ent
|    |1631|+					"ent": ent
|1632|1632| 				};
|1633|1633| 			}
|1634|1634| 		}
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1773|1773| 			result.gain = cmpEntityTrader.GetGoods().amount;
|1774|1774| 	}
|1775|1775| 	else if (data.target === secondMarket)
|1776|    |-	{
|    |1776|+	
|1777|1777| 		result = {
|1778|1778| 			"type": "is second",
|1779|1779| 			"gain": cmpEntityTrader.GetGoods().amount,
|1780|1780| 		};
|1781|    |-	}
|    |1781|+	
|1782|1782| 	else if (!firstMarket)
|1783|1783| 	{
|1784|1784| 		result = { "type": "set first" };
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1780|1780| 		};
|1781|1781| 	}
|1782|1782| 	else if (!firstMarket)
|1783|    |-	{
|    |1783|+	
|1784|1784| 		result = { "type": "set first" };
|1785|    |-	}
|    |1785|+	
|1786|1786| 	else if (!secondMarket)
|1787|1787| 	{
|1788|1788| 		result = {
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1784|1784| 		result = { "type": "set first" };
|1785|1785| 	}
|1786|1786| 	else if (!secondMarket)
|1787|    |-	{
|    |1787|+	
|1788|1788| 		result = {
|1789|1789| 			"type": "set second",
|1790|1790| 			"gain": cmpEntityTrader.CalculateGain(firstMarket, data.target),
|1791|1791| 		};
|1792|    |-	}
|    |1792|+	
|1793|1793| 	else
|1794|1794| 	{
|1795|1795| 		// Else both markets are not null and target is different from them
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1791|1791| 		};
|1792|1792| 	}
|1793|1793| 	else
|1794|    |-	{
|    |1794|+	
|1795|1795| 		// Else both markets are not null and target is different from them
|1796|1796| 		result = { "type": "set first" };
|1797|    |-	}
|    |1797|+	
|1798|1798| 	return result;
|1799|1799| };
|1800|1800| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 130| 130| 	this.formationMembersWithAura = []; // Members with a formation aura
| 131| 131| 	this.width = 0;
| 132| 132| 	this.depth = 0;
| 133|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 133|+	this.oldOrientation = { "sin": 0, "cos": 0};
| 134| 134| 	this.twinFormations = [];
| 135| 135| 	// distance from which two twin formations will merge into one.
| 136| 136| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 130| 130| 	this.formationMembersWithAura = []; // Members with a formation aura
| 131| 131| 	this.width = 0;
| 132| 132| 	this.depth = 0;
| 133|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 133|+	this.oldOrientation = {"sin": 0, "cos": 0 };
| 134| 134| 	this.twinFormations = [];
| 135| 135| 	// distance from which two twin formations will merge into one.
| 136| 136| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 148| 148| 
| 149| 149| Formation.prototype.GetSize = function()
| 150| 150| {
| 151|    |-	return {"width": this.width, "depth": this.depth};
|    | 151|+	return { "width": this.width, "depth": this.depth};
| 152| 152| };
| 153| 153| 
| 154| 154| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 148| 148| 
| 149| 149| Formation.prototype.GetSize = function()
| 150| 150| {
| 151|    |-	return {"width": this.width, "depth": this.depth};
|    | 151|+	return {"width": this.width, "depth": this.depth };
| 152| 152| };
| 153| 153| 
| 154| 154| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 566| 566| 			footprints.push(cmpFootprint.GetShape());
| 567| 567| 	}
| 568| 568| 	if (!footprints.length)
| 569|    |-		return {"width":1, "depth": 1};
|    | 569|+		return { "width":1, "depth": 1};
| 570| 570| 
| 571| 571| 	var r = {"width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'width'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 566| 566| 			footprints.push(cmpFootprint.GetShape());
| 567| 567| 	}
| 568| 568| 	if (!footprints.length)
| 569|    |-		return {"width":1, "depth": 1};
|    | 569|+		return {"width": 1, "depth": 1};
| 570| 570| 
| 571| 571| 	var r = {"width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 566| 566| 			footprints.push(cmpFootprint.GetShape());
| 567| 567| 	}
| 568| 568| 	if (!footprints.length)
| 569|    |-		return {"width":1, "depth": 1};
|    | 569|+		return {"width":1, "depth": 1 };
| 570| 570| 
| 571| 571| 	var r = {"width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 568| 568| 	if (!footprints.length)
| 569| 569| 		return {"width":1, "depth": 1};
| 570| 570| 
| 571|    |-	var r = {"width": 0, "depth": 0};
|    | 571|+	var r = { "width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
| 573| 573| 	{
| 574| 574| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 568| 568| 	if (!footprints.length)
| 569| 569| 		return {"width":1, "depth": 1};
| 570| 570| 
| 571|    |-	var r = {"width": 0, "depth": 0};
|    | 571|+	var r = {"width": 0, "depth": 0 };
| 572| 572| 	for (var shape of footprints)
| 573| 573| 	{
| 574| 574| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 570| 570| 
| 571| 571| 	var r = {"width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
| 573|    |-	{
|    | 573|+	
| 574| 574| 		if (shape.type == "circle")
| 575| 575| 		{
| 576| 576| 			r.width += shape.radius * 2;
| 581| 581| 			r.width += shape.width;
| 582| 582| 			r.depth += shape.depth;
| 583| 583| 		}
| 584|    |-	}
|    | 584|+	
| 585| 585| 	r.width /= footprints.length;
| 586| 586| 	r.depth /= footprints.length;
| 587| 587| 	return r;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 594| 594| 	separation.depth *= this.separationMultiplier.depth;
| 595| 595| 
| 596| 596| 	if (this.columnar)
| 597|    |-		var sortingClasses = ["Cavalry","Infantry"];
|    | 597|+		var sortingClasses = ["Cavalry", "Infantry"];
| 598| 598| 	else
| 599| 599| 		var sortingClasses = this.sortingClasses.slice();
| 600| 600| 	sortingClasses.push("Unknown");
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 611| 611| 		var classes = cmpIdentity.GetClassesList();
| 612| 612| 		var done = false;
| 613| 613| 		for (var c = 0; c < sortingClasses.length; ++c)
| 614|    |-		{
|    | 614|+		
| 615| 615| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 616| 616| 			{
| 617| 617| 				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
| 618| 618| 				done = true;
| 619| 619| 				break;
| 620| 620| 			}
| 621|    |-		}
|    | 621|+		
| 622| 622| 		if (!done)
| 623| 623| 			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
| 624| 624| 	}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 614| 614| 		{
| 615| 615| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 616| 616| 			{
| 617|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 617|+				types[sortingClasses[c]].push({ "ent": active[i], "pos": positions[i]});
| 618| 618| 				done = true;
| 619| 619| 				break;
| 620| 620| 			}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 614| 614| 		{
| 615| 615| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 616| 616| 			{
| 617|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 617|+				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i] });
| 618| 618| 				done = true;
| 619| 619| 				break;
| 620| 620| 			}
|    | [NORMAL] ESLintBear (dot-notation):
|    | ["Unknown"] is better written in dot notation.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 620| 620| 			}
| 621| 621| 		}
| 622| 622| 		if (!done)
| 623|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 623|+			types.Unknown.push({"ent": active[i], "pos": positions[i]});
| 624| 624| 	}
| 625| 625| 
| 626| 626| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 620| 620| 			}
| 621| 621| 		}
| 622| 622| 		if (!done)
| 623|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 623|+			types["Unknown"].push({ "ent": active[i], "pos": positions[i]});
| 624| 624| 	}
| 625| 625| 
| 626| 626| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 620| 620| 			}
| 621| 621| 		}
| 622| 622| 		if (!done)
| 623|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 623|+			types["Unknown"].push({"ent": active[i], "pos": positions[i] });
| 624| 624| 	}
| 625| 625| 
| 626| 626| 	var count = active.length;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 638| 638| 	if (this.columnar)
| 639| 639| 	{
| 640| 640| 		shape = "square";
| 641|    |-		cols = Math.min(count,3);
|    | 641|+		cols = Math.min(count, 3);
| 642| 642| 		shiftRows = false;
| 643| 643| 		centerGap = 0;
| 644| 644| 		sortingOrder = null;
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 692| 692| 					n -= r%2;
| 693| 693| 			}
| 694| 694| 			else if (shape == "triangle")
| 695|    |-			{
|    | 695|+			
| 696| 696| 				if (shiftRows)
| 697| 697| 					var n = r + 1;
| 698| 698| 				else
| 699| 699| 					var n = r * 2 + 1;
| 700|    |-			}
|    | 700|+			
| 701| 701| 			if (!shiftRows && n > left)
| 702| 702| 				n = left;
| 703| 703| 			for (var c = 0; c < n && left > 0; ++c)
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 733| 733| 	// calculating offset distances without a zero average makes no sense, as the formation
| 734| 734| 	// will jump to a different position any time
| 735| 735| 	var avgoffset = Vector2D.average(offsets);
| 736|    |-	offsets.forEach(function (o) {o.sub(avgoffset);});
|    | 736|+	offsets.forEach(function(o) {o.sub(avgoffset);});
| 737| 737| 
| 738| 738| 	// sort the available places in certain ways
| 739| 739| 	// the places first in the list will contain the heaviest units as defined by the order
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 792| 792| 			closestOffsetId = i;
| 793| 793| 		}
| 794| 794| 	}
| 795|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 795|+	this.memberPositions[entPos.ent] = { "row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
| 796| 796| 	return closestOffsetId;
| 797| 797| };
| 798| 798| 
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'column'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 792| 792| 			closestOffsetId = i;
| 793| 793| 		}
| 794| 794| 	}
| 795|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 795|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column": offsets[closestOffsetId].column};
| 796| 796| 	return closestOffsetId;
| 797| 797| };
| 798| 798| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 792| 792| 			closestOffsetId = i;
| 793| 793| 		}
| 794| 794| 	}
| 795|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 795|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column };
| 796| 796| 	return closestOffsetId;
| 797| 797| };
| 798| 798| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 802| 802| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 803| 803| {
| 804| 804| 	var offsetPositions = [];
| 805|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 805|+	var { sin, cos} = this.GetEstimatedOrientation(pos);
| 806| 806| 	// calculate the world positions
| 807| 807| 	for (var o of offsets)
| 808| 808| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 802| 802| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 803| 803| {
| 804| 804| 	var offsetPositions = [];
| 805|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 805|+	var {sin, cos } = this.GetEstimatedOrientation(pos);
| 806| 806| 	// calculate the world positions
| 807| 807| 	for (var o of offsets)
| 808| 808| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 819| 819| Formation.prototype.GetEstimatedOrientation = function(pos)
| 820| 820| {
| 821| 821| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 822|    |-	var r = {"sin": 0, "cos": 1};
|    | 822|+	var r = { "sin": 0, "cos": 1};
| 823| 823| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 824| 824| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 825| 825| 	{
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 819| 819| Formation.prototype.GetEstimatedOrientation = function(pos)
| 820| 820| {
| 821| 821| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 822|    |-	var r = {"sin": 0, "cos": 1};
|    | 822|+	var r = {"sin": 0, "cos": 1 };
| 823| 823| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 824| 824| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 825| 825| 	{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 901| 901| 		cmpOtherFormation.RemoveMembers(otherMembers);
| 902| 902| 		this.AddMembers(otherMembers);
| 903| 903| 		Engine.DestroyEntity(this.twinFormations[i]);
| 904|    |-		this.twinFormations.splice(i,1);
|    | 904|+		this.twinFormations.splice(i, 1);
| 905| 905| 	}
| 906| 906| 	// Switch between column and box if necessary
| 907| 907| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);

binaries/data/mods/public/simulation/components/Formation.js
| 425| »   for·(var·ent·of·this.formationMembersWithAura)
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 471| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 512| »   »   var·cmpUnitAI·=·Engine.QueryInterface(offset.ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 547| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 599| »   »   var·sortingClasses·=·this.sortingClasses.slice();
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 608| »   for·(var·i·in·active)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 623| »   »   »   types["Unknown"].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | ['Unknown'] is better written in dot notation.

binaries/data/mods/public/simulation/components/Formation.js
| 663| »   »   for·(var·i·=·0;·i·<·count;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 697| »   »   »   »   »   var·n·=·r·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 699| »   »   »   »   »   var·n·=·r·*·2·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'c' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 710| »   »   »   »   »   var·x·=·side·*·Math.ceil(c/2)·*·separation.width;
|    | [NORMAL] JSHintBear:
|    | 'x' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 713| »   »   »   »   »   if·(x·==·0)·//·don't·use·the·center·position·with·a·center·gap
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 715| »   »   »   »   »   x·+=·side·*·centerGap·/·2;
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 721| »   »   »   »   offsets.push(new·Vector2D(x·+·r1,·z·+·r2));
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 701| »   »   »   if·(!shiftRows·&&·n·>·left)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 702| »   »   »   »   n·=·left;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 707| »   »   »   »   if·(n%2·==·0)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 717| »   »   »   »   var·column·=·Math.ceil(n/2)·+·Math.ceil(c/2)·*·side;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 727| »   »   »   this.maxColumnsUsed[r]·=·n;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 756| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 600| »   sortingClasses.push("Unknown");
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 605| »   for·(var·i·=·0;·i·<·sortingClasses.length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 606| »   »   types[sortingClasses[i]]·=·[];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 613| »   »   for·(var·c·=·0;·c·<·sortingClasses.length;·++c)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 615| »   »   »   if·(classes.indexOf(sortingClasses[c])·>·-1)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 617| »   »   »   »   types[sortingClasses[c]].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 756| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 758| »   »   var·t·=·types[sortingClasses[i-1]];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 863| »   var·cmpUnitMotion·=·Engine.QueryInterface(this.entity,·IID_UnitMotion);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitMotion' is already defined.
Executing section cli...

Link to build: https://jenkins.wildfiregames.com/job/differential/1200/display/redirect

bb added inline comments.May 31 2019, 1:56 PM
binaries/data/mods/public/gui/session/selection_panels.js
300

Just wondering, wouldnt it be better to only return those formations in which some unit of the selection can participate, i.e. if you have only infantry selected, that the wedge is not visible, but once you also select one cav you get the wedge aswell. However maybe having all of them listed for all units that can use a formation might be easier for players, dunno

i.e. return g_AvailableFormations.get(unitEntStates[0].player).filter(formation => unitEntStates.some(state => state.identity.formations.indexOf(formation) != -1)) where state.identity.formations is the FormationList in retrievable in the identity component. This would then also nuke the check above and the state.identity.canUseSomeFormation allocation

binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
546

spaces

binaries/data/mods/public/simulation/templates/special/formations/null.xml
6

use spaces in xml instead of tabs

Angen updated this revision to Diff 8291.Jun 3 2019, 2:28 PM

do not display formation when no unit is allowed to use it
(leaving older checks so it would be easier to revert if this would be rejected)

Vulcan added a comment.Jun 3 2019, 3:24 PM

Build failure - The Moirai have given mortals hearts that can endure.

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 130| 130| 	this.formationMembersWithAura = []; // Members with a formation aura
| 131| 131| 	this.width = 0;
| 132| 132| 	this.depth = 0;
| 133|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 133|+	this.oldOrientation = { "sin": 0, "cos": 0};
| 134| 134| 	this.twinFormations = [];
| 135| 135| 	// distance from which two twin formations will merge into one.
| 136| 136| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 130| 130| 	this.formationMembersWithAura = []; // Members with a formation aura
| 131| 131| 	this.width = 0;
| 132| 132| 	this.depth = 0;
| 133|    |-	this.oldOrientation = {"sin": 0, "cos": 0};
|    | 133|+	this.oldOrientation = {"sin": 0, "cos": 0 };
| 134| 134| 	this.twinFormations = [];
| 135| 135| 	// distance from which two twin formations will merge into one.
| 136| 136| 	this.formationSeparation = 0;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 148| 148| 
| 149| 149| Formation.prototype.GetSize = function()
| 150| 150| {
| 151|    |-	return {"width": this.width, "depth": this.depth};
|    | 151|+	return { "width": this.width, "depth": this.depth};
| 152| 152| };
| 153| 153| 
| 154| 154| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 148| 148| 
| 149| 149| Formation.prototype.GetSize = function()
| 150| 150| {
| 151|    |-	return {"width": this.width, "depth": this.depth};
|    | 151|+	return {"width": this.width, "depth": this.depth };
| 152| 152| };
| 153| 153| 
| 154| 154| Formation.prototype.GetSpeedMultiplier = function()
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 566| 566| 			footprints.push(cmpFootprint.GetShape());
| 567| 567| 	}
| 568| 568| 	if (!footprints.length)
| 569|    |-		return {"width":1, "depth": 1};
|    | 569|+		return { "width":1, "depth": 1};
| 570| 570| 
| 571| 571| 	var r = {"width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'width'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 566| 566| 			footprints.push(cmpFootprint.GetShape());
| 567| 567| 	}
| 568| 568| 	if (!footprints.length)
| 569|    |-		return {"width":1, "depth": 1};
|    | 569|+		return {"width": 1, "depth": 1};
| 570| 570| 
| 571| 571| 	var r = {"width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 566| 566| 			footprints.push(cmpFootprint.GetShape());
| 567| 567| 	}
| 568| 568| 	if (!footprints.length)
| 569|    |-		return {"width":1, "depth": 1};
|    | 569|+		return {"width":1, "depth": 1 };
| 570| 570| 
| 571| 571| 	var r = {"width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 568| 568| 	if (!footprints.length)
| 569| 569| 		return {"width":1, "depth": 1};
| 570| 570| 
| 571|    |-	var r = {"width": 0, "depth": 0};
|    | 571|+	var r = { "width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
| 573| 573| 	{
| 574| 574| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 568| 568| 	if (!footprints.length)
| 569| 569| 		return {"width":1, "depth": 1};
| 570| 570| 
| 571|    |-	var r = {"width": 0, "depth": 0};
|    | 571|+	var r = {"width": 0, "depth": 0 };
| 572| 572| 	for (var shape of footprints)
| 573| 573| 	{
| 574| 574| 		if (shape.type == "circle")
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for-of'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 570| 570| 
| 571| 571| 	var r = {"width": 0, "depth": 0};
| 572| 572| 	for (var shape of footprints)
| 573|    |-	{
|    | 573|+	
| 574| 574| 		if (shape.type == "circle")
| 575| 575| 		{
| 576| 576| 			r.width += shape.radius * 2;
| 581| 581| 			r.width += shape.width;
| 582| 582| 			r.depth += shape.depth;
| 583| 583| 		}
| 584|    |-	}
|    | 584|+	
| 585| 585| 	r.width /= footprints.length;
| 586| 586| 	r.depth /= footprints.length;
| 587| 587| 	return r;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 594| 594| 	separation.depth *= this.separationMultiplier.depth;
| 595| 595| 
| 596| 596| 	if (this.columnar)
| 597|    |-		var sortingClasses = ["Cavalry","Infantry"];
|    | 597|+		var sortingClasses = ["Cavalry", "Infantry"];
| 598| 598| 	else
| 599| 599| 		var sortingClasses = this.sortingClasses.slice();
| 600| 600| 	sortingClasses.push("Unknown");
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'for' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 611| 611| 		var classes = cmpIdentity.GetClassesList();
| 612| 612| 		var done = false;
| 613| 613| 		for (var c = 0; c < sortingClasses.length; ++c)
| 614|    |-		{
|    | 614|+		
| 615| 615| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 616| 616| 			{
| 617| 617| 				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
| 618| 618| 				done = true;
| 619| 619| 				break;
| 620| 620| 			}
| 621|    |-		}
|    | 621|+		
| 622| 622| 		if (!done)
| 623| 623| 			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
| 624| 624| 	}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 614| 614| 		{
| 615| 615| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 616| 616| 			{
| 617|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 617|+				types[sortingClasses[c]].push({ "ent": active[i], "pos": positions[i]});
| 618| 618| 				done = true;
| 619| 619| 				break;
| 620| 620| 			}
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 614| 614| 		{
| 615| 615| 			if (classes.indexOf(sortingClasses[c]) > -1)
| 616| 616| 			{
| 617|    |-				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i]});
|    | 617|+				types[sortingClasses[c]].push({"ent": active[i], "pos": positions[i] });
| 618| 618| 				done = true;
| 619| 619| 				break;
| 620| 620| 			}
|    | [NORMAL] ESLintBear (dot-notation):
|    | ["Unknown"] is better written in dot notation.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 620| 620| 			}
| 621| 621| 		}
| 622| 622| 		if (!done)
| 623|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 623|+			types.Unknown.push({"ent": active[i], "pos": positions[i]});
| 624| 624| 	}
| 625| 625| 
| 626| 626| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 620| 620| 			}
| 621| 621| 		}
| 622| 622| 		if (!done)
| 623|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 623|+			types["Unknown"].push({ "ent": active[i], "pos": positions[i]});
| 624| 624| 	}
| 625| 625| 
| 626| 626| 	var count = active.length;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 620| 620| 			}
| 621| 621| 		}
| 622| 622| 		if (!done)
| 623|    |-			types["Unknown"].push({"ent": active[i], "pos": positions[i]});
|    | 623|+			types["Unknown"].push({"ent": active[i], "pos": positions[i] });
| 624| 624| 	}
| 625| 625| 
| 626| 626| 	var count = active.length;
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 638| 638| 	if (this.columnar)
| 639| 639| 	{
| 640| 640| 		shape = "square";
| 641|    |-		cols = Math.min(count,3);
|    | 641|+		cols = Math.min(count, 3);
| 642| 642| 		shiftRows = false;
| 643| 643| 		centerGap = 0;
| 644| 644| 		sortingOrder = null;
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 692| 692| 					n -= r%2;
| 693| 693| 			}
| 694| 694| 			else if (shape == "triangle")
| 695|    |-			{
|    | 695|+			
| 696| 696| 				if (shiftRows)
| 697| 697| 					var n = r + 1;
| 698| 698| 				else
| 699| 699| 					var n = r * 2 + 1;
| 700|    |-			}
|    | 700|+			
| 701| 701| 			if (!shiftRows && n > left)
| 702| 702| 				n = left;
| 703| 703| 			for (var c = 0; c < n && left > 0; ++c)
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 733| 733| 	// calculating offset distances without a zero average makes no sense, as the formation
| 734| 734| 	// will jump to a different position any time
| 735| 735| 	var avgoffset = Vector2D.average(offsets);
| 736|    |-	offsets.forEach(function (o) {o.sub(avgoffset);});
|    | 736|+	offsets.forEach(function(o) {o.sub(avgoffset);});
| 737| 737| 
| 738| 738| 	// sort the available places in certain ways
| 739| 739| 	// the places first in the list will contain the heaviest units as defined by the order
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 792| 792| 			closestOffsetId = i;
| 793| 793| 		}
| 794| 794| 	}
| 795|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 795|+	this.memberPositions[entPos.ent] = { "row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
| 796| 796| 	return closestOffsetId;
| 797| 797| };
| 798| 798| 
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'column'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 792| 792| 			closestOffsetId = i;
| 793| 793| 		}
| 794| 794| 	}
| 795|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 795|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column": offsets[closestOffsetId].column};
| 796| 796| 	return closestOffsetId;
| 797| 797| };
| 798| 798| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 792| 792| 			closestOffsetId = i;
| 793| 793| 		}
| 794| 794| 	}
| 795|    |-	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column};
|    | 795|+	this.memberPositions[entPos.ent] = {"row": offsets[closestOffsetId].row, "column":offsets[closestOffsetId].column };
| 796| 796| 	return closestOffsetId;
| 797| 797| };
| 798| 798| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 802| 802| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 803| 803| {
| 804| 804| 	var offsetPositions = [];
| 805|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 805|+	var { sin, cos} = this.GetEstimatedOrientation(pos);
| 806| 806| 	// calculate the world positions
| 807| 807| 	for (var o of offsets)
| 808| 808| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 802| 802| Formation.prototype.GetRealOffsetPositions = function(offsets, pos)
| 803| 803| {
| 804| 804| 	var offsetPositions = [];
| 805|    |-	var {sin, cos} = this.GetEstimatedOrientation(pos);
|    | 805|+	var {sin, cos } = this.GetEstimatedOrientation(pos);
| 806| 806| 	// calculate the world positions
| 807| 807| 	for (var o of offsets)
| 808| 808| 		offsetPositions.push(new Vector2D(pos.x + o.y * sin + o.x * cos, pos.y + o.y * cos - o.x * sin));
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 819| 819| Formation.prototype.GetEstimatedOrientation = function(pos)
| 820| 820| {
| 821| 821| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 822|    |-	var r = {"sin": 0, "cos": 1};
|    | 822|+	var r = { "sin": 0, "cos": 1};
| 823| 823| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 824| 824| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 825| 825| 	{
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 819| 819| Formation.prototype.GetEstimatedOrientation = function(pos)
| 820| 820| {
| 821| 821| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
| 822|    |-	var r = {"sin": 0, "cos": 1};
|    | 822|+	var r = {"sin": 0, "cos": 1 };
| 823| 823| 	var unitAIState = cmpUnitAI.GetCurrentState();
| 824| 824| 	if (unitAIState == "FORMATIONCONTROLLER.WALKING" || unitAIState == "FORMATIONCONTROLLER.COMBAT.APPROACHING")
| 825| 825| 	{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Formation.js
| 901| 901| 		cmpOtherFormation.RemoveMembers(otherMembers);
| 902| 902| 		this.AddMembers(otherMembers);
| 903| 903| 		Engine.DestroyEntity(this.twinFormations[i]);
| 904|    |-		this.twinFormations.splice(i,1);
|    | 904|+		this.twinFormations.splice(i, 1);
| 905| 905| 	}
| 906| 906| 	// Switch between column and box if necessary
| 907| 907| 	var cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);

binaries/data/mods/public/simulation/components/Formation.js
| 425| »   for·(var·ent·of·this.formationMembersWithAura)
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 471| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 512| »   »   var·cmpUnitAI·=·Engine.QueryInterface(offset.ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 547| »   var·cmpPosition·=·Engine.QueryInterface(this.entity,·IID_Position);
|    | [NORMAL] JSHintBear:
|    | 'cmpPosition' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 599| »   »   var·sortingClasses·=·this.sortingClasses.slice();
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 608| »   for·(var·i·in·active)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 623| »   »   »   types["Unknown"].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | ['Unknown'] is better written in dot notation.

binaries/data/mods/public/simulation/components/Formation.js
| 663| »   »   for·(var·i·=·0;·i·<·count;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 697| »   »   »   »   »   var·n·=·r·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 699| »   »   »   »   »   var·n·=·r·*·2·+·1;
|    | [NORMAL] JSHintBear:
|    | 'n' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'c' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 710| »   »   »   »   »   var·x·=·side·*·Math.ceil(c/2)·*·separation.width;
|    | [NORMAL] JSHintBear:
|    | 'x' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 713| »   »   »   »   »   if·(x·==·0)·//·don't·use·the·center·position·with·a·center·gap
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 715| »   »   »   »   »   x·+=·side·*·centerGap·/·2;
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 721| »   »   »   »   offsets.push(new·Vector2D(x·+·r1,·z·+·r2));
|    | [NORMAL] JSHintBear:
|    | 'x' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 701| »   »   »   if·(!shiftRows·&&·n·>·left)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 702| »   »   »   »   n·=·left;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 703| »   »   »   for·(var·c·=·0;·c·<·n·&&·left·>·0;·++c)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 707| »   »   »   »   if·(n%2·==·0)
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 717| »   »   »   »   var·column·=·Math.ceil(n/2)·+·Math.ceil(c/2)·*·side;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 727| »   »   »   this.maxColumnsUsed[r]·=·n;
|    | [NORMAL] JSHintBear:
|    | 'n' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 756| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

binaries/data/mods/public/simulation/components/Formation.js
| 600| »   sortingClasses.push("Unknown");
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 605| »   for·(var·i·=·0;·i·<·sortingClasses.length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 606| »   »   types[sortingClasses[i]]·=·[];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 613| »   »   for·(var·c·=·0;·c·<·sortingClasses.length;·++c)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 615| »   »   »   if·(classes.indexOf(sortingClasses[c])·>·-1)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 617| »   »   »   »   types[sortingClasses[c]].push({"ent":·active[i],·"pos":·positions[i]});
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 756| »   for·(var·i·=·sortingClasses.length;·i;·--i)
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 758| »   »   var·t·=·types[sortingClasses[i-1]];
|    | [NORMAL] JSHintBear:
|    | 'sortingClasses' used out of scope.

binaries/data/mods/public/simulation/components/Formation.js
| 863| »   var·cmpUnitMotion·=·Engine.QueryInterface(this.entity,·IID_UnitMotion);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitMotion' is already defined.
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 449| 449| 				continue;
| 450| 450| 
| 451| 451| 			if (state.pack.progress == 0)
| 452|    |-			{
|    | 452|+			
| 453| 453| 				if (state.pack.packed)
| 454| 454| 					checks.unpackButton = true;
| 455| 455| 				else
| 456| 456| 					checks.packButton = true;
| 457|    |-			}
|    | 457|+			
| 458| 458| 			else if (state.pack.packed)
| 459| 459| 				checks.unpackCancelButton = true;
| 460| 460| 			else
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 760| 760| 				addResearchToQueue(data.item.researchFacilityId, t);
| 761| 761| 			})(tech);
| 762| 762| 
| 763|    |-			button.onPressRight = (t => function () {
|    | 763|+			button.onPressRight = (t => function() {
| 764| 764| 				showTemplateDetails(
| 765| 765| 					t,
| 766| 766| 					GetTemplateData(data.unitEntStates.find(state => state.id == data.item.researchFacilityId).template).nativeCiv);
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/gui/session/selection_panels.js
| 938| 938| 			"player": data.player
| 939| 939| 		});
| 940| 940| 
| 941|    |-		let unitIds = data.unitEntStates.map(status => status.id)
|    | 941|+		let unitIds = data.unitEntStates.map(status => status.id);
| 942| 942| 		let [buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch] =
| 943| 943| 			getTrainingStatus(unitIds, data.item, data.playerState);
| 944| 944| 

binaries/data/mods/public/gui/session/selection_panels.js
|  48| »   »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
|  59| »   »   switch·(data.item)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 728| »   »   »   »   »   »   switch·(entity.check)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/selection_panels.js
| 941| »   »   let·unitIds·=·data.unitEntStates.map(status·=>·status.id)
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|  98|  98| 	this.canUseSomeFormation = this.GetFormationsList().length > 0;
|  99|  99| };
| 100| 100| 
| 101|    |-Identity.prototype.Deserialize = function ()
|    | 101|+Identity.prototype.Deserialize = function()
| 102| 102| {
| 103| 103| 	this.Init();
| 104| 104| };
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/Identity.js
| 108| 108| Identity.prototype.CanUseSomeFormation = function()
| 109| 109| {
| 110| 110| 	return this.canUseSomeFormation;
| 111|    |-}
|    | 111|+};
| 112| 112| 
| 113| 113| Identity.prototype.GetCiv = function()
| 114| 114| {

binaries/data/mods/public/simulation/components/Identity.js
| 111| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|  66|  66| 		let phase = "";
|  67|  67| 		let cmpTechnologyManager = QueryPlayerIDInterface(i, IID_TechnologyManager);
|  68|  68| 		if (cmpTechnologyManager)
|  69|    |-		{
|    |  69|+		
|  70|  70| 			if (cmpTechnologyManager.IsTechnologyResearched("phase_city"))
|  71|  71| 				phase = "city";
|  72|  72| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_town"))
|  73|  73| 				phase = "town";
|  74|  74| 			else if (cmpTechnologyManager.IsTechnologyResearched("phase_village"))
|  75|  75| 				phase = "village";
|  76|    |-		}
|    |  76|+		
|  77|  77| 
|  78|  78| 		// store player ally/neutral/enemy data as arrays
|  79|  79| 		let allies = [];
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 412| 412| 			ret.attack[type].elevationBonus = range.elevationBonus;
| 413| 413| 
| 414| 414| 			if (cmpUnitAI && cmpPosition && cmpPosition.IsInWorld())
| 415|    |-			{
|    | 415|+			
| 416| 416| 				// For units, take the range in front of it, no spread. So angle = 0
| 417| 417| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 418|    |-			}
|    | 418|+			
| 419| 419| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 420| 420| 			{
| 421| 421| 				// For buildings, take the average elevation around it. So angle = 2*pi
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 417| 417| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0);
| 418| 418| 			}
| 419| 419| 			else if(cmpPosition && cmpPosition.IsInWorld())
| 420|    |-			{
|    | 420|+			
| 421| 421| 				// For buildings, take the average elevation around it. So angle = 2*pi
| 422| 422| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 423|    |-			}
|    | 423|+			
| 424| 424| 			else
| 425| 425| 			{
| 426| 426| 				// not in world, set a default?
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 422| 422| 				ret.attack[type].elevationAdaptedRange = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI);
| 423| 423| 			}
| 424| 424| 			else
| 425|    |-			{
|    | 425|+			
| 426| 426| 				// not in world, set a default?
| 427| 427| 				ret.attack[type].elevationAdaptedRange = ret.attack.maxRange;
| 428|    |-			}
|    | 428|+			
| 429| 429| 		}
| 430| 430| 	}
| 431| 431| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
| 793| 793| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 794| 794| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 795| 795| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 796|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 796|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 797| 797| 	}
| 798| 798| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 799| 799| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1312|1312| 		}
|1313|1313| 	}
|1314|1314| 	else
|1315|    |-	{
|    |1315|+	
|1316|1316| 		// Didn't snap to an existing entity, add the starting tower manually. To prevent odd-looking rotation jumps
|1317|1317| 		// when shift-clicking to build a wall, reuse the placement angle that was last seen on a validly positioned
|1318|1318| 		// wall piece.
|1333|1333| 			"pos": start.pos,
|1334|1334| 			"angle": previewEntities.length > 0 ? previewEntities[0].angle : this.placementWallLastAngle
|1335|1335| 		});
|1336|    |-	}
|    |1336|+	
|1337|1337| 
|1338|1338| 	if (end.pos)
|1339|1339| 	{
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1336|1336| 	}
|1337|1337| 
|1338|1338| 	if (end.pos)
|1339|    |-	{
|    |1339|+	
|1340|1340| 		// Analogous to the starting side case above
|1341|1341| 		if (end.snappedEnt && end.snappedEnt != INVALID_ENTITY)
|1342|1342| 		{
|1374|1374| 				"pos": end.pos,
|1375|1375| 				"angle": previewEntities.length > 0 ? previewEntities[previewEntities.length-1].angle : this.placementWallLastAngle
|1376|1376| 			});
|1377|    |-	}
|    |1377|+	
|1378|1378| 
|1379|1379| 	let cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain);
|1380|1380| 	if (!cmpTerrain)
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1552|1552| 
|1553|1553| 		let cmpVisual = Engine.QueryInterface(ent, IID_Visual);
|1554|1554| 		if (cmpVisual)
|1555|    |-		{
|    |1555|+		
|1556|1556| 			if (!allPiecesValid || !canAfford)
|1557|1557| 				cmpVisual.SetShadingColor(1.4, 0.4, 0.4, 1);
|1558|1558| 			else
|1559|1559| 				cmpVisual.SetShadingColor(1, 1, 1, 1);
|1560|    |-		}
|    |1560|+		
|1561|1561| 
|1562|1562| 		++entPool.numUsed;
|1563|1563| 	}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1626|1626| 			{
|1627|1627| 				minDist2 = dist2;
|1628|1628| 				minDistEntitySnapData = {
|1629|    |-						"x": pos.x,
|    |1629|+					"x": pos.x,
|1630|1630| 						"z": pos.z,
|1631|1631| 						"angle": cmpPosition.GetRotation().y,
|1632|1632| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1627|1627| 				minDist2 = dist2;
|1628|1628| 				minDistEntitySnapData = {
|1629|1629| 						"x": pos.x,
|1630|    |-						"z": pos.z,
|    |1630|+					"z": pos.z,
|1631|1631| 						"angle": cmpPosition.GetRotation().y,
|1632|1632| 						"ent": ent
|1633|1633| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1628|1628| 				minDistEntitySnapData = {
|1629|1629| 						"x": pos.x,
|1630|1630| 						"z": pos.z,
|1631|    |-						"angle": cmpPosition.GetRotation().y,
|    |1631|+					"angle": cmpPosition.GetRotation().y,
|1632|1632| 						"ent": ent
|1633|1633| 				};
|1634|1634| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1629|1629| 						"x": pos.x,
|1630|1630| 						"z": pos.z,
|1631|1631| 						"angle": cmpPosition.GetRotation().y,
|1632|    |-						"ent": ent
|    |1632|+					"ent": ent
|1633|1633| 				};
|1634|1634| 			}
|1635|1635| 		}
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1774|1774| 			result.gain = cmpEntityTrader.GetGoods().amount;
|1775|1775| 	}
|1776|1776| 	else if (data.target === secondMarket)
|1777|    |-	{
|    |1777|+	
|1778|1778| 		result = {
|1779|1779| 			"type": "is second",
|1780|1780| 			"gain": cmpEntityTrader.GetGoods().amount,
|1781|1781| 		};
|1782|    |-	}
|    |1782|+	
|1783|1783| 	else if (!firstMarket)
|1784|1784| 	{
|1785|1785| 		result = { "type": "set first" };
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1781|1781| 		};
|1782|1782| 	}
|1783|1783| 	else if (!firstMarket)
|1784|    |-	{
|    |1784|+	
|1785|1785| 		result = { "type": "set first" };
|1786|    |-	}
|    |1786|+	
|1787|1787| 	else if (!secondMarket)
|1788|1788| 	{
|1789|1789| 		result = {
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'if' condition.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1785|1785| 		result = { "type": "set first" };
|1786|1786| 	}
|1787|1787| 	else if (!secondMarket)
|1788|    |-	{
|    |1788|+	
|1789|1789| 		result = {
|1790|1790| 			"type": "set second",
|1791|1791| 			"gain": cmpEntityTrader.CalculateGain(firstMarket, data.target),
|1792|1792| 		};
|1793|    |-	}
|    |1793|+	
|1794|1794| 	else
|1795|1795| 	{
|1796|1796| 		// Else both markets are not null and target is different from them
|    | [NORMAL] ESLintBear (curly):
|    | Unnecessary { after 'else'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/GuiInterface.js
|1792|1792| 		};
|1793|1793| 	}
|1794|1794| 	else
|1795|    |-	{
|    |1795|+	
|1796|1796| 		// Else both markets are not null and target is different from them
|1797|1797| 		result = { "type": "set first" };
|1798|    |-	}
|    |1798|+	
|1799|1799| 	return result;
|1800|1800| };
|1801|1801| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 3.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  47|  47| 	"GetResource": resource => ({
|  48|  48| 		"aiAnalysisInfluenceGroup":
|  49|  49| 			resource == "food" ? "ignore" :
|  50|    |-			resource == "wood" ? "abundant" : "sparse"
|    |  50|+				resource == "wood" ? "abundant" : "sparse"
|  51|  51| 	})
|  52|  52| };
|  53|  53| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPrices' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  55|  55| 
|  56|  56| 
|  57|  57| AddMock(SYSTEM_ENTITY, IID_Barter, {
|  58|    |-	GetPrices: function() {
|    |  58|+	"GetPrices": function() {
|  59|  59| 		return {
|  60|  60| 			"buy": { "food": 150 },
|  61|  61| 			"sell": { "food": 25 }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'PlayerHasMarket' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  61|  61| 			"sell": { "food": 25 }
|  62|  62| 		};
|  63|  63| 	},
|  64|    |-	PlayerHasMarket: function () { return false; }
|    |  64|+	"PlayerHasMarket": function () { return false; }
|  65|  65| });
|  66|  66| 
|  67|  67| AddMock(SYSTEM_ENTITY, IID_EndGameManager, {
|    | [NORMAL] ESLintBear (space-before-function-paren):
|    | Unexpected space before function parentheses.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  61|  61| 			"sell": { "food": 25 }
|  62|  62| 		};
|  63|  63| 	},
|  64|    |-	PlayerHasMarket: function () { return false; }
|    |  64|+	PlayerHasMarket: function() { return false; }
|  65|  65| });
|  66|  66| 
|  67|  67| AddMock(SYSTEM_ENTITY, IID_EndGameManager, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetVictoryConditions' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  65|  65| });
|  66|  66| 
|  67|  67| AddMock(SYSTEM_ENTITY, IID_EndGameManager, {
|  68|    |-	GetVictoryConditions: () => ["conquest", "wonder"],
|    |  68|+	"GetVictoryConditions": () => ["conquest", "wonder"],
|  69|  69| 	GetAlliedVictory: function() { return false; }
|  70|  70| });
|  71|  71| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetAlliedVictory' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  66|  66| 
|  67|  67| AddMock(SYSTEM_ENTITY, IID_EndGameManager, {
|  68|  68| 	GetVictoryConditions: () => ["conquest", "wonder"],
|  69|    |-	GetAlliedVictory: function() { return false; }
|    |  69|+	"GetAlliedVictory": function() { return false; }
|  70|  70| });
|  71|  71| 
|  72|  72| AddMock(SYSTEM_ENTITY, IID_PlayerManager, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetNumPlayers' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  70|  70| });
|  71|  71| 
|  72|  72| AddMock(SYSTEM_ENTITY, IID_PlayerManager, {
|  73|    |-	GetNumPlayers: function() { return 2; },
|    |  73|+	"GetNumPlayers": function() { return 2; },
|  74|  74| 	GetPlayerByID: function(id) { TS_ASSERT(id === 0 || id === 1); return 100+id; }
|  75|  75| });
|  76|  76| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPlayerByID' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  71|  71| 
|  72|  72| AddMock(SYSTEM_ENTITY, IID_PlayerManager, {
|  73|  73| 	GetNumPlayers: function() { return 2; },
|  74|    |-	GetPlayerByID: function(id) { TS_ASSERT(id === 0 || id === 1); return 100+id; }
|    |  74|+	"GetPlayerByID": function(id) { TS_ASSERT(id === 0 || id === 1); return 100+id; }
|  75|  75| });
|  76|  76| 
|  77|  77| AddMock(SYSTEM_ENTITY, IID_RangeManager, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLosVisibility' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  75|  75| });
|  76|  76| 
|  77|  77| AddMock(SYSTEM_ENTITY, IID_RangeManager, {
|  78|    |-	GetLosVisibility: function(ent, player) { return "visible"; },
|    |  78|+	"GetLosVisibility": function(ent, player) { return "visible"; },
|  79|  79| 	GetLosCircular: function() { return false; }
|  80|  80| });
|  81|  81| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLosCircular' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  76|  76| 
|  77|  77| AddMock(SYSTEM_ENTITY, IID_RangeManager, {
|  78|  78| 	GetLosVisibility: function(ent, player) { return "visible"; },
|  79|    |-	GetLosCircular: function() { return false; }
|    |  79|+	"GetLosCircular": function() { return false; }
|  80|  80| });
|  81|  81| 
|  82|  82| AddMock(SYSTEM_ENTITY, IID_TemplateManager, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCurrentTemplateName' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  80|  80| });
|  81|  81| 
|  82|  82| AddMock(SYSTEM_ENTITY, IID_TemplateManager, {
|  83|    |-	GetCurrentTemplateName: function(ent) { return "example"; },
|    |  83|+	"GetCurrentTemplateName": function(ent) { return "example"; },
|  84|  84| 	GetTemplate: function(name) { return ""; }
|  85|  85| });
|  86|  86| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetTemplate' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  81|  81| 
|  82|  82| AddMock(SYSTEM_ENTITY, IID_TemplateManager, {
|  83|  83| 	GetCurrentTemplateName: function(ent) { return "example"; },
|  84|    |-	GetTemplate: function(name) { return ""; }
|    |  84|+	"GetTemplate": function(name) { return ""; }
|  85|  85| });
|  86|  86| 
|  87|  87| AddMock(SYSTEM_ENTITY, IID_Timer, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetTime' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  85|  85| });
|  86|  86| 
|  87|  87| AddMock(SYSTEM_ENTITY, IID_Timer, {
|  88|    |-	GetTime: function() { return 0; },
|    |  88|+	"GetTime": function() { return 0; },
|  89|  89| 	SetTimeout: function(ent, iid, funcname, time, data) { return 0; }
|  90|  90| });
|  91|  91| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'SetTimeout' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  86|  86| 
|  87|  87| AddMock(SYSTEM_ENTITY, IID_Timer, {
|  88|  88| 	GetTime: function() { return 0; },
|  89|    |-	SetTimeout: function(ent, iid, funcname, time, data) { return 0; }
|    |  89|+	"SetTimeout": function(ent, iid, funcname, time, data) { return 0; }
|  90|  90| });
|  91|  91| 
|  92|  92| AddMock(100, IID_Player, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetName' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  90|  90| });
|  91|  91| 
|  92|  92| AddMock(100, IID_Player, {
|  93|    |-	GetName: function() { return "Player 1"; },
|    |  93|+	"GetName": function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|  95| 	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCiv' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  91|  91| 
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|    |-	GetCiv: function() { return "gaia"; },
|    |  94|+	"GetCiv": function() { return "gaia"; },
|  95|  95| 	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetColor' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|    |-	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|    |  95|+	"GetColor": function() { return { r: 1, g: 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'r' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|    |-	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|    |  95|+	GetColor: function() { return { "r": 1, g: 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'g' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|    |-	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|    |  95|+	GetColor: function() { return { r: 1, "g": 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'b' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|    |-	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|    |  95|+	GetColor: function() { return { r: 1, g: 1, "b": 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'a' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|    |-	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|    |  95|+	GetColor: function() { return { r: 1, g: 1, b: 1, "a": 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  92|  92| AddMock(100, IID_Player, {
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|    |-	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|    |  95|+	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1 }; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'CanControlAllUnits' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  93|  93| 	GetName: function() { return "Player 1"; },
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|  95| 	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|  96|    |-	CanControlAllUnits: function() { return false; },
|    |  96|+	"CanControlAllUnits": function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|  99|  99| 	GetMaxPopulation: function() { return 200; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPopulationCount' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  94|  94| 	GetCiv: function() { return "gaia"; },
|  95|  95| 	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|    |-	GetPopulationCount: function() { return 10; },
|    |  97|+	"GetPopulationCount": function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|  99|  99| 	GetMaxPopulation: function() { return 200; },
| 100| 100| 	GetResourceCounts: function() { return { food: 100 }; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPopulationLimit' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  95|  95| 	GetColor: function() { return { r: 1, g: 1, b: 1, a: 1}; },
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|    |-	GetPopulationLimit: function() { return 20; },
|    |  98|+	"GetPopulationLimit": function() { return 20; },
|  99|  99| 	GetMaxPopulation: function() { return 200; },
| 100| 100| 	GetResourceCounts: function() { return { food: 100 }; },
| 101| 101| 	GetPanelEntities: function() { return []; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetMaxPopulation' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  96|  96| 	CanControlAllUnits: function() { return false; },
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|  99|    |-	GetMaxPopulation: function() { return 200; },
|    |  99|+	"GetMaxPopulation": function() { return 200; },
| 100| 100| 	GetResourceCounts: function() { return { food: 100 }; },
| 101| 101| 	GetPanelEntities: function() { return []; },
| 102| 102| 	IsTrainingBlocked: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetResourceCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|  99|  99| 	GetMaxPopulation: function() { return 200; },
| 100|    |-	GetResourceCounts: function() { return { food: 100 }; },
|    | 100|+	"GetResourceCounts": function() { return { food: 100 }; },
| 101| 101| 	GetPanelEntities: function() { return []; },
| 102| 102| 	IsTrainingBlocked: function() { return false; },
| 103| 103| 	GetState: function() { return "active"; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'food' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  97|  97| 	GetPopulationCount: function() { return 10; },
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|  99|  99| 	GetMaxPopulation: function() { return 200; },
| 100|    |-	GetResourceCounts: function() { return { food: 100 }; },
|    | 100|+	GetResourceCounts: function() { return { "food": 100 }; },
| 101| 101| 	GetPanelEntities: function() { return []; },
| 102| 102| 	IsTrainingBlocked: function() { return false; },
| 103| 103| 	GetState: function() { return "active"; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPanelEntities' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  98|  98| 	GetPopulationLimit: function() { return 20; },
|  99|  99| 	GetMaxPopulation: function() { return 200; },
| 100| 100| 	GetResourceCounts: function() { return { food: 100 }; },
| 101|    |-	GetPanelEntities: function() { return []; },
|    | 101|+	"GetPanelEntities": function() { return []; },
| 102| 102| 	IsTrainingBlocked: function() { return false; },
| 103| 103| 	GetState: function() { return "active"; },
| 104| 104| 	GetTeam: function() { return -1; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsTrainingBlocked' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|  99|  99| 	GetMaxPopulation: function() { return 200; },
| 100| 100| 	GetResourceCounts: function() { return { food: 100 }; },
| 101| 101| 	GetPanelEntities: function() { return []; },
| 102|    |-	IsTrainingBlocked: function() { return false; },
|    | 102|+	"IsTrainingBlocked": function() { return false; },
| 103| 103| 	GetState: function() { return "active"; },
| 104| 104| 	GetTeam: function() { return -1; },
| 105| 105| 	GetLockTeams: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetState' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 100| 100| 	GetResourceCounts: function() { return { food: 100 }; },
| 101| 101| 	GetPanelEntities: function() { return []; },
| 102| 102| 	IsTrainingBlocked: function() { return false; },
| 103|    |-	GetState: function() { return "active"; },
|    | 103|+	"GetState": function() { return "active"; },
| 104| 104| 	GetTeam: function() { return -1; },
| 105| 105| 	GetLockTeams: function() { return false; },
| 106| 106| 	GetCheatsEnabled: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetTeam' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 101| 101| 	GetPanelEntities: function() { return []; },
| 102| 102| 	IsTrainingBlocked: function() { return false; },
| 103| 103| 	GetState: function() { return "active"; },
| 104|    |-	GetTeam: function() { return -1; },
|    | 104|+	"GetTeam": function() { return -1; },
| 105| 105| 	GetLockTeams: function() { return false; },
| 106| 106| 	GetCheatsEnabled: function() { return false; },
| 107| 107| 	GetDiplomacy: function() { return [-1, 1]; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLockTeams' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 102| 102| 	IsTrainingBlocked: function() { return false; },
| 103| 103| 	GetState: function() { return "active"; },
| 104| 104| 	GetTeam: function() { return -1; },
| 105|    |-	GetLockTeams: function() { return false; },
|    | 105|+	"GetLockTeams": function() { return false; },
| 106| 106| 	GetCheatsEnabled: function() { return false; },
| 107| 107| 	GetDiplomacy: function() { return [-1, 1]; },
| 108| 108| 	IsAlly: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCheatsEnabled' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 103| 103| 	GetState: function() { return "active"; },
| 104| 104| 	GetTeam: function() { return -1; },
| 105| 105| 	GetLockTeams: function() { return false; },
| 106|    |-	GetCheatsEnabled: function() { return false; },
|    | 106|+	"GetCheatsEnabled": function() { return false; },
| 107| 107| 	GetDiplomacy: function() { return [-1, 1]; },
| 108| 108| 	IsAlly: function() { return false; },
| 109| 109| 	IsMutualAlly: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetDiplomacy' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 104| 104| 	GetTeam: function() { return -1; },
| 105| 105| 	GetLockTeams: function() { return false; },
| 106| 106| 	GetCheatsEnabled: function() { return false; },
| 107|    |-	GetDiplomacy: function() { return [-1, 1]; },
|    | 107|+	"GetDiplomacy": function() { return [-1, 1]; },
| 108| 108| 	IsAlly: function() { return false; },
| 109| 109| 	IsMutualAlly: function() { return false; },
| 110| 110| 	IsNeutral: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 105| 105| 	GetLockTeams: function() { return false; },
| 106| 106| 	GetCheatsEnabled: function() { return false; },
| 107| 107| 	GetDiplomacy: function() { return [-1, 1]; },
| 108|    |-	IsAlly: function() { return false; },
|    | 108|+	"IsAlly": function() { return false; },
| 109| 109| 	IsMutualAlly: function() { return false; },
| 110| 110| 	IsNeutral: function() { return false; },
| 111| 111| 	IsEnemy: function() { return true; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsMutualAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 106| 106| 	GetCheatsEnabled: function() { return false; },
| 107| 107| 	GetDiplomacy: function() { return [-1, 1]; },
| 108| 108| 	IsAlly: function() { return false; },
| 109|    |-	IsMutualAlly: function() { return false; },
|    | 109|+	"IsMutualAlly": function() { return false; },
| 110| 110| 	IsNeutral: function() { return false; },
| 111| 111| 	IsEnemy: function() { return true; },
| 112| 112| 	GetDisabledTemplates: function() { return {}; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsNeutral' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 107| 107| 	GetDiplomacy: function() { return [-1, 1]; },
| 108| 108| 	IsAlly: function() { return false; },
| 109| 109| 	IsMutualAlly: function() { return false; },
| 110|    |-	IsNeutral: function() { return false; },
|    | 110|+	"IsNeutral": function() { return false; },
| 111| 111| 	IsEnemy: function() { return true; },
| 112| 112| 	GetDisabledTemplates: function() { return {}; },
| 113| 113| 	GetDisabledTechnologies: function() { return {}; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsEnemy' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 108| 108| 	IsAlly: function() { return false; },
| 109| 109| 	IsMutualAlly: function() { return false; },
| 110| 110| 	IsNeutral: function() { return false; },
| 111|    |-	IsEnemy: function() { return true; },
|    | 111|+	"IsEnemy": function() { return true; },
| 112| 112| 	GetDisabledTemplates: function() { return {}; },
| 113| 113| 	GetDisabledTechnologies: function() { return {}; },
| 114| 114| 	GetSpyCostMultiplier: function() { return 1; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetDisabledTemplates' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 109| 109| 	IsMutualAlly: function() { return false; },
| 110| 110| 	IsNeutral: function() { return false; },
| 111| 111| 	IsEnemy: function() { return true; },
| 112|    |-	GetDisabledTemplates: function() { return {}; },
|    | 112|+	"GetDisabledTemplates": function() { return {}; },
| 113| 113| 	GetDisabledTechnologies: function() { return {}; },
| 114| 114| 	GetSpyCostMultiplier: function() { return 1; },
| 115| 115| 	HasSharedDropsites: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetDisabledTechnologies' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 110| 110| 	IsNeutral: function() { return false; },
| 111| 111| 	IsEnemy: function() { return true; },
| 112| 112| 	GetDisabledTemplates: function() { return {}; },
| 113|    |-	GetDisabledTechnologies: function() { return {}; },
|    | 113|+	"GetDisabledTechnologies": function() { return {}; },
| 114| 114| 	GetSpyCostMultiplier: function() { return 1; },
| 115| 115| 	HasSharedDropsites: function() { return false; },
| 116| 116| 	HasSharedLos: function() { return false; }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetSpyCostMultiplier' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 111| 111| 	IsEnemy: function() { return true; },
| 112| 112| 	GetDisabledTemplates: function() { return {}; },
| 113| 113| 	GetDisabledTechnologies: function() { return {}; },
| 114|    |-	GetSpyCostMultiplier: function() { return 1; },
|    | 114|+	"GetSpyCostMultiplier": function() { return 1; },
| 115| 115| 	HasSharedDropsites: function() { return false; },
| 116| 116| 	HasSharedLos: function() { return false; }
| 117| 117| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'HasSharedDropsites' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 112| 112| 	GetDisabledTemplates: function() { return {}; },
| 113| 113| 	GetDisabledTechnologies: function() { return {}; },
| 114| 114| 	GetSpyCostMultiplier: function() { return 1; },
| 115|    |-	HasSharedDropsites: function() { return false; },
|    | 115|+	"HasSharedDropsites": function() { return false; },
| 116| 116| 	HasSharedLos: function() { return false; }
| 117| 117| });
| 118| 118| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'HasSharedLos' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 113| 113| 	GetDisabledTechnologies: function() { return {}; },
| 114| 114| 	GetSpyCostMultiplier: function() { return 1; },
| 115| 115| 	HasSharedDropsites: function() { return false; },
| 116|    |-	HasSharedLos: function() { return false; }
|    | 116|+	"HasSharedLos": function() { return false; }
| 117| 117| });
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLimits' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 117| 117| });
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120|    |-	GetLimits: function() { return {"Foo": 10}; },
|    | 120|+	"GetLimits": function() { return {"Foo": 10}; },
| 121| 121| 	GetCounts: function() { return {"Foo": 5}; },
| 122| 122| 	GetLimitChangers: function() {return {"Foo": {}}; }
| 123| 123| });
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 117| 117| });
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120|    |-	GetLimits: function() { return {"Foo": 10}; },
|    | 120|+	GetLimits: function() { return { "Foo": 10}; },
| 121| 121| 	GetCounts: function() { return {"Foo": 5}; },
| 122| 122| 	GetLimitChangers: function() {return {"Foo": {}}; }
| 123| 123| });
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 117| 117| });
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120|    |-	GetLimits: function() { return {"Foo": 10}; },
|    | 120|+	GetLimits: function() { return {"Foo": 10 }; },
| 121| 121| 	GetCounts: function() { return {"Foo": 5}; },
| 122| 122| 	GetLimitChangers: function() {return {"Foo": {}}; }
| 123| 123| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120| 120| 	GetLimits: function() { return {"Foo": 10}; },
| 121|    |-	GetCounts: function() { return {"Foo": 5}; },
|    | 121|+	"GetCounts": function() { return {"Foo": 5}; },
| 122| 122| 	GetLimitChangers: function() {return {"Foo": {}}; }
| 123| 123| });
| 124| 124| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120| 120| 	GetLimits: function() { return {"Foo": 10}; },
| 121|    |-	GetCounts: function() { return {"Foo": 5}; },
|    | 121|+	GetCounts: function() { return { "Foo": 5}; },
| 122| 122| 	GetLimitChangers: function() {return {"Foo": {}}; }
| 123| 123| });
| 124| 124| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 118| 118| 
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120| 120| 	GetLimits: function() { return {"Foo": 10}; },
| 121|    |-	GetCounts: function() { return {"Foo": 5}; },
|    | 121|+	GetCounts: function() { return {"Foo": 5 }; },
| 122| 122| 	GetLimitChangers: function() {return {"Foo": {}}; }
| 123| 123| });
| 124| 124| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLimitChangers' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120| 120| 	GetLimits: function() { return {"Foo": 10}; },
| 121| 121| 	GetCounts: function() { return {"Foo": 5}; },
| 122|    |-	GetLimitChangers: function() {return {"Foo": {}}; }
|    | 122|+	"GetLimitChangers": function() {return {"Foo": {}}; }
| 123| 123| });
| 124| 124| 
| 125| 125| AddMock(100, IID_TechnologyManager, {
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120| 120| 	GetLimits: function() { return {"Foo": 10}; },
| 121| 121| 	GetCounts: function() { return {"Foo": 5}; },
| 122|    |-	GetLimitChangers: function() {return {"Foo": {}}; }
|    | 122|+	GetLimitChangers: function() {return { "Foo": {}}; }
| 123| 123| });
| 124| 124| 
| 125| 125| AddMock(100, IID_TechnologyManager, {
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 119| 119| AddMock(100, IID_EntityLimits, {
| 120| 120| 	GetLimits: function() { return {"Foo": 10}; },
| 121| 121| 	GetCounts: function() { return {"Foo": 5}; },
| 122|    |-	GetLimitChangers: function() {return {"Foo": {}}; }
|    | 122|+	GetLimitChangers: function() {return {"Foo": {} }; }
| 123| 123| });
| 124| 124| 
| 125| 125| AddMock(100, IID_TechnologyManager, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetBasicStatistics' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 132| 132| });
| 133| 133| 
| 134| 134| AddMock(100, IID_StatisticsTracker, {
| 135|    |-	GetBasicStatistics: function() {
|    | 135|+	"GetBasicStatistics": function() {
| 136| 136| 		return {
| 137| 137| 			"resourcesGathered": {
| 138| 138| 				"food": 100,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetSequences' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 144| 144| 			"percentMapExplored": 10
| 145| 145| 		};
| 146| 146| 	},
| 147|    |-	GetSequences: function() {
|    | 147|+	"GetSequences": function() {
| 148| 148| 		return {
| 149| 149| 			"unitsTrained": [0, 10],
| 150| 150| 			"unitsLost": [0, 42],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IncreaseTrainedUnitsCounter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 169| 169| 			"teamPeakPercentOfMapControlled": [0, 10]
| 170| 170| 		};
| 171| 171| 	},
| 172|    |-	IncreaseTrainedUnitsCounter: function() { return 1; },
|    | 172|+	"IncreaseTrainedUnitsCounter": function() { return 1; },
| 173| 173| 	IncreaseConstructedBuildingsCounter: function() { return 1; },
| 174| 174| 	IncreaseBuiltCivCentresCounter: function() { return 1; }
| 175| 175| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IncreaseConstructedBuildingsCounter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 170| 170| 		};
| 171| 171| 	},
| 172| 172| 	IncreaseTrainedUnitsCounter: function() { return 1; },
| 173|    |-	IncreaseConstructedBuildingsCounter: function() { return 1; },
|    | 173|+	"IncreaseConstructedBuildingsCounter": function() { return 1; },
| 174| 174| 	IncreaseBuiltCivCentresCounter: function() { return 1; }
| 175| 175| });
| 176| 176| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IncreaseBuiltCivCentresCounter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 171| 171| 	},
| 172| 172| 	IncreaseTrainedUnitsCounter: function() { return 1; },
| 173| 173| 	IncreaseConstructedBuildingsCounter: function() { return 1; },
| 174|    |-	IncreaseBuiltCivCentresCounter: function() { return 1; }
|    | 174|+	"IncreaseBuiltCivCentresCounter": function() { return 1; }
| 175| 175| });
| 176| 176| 
| 177| 177| AddMock(101, IID_Player, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetName' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 175| 175| });
| 176| 176| 
| 177| 177| AddMock(101, IID_Player, {
| 178|    |-	GetName: function() { return "Player 2"; },
|    | 178|+	"GetName": function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180| 180| 	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCiv' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 176| 176| 
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179|    |-	GetCiv: function() { return "mace"; },
|    | 179|+	"GetCiv": function() { return "mace"; },
| 180| 180| 	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetColor' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180|    |-	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
|    | 180|+	"GetColor": function() { return { r: 1, g: 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'r' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180|    |-	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
|    | 180|+	GetColor: function() { return { "r": 1, g: 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'g' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180|    |-	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
|    | 180|+	GetColor: function() { return { r: 1, "g": 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'b' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180|    |-	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
|    | 180|+	GetColor: function() { return { r: 1, g: 0, "b": 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'a' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180|    |-	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
|    | 180|+	GetColor: function() { return { r: 1, g: 0, b: 0, "a": 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 177| 177| AddMock(101, IID_Player, {
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180|    |-	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
|    | 180|+	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1 }; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'CanControlAllUnits' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 178| 178| 	GetName: function() { return "Player 2"; },
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180| 180| 	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
| 181|    |-	CanControlAllUnits: function() { return true; },
|    | 181|+	"CanControlAllUnits": function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
| 184| 184| 	GetMaxPopulation: function() { return 300; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPopulationCount' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 179| 179| 	GetCiv: function() { return "mace"; },
| 180| 180| 	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182|    |-	GetPopulationCount: function() { return 40; },
|    | 182|+	"GetPopulationCount": function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
| 184| 184| 	GetMaxPopulation: function() { return 300; },
| 185| 185| 	GetResourceCounts: function() { return { food: 200 }; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPopulationLimit' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 180| 180| 	GetColor: function() { return { r: 1, g: 0, b: 0, a: 1}; },
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183|    |-	GetPopulationLimit: function() { return 30; },
|    | 183|+	"GetPopulationLimit": function() { return 30; },
| 184| 184| 	GetMaxPopulation: function() { return 300; },
| 185| 185| 	GetResourceCounts: function() { return { food: 200 }; },
| 186| 186| 	GetPanelEntities: function() { return []; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetMaxPopulation' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 181| 181| 	CanControlAllUnits: function() { return true; },
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
| 184|    |-	GetMaxPopulation: function() { return 300; },
|    | 184|+	"GetMaxPopulation": function() { return 300; },
| 185| 185| 	GetResourceCounts: function() { return { food: 200 }; },
| 186| 186| 	GetPanelEntities: function() { return []; },
| 187| 187| 	IsTrainingBlocked: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetResourceCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
| 184| 184| 	GetMaxPopulation: function() { return 300; },
| 185|    |-	GetResourceCounts: function() { return { food: 200 }; },
|    | 185|+	"GetResourceCounts": function() { return { food: 200 }; },
| 186| 186| 	GetPanelEntities: function() { return []; },
| 187| 187| 	IsTrainingBlocked: function() { return false; },
| 188| 188| 	GetState: function() { return "active"; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'food' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 182| 182| 	GetPopulationCount: function() { return 40; },
| 183| 183| 	GetPopulationLimit: function() { return 30; },
| 184| 184| 	GetMaxPopulation: function() { return 300; },
| 185|    |-	GetResourceCounts: function() { return { food: 200 }; },
|    | 185|+	GetResourceCounts: function() { return { "food": 200 }; },
| 186| 186| 	GetPanelEntities: function() { return []; },
| 187| 187| 	IsTrainingBlocked: function() { return false; },
| 188| 188| 	GetState: function() { return "active"; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPanelEntities' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 183| 183| 	GetPopulationLimit: function() { return 30; },
| 184| 184| 	GetMaxPopulation: function() { return 300; },
| 185| 185| 	GetResourceCounts: function() { return { food: 200 }; },
| 186|    |-	GetPanelEntities: function() { return []; },
|    | 186|+	"GetPanelEntities": function() { return []; },
| 187| 187| 	IsTrainingBlocked: function() { return false; },
| 188| 188| 	GetState: function() { return "active"; },
| 189| 189| 	GetTeam: function() { return -1; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsTrainingBlocked' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 184| 184| 	GetMaxPopulation: function() { return 300; },
| 185| 185| 	GetResourceCounts: function() { return { food: 200 }; },
| 186| 186| 	GetPanelEntities: function() { return []; },
| 187|    |-	IsTrainingBlocked: function() { return false; },
|    | 187|+	"IsTrainingBlocked": function() { return false; },
| 188| 188| 	GetState: function() { return "active"; },
| 189| 189| 	GetTeam: function() { return -1; },
| 190| 190| 	GetLockTeams: function() {return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetState' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 185| 185| 	GetResourceCounts: function() { return { food: 200 }; },
| 186| 186| 	GetPanelEntities: function() { return []; },
| 187| 187| 	IsTrainingBlocked: function() { return false; },
| 188|    |-	GetState: function() { return "active"; },
|    | 188|+	"GetState": function() { return "active"; },
| 189| 189| 	GetTeam: function() { return -1; },
| 190| 190| 	GetLockTeams: function() {return false; },
| 191| 191| 	GetCheatsEnabled: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetTeam' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 186| 186| 	GetPanelEntities: function() { return []; },
| 187| 187| 	IsTrainingBlocked: function() { return false; },
| 188| 188| 	GetState: function() { return "active"; },
| 189|    |-	GetTeam: function() { return -1; },
|    | 189|+	"GetTeam": function() { return -1; },
| 190| 190| 	GetLockTeams: function() {return false; },
| 191| 191| 	GetCheatsEnabled: function() { return false; },
| 192| 192| 	GetDiplomacy: function() { return [-1, 1]; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLockTeams' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 187| 187| 	IsTrainingBlocked: function() { return false; },
| 188| 188| 	GetState: function() { return "active"; },
| 189| 189| 	GetTeam: function() { return -1; },
| 190|    |-	GetLockTeams: function() {return false; },
|    | 190|+	"GetLockTeams": function() {return false; },
| 191| 191| 	GetCheatsEnabled: function() { return false; },
| 192| 192| 	GetDiplomacy: function() { return [-1, 1]; },
| 193| 193| 	IsAlly: function() { return true; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCheatsEnabled' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 188| 188| 	GetState: function() { return "active"; },
| 189| 189| 	GetTeam: function() { return -1; },
| 190| 190| 	GetLockTeams: function() {return false; },
| 191|    |-	GetCheatsEnabled: function() { return false; },
|    | 191|+	"GetCheatsEnabled": function() { return false; },
| 192| 192| 	GetDiplomacy: function() { return [-1, 1]; },
| 193| 193| 	IsAlly: function() { return true; },
| 194| 194| 	IsMutualAlly: function() {return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetDiplomacy' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 189| 189| 	GetTeam: function() { return -1; },
| 190| 190| 	GetLockTeams: function() {return false; },
| 191| 191| 	GetCheatsEnabled: function() { return false; },
| 192|    |-	GetDiplomacy: function() { return [-1, 1]; },
|    | 192|+	"GetDiplomacy": function() { return [-1, 1]; },
| 193| 193| 	IsAlly: function() { return true; },
| 194| 194| 	IsMutualAlly: function() {return false; },
| 195| 195| 	IsNeutral: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 190| 190| 	GetLockTeams: function() {return false; },
| 191| 191| 	GetCheatsEnabled: function() { return false; },
| 192| 192| 	GetDiplomacy: function() { return [-1, 1]; },
| 193|    |-	IsAlly: function() { return true; },
|    | 193|+	"IsAlly": function() { return true; },
| 194| 194| 	IsMutualAlly: function() {return false; },
| 195| 195| 	IsNeutral: function() { return false; },
| 196| 196| 	IsEnemy: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsMutualAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 191| 191| 	GetCheatsEnabled: function() { return false; },
| 192| 192| 	GetDiplomacy: function() { return [-1, 1]; },
| 193| 193| 	IsAlly: function() { return true; },
| 194|    |-	IsMutualAlly: function() {return false; },
|    | 194|+	"IsMutualAlly": function() {return false; },
| 195| 195| 	IsNeutral: function() { return false; },
| 196| 196| 	IsEnemy: function() { return false; },
| 197| 197| 	GetDisabledTemplates: function() { return {}; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsNeutral' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 192| 192| 	GetDiplomacy: function() { return [-1, 1]; },
| 193| 193| 	IsAlly: function() { return true; },
| 194| 194| 	IsMutualAlly: function() {return false; },
| 195|    |-	IsNeutral: function() { return false; },
|    | 195|+	"IsNeutral": function() { return false; },
| 196| 196| 	IsEnemy: function() { return false; },
| 197| 197| 	GetDisabledTemplates: function() { return {}; },
| 198| 198| 	GetDisabledTechnologies: function() { return {}; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsEnemy' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 193| 193| 	IsAlly: function() { return true; },
| 194| 194| 	IsMutualAlly: function() {return false; },
| 195| 195| 	IsNeutral: function() { return false; },
| 196|    |-	IsEnemy: function() { return false; },
|    | 196|+	"IsEnemy": function() { return false; },
| 197| 197| 	GetDisabledTemplates: function() { return {}; },
| 198| 198| 	GetDisabledTechnologies: function() { return {}; },
| 199| 199| 	GetSpyCostMultiplier: function() { return 1; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetDisabledTemplates' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 194| 194| 	IsMutualAlly: function() {return false; },
| 195| 195| 	IsNeutral: function() { return false; },
| 196| 196| 	IsEnemy: function() { return false; },
| 197|    |-	GetDisabledTemplates: function() { return {}; },
|    | 197|+	"GetDisabledTemplates": function() { return {}; },
| 198| 198| 	GetDisabledTechnologies: function() { return {}; },
| 199| 199| 	GetSpyCostMultiplier: function() { return 1; },
| 200| 200| 	HasSharedDropsites: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetDisabledTechnologies' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 195| 195| 	IsNeutral: function() { return false; },
| 196| 196| 	IsEnemy: function() { return false; },
| 197| 197| 	GetDisabledTemplates: function() { return {}; },
| 198|    |-	GetDisabledTechnologies: function() { return {}; },
|    | 198|+	"GetDisabledTechnologies": function() { return {}; },
| 199| 199| 	GetSpyCostMultiplier: function() { return 1; },
| 200| 200| 	HasSharedDropsites: function() { return false; },
| 201| 201| 	HasSharedLos: function() { return false; }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetSpyCostMultiplier' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 196| 196| 	IsEnemy: function() { return false; },
| 197| 197| 	GetDisabledTemplates: function() { return {}; },
| 198| 198| 	GetDisabledTechnologies: function() { return {}; },
| 199|    |-	GetSpyCostMultiplier: function() { return 1; },
|    | 199|+	"GetSpyCostMultiplier": function() { return 1; },
| 200| 200| 	HasSharedDropsites: function() { return false; },
| 201| 201| 	HasSharedLos: function() { return false; }
| 202| 202| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'HasSharedDropsites' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 197| 197| 	GetDisabledTemplates: function() { return {}; },
| 198| 198| 	GetDisabledTechnologies: function() { return {}; },
| 199| 199| 	GetSpyCostMultiplier: function() { return 1; },
| 200|    |-	HasSharedDropsites: function() { return false; },
|    | 200|+	"HasSharedDropsites": function() { return false; },
| 201| 201| 	HasSharedLos: function() { return false; }
| 202| 202| });
| 203| 203| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'HasSharedLos' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 198| 198| 	GetDisabledTechnologies: function() { return {}; },
| 199| 199| 	GetSpyCostMultiplier: function() { return 1; },
| 200| 200| 	HasSharedDropsites: function() { return false; },
| 201|    |-	HasSharedLos: function() { return false; }
|    | 201|+	"HasSharedLos": function() { return false; }
| 202| 202| });
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLimits' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 202| 202| });
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205|    |-	GetLimits: function() { return {"Bar": 20}; },
|    | 205|+	"GetLimits": function() { return {"Bar": 20}; },
| 206| 206| 	GetCounts: function() { return {"Bar": 0}; },
| 207| 207| 	GetLimitChangers: function() {return {"Bar": {}}; }
| 208| 208| });
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 202| 202| });
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205|    |-	GetLimits: function() { return {"Bar": 20}; },
|    | 205|+	GetLimits: function() { return { "Bar": 20}; },
| 206| 206| 	GetCounts: function() { return {"Bar": 0}; },
| 207| 207| 	GetLimitChangers: function() {return {"Bar": {}}; }
| 208| 208| });
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 202| 202| });
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205|    |-	GetLimits: function() { return {"Bar": 20}; },
|    | 205|+	GetLimits: function() { return {"Bar": 20 }; },
| 206| 206| 	GetCounts: function() { return {"Bar": 0}; },
| 207| 207| 	GetLimitChangers: function() {return {"Bar": {}}; }
| 208| 208| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205| 205| 	GetLimits: function() { return {"Bar": 20}; },
| 206|    |-	GetCounts: function() { return {"Bar": 0}; },
|    | 206|+	"GetCounts": function() { return {"Bar": 0}; },
| 207| 207| 	GetLimitChangers: function() {return {"Bar": {}}; }
| 208| 208| });
| 209| 209| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205| 205| 	GetLimits: function() { return {"Bar": 20}; },
| 206|    |-	GetCounts: function() { return {"Bar": 0}; },
|    | 206|+	GetCounts: function() { return { "Bar": 0}; },
| 207| 207| 	GetLimitChangers: function() {return {"Bar": {}}; }
| 208| 208| });
| 209| 209| 
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 203| 203| 
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205| 205| 	GetLimits: function() { return {"Bar": 20}; },
| 206|    |-	GetCounts: function() { return {"Bar": 0}; },
|    | 206|+	GetCounts: function() { return {"Bar": 0 }; },
| 207| 207| 	GetLimitChangers: function() {return {"Bar": {}}; }
| 208| 208| });
| 209| 209| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetLimitChangers' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205| 205| 	GetLimits: function() { return {"Bar": 20}; },
| 206| 206| 	GetCounts: function() { return {"Bar": 0}; },
| 207|    |-	GetLimitChangers: function() {return {"Bar": {}}; }
|    | 207|+	"GetLimitChangers": function() {return {"Bar": {}}; }
| 208| 208| });
| 209| 209| 
| 210| 210| AddMock(101, IID_TechnologyManager, {
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205| 205| 	GetLimits: function() { return {"Bar": 20}; },
| 206| 206| 	GetCounts: function() { return {"Bar": 0}; },
| 207|    |-	GetLimitChangers: function() {return {"Bar": {}}; }
|    | 207|+	GetLimitChangers: function() {return { "Bar": {}}; }
| 208| 208| });
| 209| 209| 
| 210| 210| AddMock(101, IID_TechnologyManager, {
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 204| 204| AddMock(101, IID_EntityLimits, {
| 205| 205| 	GetLimits: function() { return {"Bar": 20}; },
| 206| 206| 	GetCounts: function() { return {"Bar": 0}; },
| 207|    |-	GetLimitChangers: function() {return {"Bar": {}}; }
|    | 207|+	GetLimitChangers: function() {return {"Bar": {} }; }
| 208| 208| });
| 209| 209| 
| 210| 210| AddMock(101, IID_TechnologyManager, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetBasicStatistics' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 217| 217| });
| 218| 218| 
| 219| 219| AddMock(101, IID_StatisticsTracker, {
| 220|    |-	GetBasicStatistics: function() {
|    | 220|+	"GetBasicStatistics": function() {
| 221| 221| 		return {
| 222| 222| 			"resourcesGathered": {
| 223| 223| 				"food": 100,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetSequences' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 229| 229| 			"percentMapExplored": 10
| 230| 230| 		};
| 231| 231| 	},
| 232|    |-	GetSequences: function() {
|    | 232|+	"GetSequences": function() {
| 233| 233| 		return {
| 234| 234| 			"unitsTrained": [0, 10],
| 235| 235| 			"unitsLost": [0, 9],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IncreaseTrainedUnitsCounter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 254| 254| 			"teamPeakPercentOfMapControlled": [0, 10]
| 255| 255| 		};
| 256| 256| 	},
| 257|    |-	IncreaseTrainedUnitsCounter: function() { return 1; },
|    | 257|+	"IncreaseTrainedUnitsCounter": function() { return 1; },
| 258| 258| 	IncreaseConstructedBuildingsCounter: function() { return 1; },
| 259| 259| 	IncreaseBuiltCivCentresCounter: function() { return 1; }
| 260| 260| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IncreaseConstructedBuildingsCounter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 255| 255| 		};
| 256| 256| 	},
| 257| 257| 	IncreaseTrainedUnitsCounter: function() { return 1; },
| 258|    |-	IncreaseConstructedBuildingsCounter: function() { return 1; },
|    | 258|+	"IncreaseConstructedBuildingsCounter": function() { return 1; },
| 259| 259| 	IncreaseBuiltCivCentresCounter: function() { return 1; }
| 260| 260| });
| 261| 261| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IncreaseBuiltCivCentresCounter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 256| 256| 	},
| 257| 257| 	IncreaseTrainedUnitsCounter: function() { return 1; },
| 258| 258| 	IncreaseConstructedBuildingsCounter: function() { return 1; },
| 259|    |-	IncreaseBuiltCivCentresCounter: function() { return 1; }
|    | 259|+	"IncreaseBuiltCivCentresCounter": function() { return 1; }
| 260| 260| });
| 261| 261| 
| 262| 262| // Note: property order matters when using TS_ASSERT_UNEVAL_EQUALS,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'players' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 263| 263| //	because uneval preserves property order. So make sure this object
| 264| 264| //	matches the ordering in GuiInterface.
| 265| 265| TS_ASSERT_UNEVAL_EQUALS(cmp.GetSimulationState(), {
| 266|    |-	players: [
|    | 266|+	"players": [
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'name' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 265| 265| TS_ASSERT_UNEVAL_EQUALS(cmp.GetSimulationState(), {
| 266| 266| 	players: [
| 267| 267| 		{
| 268|    |-			name: "Player 1",
|    | 268|+			"name": "Player 1",
| 269| 269| 			civ: "gaia",
| 270| 270| 			color: { r:1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'civ' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 266| 266| 	players: [
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269|    |-			civ: "gaia",
|    | 269|+			"civ": "gaia",
| 270| 270| 			color: { r:1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'color' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			"color": { r:1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'r' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { "r":1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'r'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r: 1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'g' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r:1, "g":1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'g'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r:1, g: 1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'b' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r:1, g:1, "b":1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'b'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r:1, g:1, b: 1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'a' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r:1, g:1, b:1, "a":1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'a'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 267| 267| 		{
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270|    |-			color: { r:1, g:1, b:1, a:1 },
|    | 270|+			color: { r:1, g:1, b:1, a: 1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'controlsAll' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 268| 268| 			name: "Player 1",
| 269| 269| 			civ: "gaia",
| 270| 270| 			color: { r:1, g:1, b:1, a:1 },
| 271|    |-			controlsAll: false,
|    | 271|+			"controlsAll": false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
| 274| 274| 			popMax: 200,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'popCount' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 269| 269| 			civ: "gaia",
| 270| 270| 			color: { r:1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272|    |-			popCount: 10,
|    | 272|+			"popCount": 10,
| 273| 273| 			popLimit: 20,
| 274| 274| 			popMax: 200,
| 275| 275| 			panelEntities: [],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'popLimit' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 270| 270| 			color: { r:1, g:1, b:1, a:1 },
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273|    |-			popLimit: 20,
|    | 273|+			"popLimit": 20,
| 274| 274| 			popMax: 200,
| 275| 275| 			panelEntities: [],
| 276| 276| 			resourceCounts: { food: 100 },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'popMax' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 271| 271| 			controlsAll: false,
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
| 274|    |-			popMax: 200,
|    | 274|+			"popMax": 200,
| 275| 275| 			panelEntities: [],
| 276| 276| 			resourceCounts: { food: 100 },
| 277| 277| 			trainingBlocked: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'panelEntities' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 272| 272| 			popCount: 10,
| 273| 273| 			popLimit: 20,
| 274| 274| 			popMax: 200,
| 275|    |-			panelEntities: [],
|    | 275|+			"panelEntities": [],
| 276| 276| 			resourceCounts: { food: 100 },
| 277| 277| 			trainingBlocked: false,
| 278| 278| 			state: "active",
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'resourceCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 273| 273| 			popLimit: 20,
| 274| 274| 			popMax: 200,
| 275| 275| 			panelEntities: [],
| 276|    |-			resourceCounts: { food: 100 },
|    | 276|+			"resourceCounts": { food: 100 },
| 277| 277| 			trainingBlocked: false,
| 278| 278| 			state: "active",
| 279| 279| 			team: -1,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'food' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 273| 273| 			popLimit: 20,
| 274| 274| 			popMax: 200,
| 275| 275| 			panelEntities: [],
| 276|    |-			resourceCounts: { food: 100 },
|    | 276|+			resourceCounts: { "food": 100 },
| 277| 277| 			trainingBlocked: false,
| 278| 278| 			state: "active",
| 279| 279| 			team: -1,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'trainingBlocked' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 274| 274| 			popMax: 200,
| 275| 275| 			panelEntities: [],
| 276| 276| 			resourceCounts: { food: 100 },
| 277|    |-			trainingBlocked: false,
|    | 277|+			"trainingBlocked": false,
| 278| 278| 			state: "active",
| 279| 279| 			team: -1,
| 280| 280| 			teamsLocked: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'state' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 275| 275| 			panelEntities: [],
| 276| 276| 			resourceCounts: { food: 100 },
| 277| 277| 			trainingBlocked: false,
| 278|    |-			state: "active",
|    | 278|+			"state": "active",
| 279| 279| 			team: -1,
| 280| 280| 			teamsLocked: false,
| 281| 281| 			cheatsEnabled: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'team' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 276| 276| 			resourceCounts: { food: 100 },
| 277| 277| 			trainingBlocked: false,
| 278| 278| 			state: "active",
| 279|    |-			team: -1,
|    | 279|+			"team": -1,
| 280| 280| 			teamsLocked: false,
| 281| 281| 			cheatsEnabled: false,
| 282| 282| 			disabledTemplates: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'teamsLocked' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 277| 277| 			trainingBlocked: false,
| 278| 278| 			state: "active",
| 279| 279| 			team: -1,
| 280|    |-			teamsLocked: false,
|    | 280|+			"teamsLocked": false,
| 281| 281| 			cheatsEnabled: false,
| 282| 282| 			disabledTemplates: {},
| 283| 283| 			disabledTechnologies: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'cheatsEnabled' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 278| 278| 			state: "active",
| 279| 279| 			team: -1,
| 280| 280| 			teamsLocked: false,
| 281|    |-			cheatsEnabled: false,
|    | 281|+			"cheatsEnabled": false,
| 282| 282| 			disabledTemplates: {},
| 283| 283| 			disabledTechnologies: {},
| 284| 284| 			hasSharedDropsites: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'disabledTemplates' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 279| 279| 			team: -1,
| 280| 280| 			teamsLocked: false,
| 281| 281| 			cheatsEnabled: false,
| 282|    |-			disabledTemplates: {},
|    | 282|+			"disabledTemplates": {},
| 283| 283| 			disabledTechnologies: {},
| 284| 284| 			hasSharedDropsites: false,
| 285| 285| 			hasSharedLos: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'disabledTechnologies' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 280| 280| 			teamsLocked: false,
| 281| 281| 			cheatsEnabled: false,
| 282| 282| 			disabledTemplates: {},
| 283|    |-			disabledTechnologies: {},
|    | 283|+			"disabledTechnologies": {},
| 284| 284| 			hasSharedDropsites: false,
| 285| 285| 			hasSharedLos: false,
| 286| 286| 			spyCostMultiplier: 1,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'hasSharedDropsites' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 281| 281| 			cheatsEnabled: false,
| 282| 282| 			disabledTemplates: {},
| 283| 283| 			disabledTechnologies: {},
| 284|    |-			hasSharedDropsites: false,
|    | 284|+			"hasSharedDropsites": false,
| 285| 285| 			hasSharedLos: false,
| 286| 286| 			spyCostMultiplier: 1,
| 287| 287| 			phase: "village",
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'hasSharedLos' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 282| 282| 			disabledTemplates: {},
| 283| 283| 			disabledTechnologies: {},
| 284| 284| 			hasSharedDropsites: false,
| 285|    |-			hasSharedLos: false,
|    | 285|+			"hasSharedLos": false,
| 286| 286| 			spyCostMultiplier: 1,
| 287| 287| 			phase: "village",
| 288| 288| 			isAlly: [false, false],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'spyCostMultiplier' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 283| 283| 			disabledTechnologies: {},
| 284| 284| 			hasSharedDropsites: false,
| 285| 285| 			hasSharedLos: false,
| 286|    |-			spyCostMultiplier: 1,
|    | 286|+			"spyCostMultiplier": 1,
| 287| 287| 			phase: "village",
| 288| 288| 			isAlly: [false, false],
| 289| 289| 			isMutualAlly: [false, false],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'phase' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 284| 284| 			hasSharedDropsites: false,
| 285| 285| 			hasSharedLos: false,
| 286| 286| 			spyCostMultiplier: 1,
| 287|    |-			phase: "village",
|    | 287|+			"phase": "village",
| 288| 288| 			isAlly: [false, false],
| 289| 289| 			isMutualAlly: [false, false],
| 290| 290| 			isNeutral: [false, false],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 285| 285| 			hasSharedLos: false,
| 286| 286| 			spyCostMultiplier: 1,
| 287| 287| 			phase: "village",
| 288|    |-			isAlly: [false, false],
|    | 288|+			"isAlly": [false, false],
| 289| 289| 			isMutualAlly: [false, false],
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isMutualAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 286| 286| 			spyCostMultiplier: 1,
| 287| 287| 			phase: "village",
| 288| 288| 			isAlly: [false, false],
| 289|    |-			isMutualAlly: [false, false],
|    | 289|+			"isMutualAlly": [false, false],
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isNeutral' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 287| 287| 			phase: "village",
| 288| 288| 			isAlly: [false, false],
| 289| 289| 			isMutualAlly: [false, false],
| 290|    |-			isNeutral: [false, false],
|    | 290|+			"isNeutral": [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isEnemy' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 288| 288| 			isAlly: [false, false],
| 289| 289| 			isMutualAlly: [false, false],
| 290| 290| 			isNeutral: [false, false],
| 291|    |-			isEnemy: [true, true],
|    | 291|+			"isEnemy": [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'entityLimits' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 289| 289| 			isMutualAlly: [false, false],
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292|    |-			entityLimits: {"Foo": 10},
|    | 292|+			"entityLimits": {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 289| 289| 			isMutualAlly: [false, false],
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292|    |-			entityLimits: {"Foo": 10},
|    | 292|+			entityLimits: { "Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 289| 289| 			isMutualAlly: [false, false],
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292|    |-			entityLimits: {"Foo": 10},
|    | 292|+			entityLimits: {"Foo": 10 },
| 293| 293| 			entityCounts: {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'entityCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293|    |-			entityCounts: {"Foo": 5},
|    | 293|+			"entityCounts": {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293|    |-			entityCounts: {"Foo": 5},
|    | 293|+			entityCounts: { "Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 290| 290| 			isNeutral: [false, false],
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293|    |-			entityCounts: {"Foo": 5},
|    | 293|+			entityCounts: {"Foo": 5 },
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'entityLimitChangers' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294|    |-			entityLimitChangers: {"Foo": {}},
|    | 294|+			"entityLimitChangers": {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
| 297| 297| 			researchedTechs: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294|    |-			entityLimitChangers: {"Foo": {}},
|    | 294|+			entityLimitChangers: { "Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
| 297| 297| 			researchedTechs: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 291| 291| 			isEnemy: [true, true],
| 292| 292| 			entityLimits: {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294|    |-			entityLimitChangers: {"Foo": {}},
|    | 294|+			entityLimitChangers: {"Foo": {} },
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
| 297| 297| 			researchedTechs: new Set(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'researchQueued' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 292| 292| 			entityLimits: {"Foo": 10},
| 293| 293| 			entityCounts: {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295|    |-			researchQueued: new Map(),
|    | 295|+			"researchQueued": new Map(),
| 296| 296| 			researchStarted: new Set(),
| 297| 297| 			researchedTechs: new Set(),
| 298| 298| 			classCounts: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'researchStarted' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 293| 293| 			entityCounts: {"Foo": 5},
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296|    |-			researchStarted: new Set(),
|    | 296|+			"researchStarted": new Set(),
| 297| 297| 			researchedTechs: new Set(),
| 298| 298| 			classCounts: {},
| 299| 299| 			typeCountsByClass: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'researchedTechs' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 294| 294| 			entityLimitChangers: {"Foo": {}},
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
| 297|    |-			researchedTechs: new Set(),
|    | 297|+			"researchedTechs": new Set(),
| 298| 298| 			classCounts: {},
| 299| 299| 			typeCountsByClass: {},
| 300| 300| 			canBarter: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'classCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 295| 295| 			researchQueued: new Map(),
| 296| 296| 			researchStarted: new Set(),
| 297| 297| 			researchedTechs: new Set(),
| 298|    |-			classCounts: {},
|    | 298|+			"classCounts": {},
| 299| 299| 			typeCountsByClass: {},
| 300| 300| 			canBarter: false,
| 301| 301| 			barterPrices: {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'typeCountsByClass' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 296| 296| 			researchStarted: new Set(),
| 297| 297| 			researchedTechs: new Set(),
| 298| 298| 			classCounts: {},
| 299|    |-			typeCountsByClass: {},
|    | 299|+			"typeCountsByClass": {},
| 300| 300| 			canBarter: false,
| 301| 301| 			barterPrices: {
| 302| 302| 				"buy": { "food": 150 },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'canBarter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 297| 297| 			researchedTechs: new Set(),
| 298| 298| 			classCounts: {},
| 299| 299| 			typeCountsByClass: {},
| 300|    |-			canBarter: false,
|    | 300|+			"canBarter": false,
| 301| 301| 			barterPrices: {
| 302| 302| 				"buy": { "food": 150 },
| 303| 303| 				"sell": { "food": 25 }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'barterPrices' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 298| 298| 			classCounts: {},
| 299| 299| 			typeCountsByClass: {},
| 300| 300| 			canBarter: false,
| 301|    |-			barterPrices: {
|    | 301|+			"barterPrices": {
| 302| 302| 				"buy": { "food": 150 },
| 303| 303| 				"sell": { "food": 25 }
| 304| 304| 			},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'statistics' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 302| 302| 				"buy": { "food": 150 },
| 303| 303| 				"sell": { "food": 25 }
| 304| 304| 			},
| 305|    |-			statistics: {
|    | 305|+			"statistics": {
| 306| 306| 				resourcesGathered: {
| 307| 307| 					food: 100,
| 308| 308| 					wood: 0,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'resourcesGathered' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 303| 303| 				"sell": { "food": 25 }
| 304| 304| 			},
| 305| 305| 			statistics: {
| 306|    |-				resourcesGathered: {
|    | 306|+				"resourcesGathered": {
| 307| 307| 					food: 100,
| 308| 308| 					wood: 0,
| 309| 309| 					metal: 0,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'food' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 304| 304| 			},
| 305| 305| 			statistics: {
| 306| 306| 				resourcesGathered: {
| 307|    |-					food: 100,
|    | 307|+					"food": 100,
| 308| 308| 					wood: 0,
| 309| 309| 					metal: 0,
| 310| 310| 					stone: 0,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'wood' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 305| 305| 			statistics: {
| 306| 306| 				resourcesGathered: {
| 307| 307| 					food: 100,
| 308|    |-					wood: 0,
|    | 308|+					"wood": 0,
| 309| 309| 					metal: 0,
| 310| 310| 					stone: 0,
| 311| 311| 					vegetarianFood: 0
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'metal' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 306| 306| 				resourcesGathered: {
| 307| 307| 					food: 100,
| 308| 308| 					wood: 0,
| 309|    |-					metal: 0,
|    | 309|+					"metal": 0,
| 310| 310| 					stone: 0,
| 311| 311| 					vegetarianFood: 0
| 312| 312| 				},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'stone' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 307| 307| 					food: 100,
| 308| 308| 					wood: 0,
| 309| 309| 					metal: 0,
| 310|    |-					stone: 0,
|    | 310|+					"stone": 0,
| 311| 311| 					vegetarianFood: 0
| 312| 312| 				},
| 313| 313| 				percentMapExplored: 10
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'vegetarianFood' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 308| 308| 					wood: 0,
| 309| 309| 					metal: 0,
| 310| 310| 					stone: 0,
| 311|    |-					vegetarianFood: 0
|    | 311|+					"vegetarianFood": 0
| 312| 312| 				},
| 313| 313| 				percentMapExplored: 10
| 314| 314| 			}
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'percentMapExplored' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 310| 310| 					stone: 0,
| 311| 311| 					vegetarianFood: 0
| 312| 312| 				},
| 313|    |-				percentMapExplored: 10
|    | 313|+				"percentMapExplored": 10
| 314| 314| 			}
| 315| 315| 		},
| 316| 316| 		{
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'name' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 314| 314| 			}
| 315| 315| 		},
| 316| 316| 		{
| 317|    |-			name: "Player 2",
|    | 317|+			"name": "Player 2",
| 318| 318| 			civ: "mace",
| 319| 319| 			color: { r:1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'civ' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 315| 315| 		},
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318|    |-			civ: "mace",
|    | 318|+			"civ": "mace",
| 319| 319| 			color: { r:1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'color' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			"color": { r:1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'r' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { "r":1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'r'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r: 1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'g' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r:1, "g":0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'g'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r:1, g: 0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'b' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r:1, g:0, "b":0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'b'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r:1, g:0, b: 0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'a' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r:1, g:0, b:0, "a":1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'a'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 316| 316| 		{
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319|    |-			color: { r:1, g:0, b:0, a:1 },
|    | 319|+			color: { r:1, g:0, b:0, a: 1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'controlsAll' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 317| 317| 			name: "Player 2",
| 318| 318| 			civ: "mace",
| 319| 319| 			color: { r:1, g:0, b:0, a:1 },
| 320|    |-			controlsAll: true,
|    | 320|+			"controlsAll": true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
| 323| 323| 			popMax: 300,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'popCount' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 318| 318| 			civ: "mace",
| 319| 319| 			color: { r:1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321|    |-			popCount: 40,
|    | 321|+			"popCount": 40,
| 322| 322| 			popLimit: 30,
| 323| 323| 			popMax: 300,
| 324| 324| 			panelEntities: [],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'popLimit' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 319| 319| 			color: { r:1, g:0, b:0, a:1 },
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322|    |-			popLimit: 30,
|    | 322|+			"popLimit": 30,
| 323| 323| 			popMax: 300,
| 324| 324| 			panelEntities: [],
| 325| 325| 			resourceCounts: { food: 200 },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'popMax' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 320| 320| 			controlsAll: true,
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
| 323|    |-			popMax: 300,
|    | 323|+			"popMax": 300,
| 324| 324| 			panelEntities: [],
| 325| 325| 			resourceCounts: { food: 200 },
| 326| 326| 			trainingBlocked: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'panelEntities' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 321| 321| 			popCount: 40,
| 322| 322| 			popLimit: 30,
| 323| 323| 			popMax: 300,
| 324|    |-			panelEntities: [],
|    | 324|+			"panelEntities": [],
| 325| 325| 			resourceCounts: { food: 200 },
| 326| 326| 			trainingBlocked: false,
| 327| 327| 			state: "active",
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'resourceCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 322| 322| 			popLimit: 30,
| 323| 323| 			popMax: 300,
| 324| 324| 			panelEntities: [],
| 325|    |-			resourceCounts: { food: 200 },
|    | 325|+			"resourceCounts": { food: 200 },
| 326| 326| 			trainingBlocked: false,
| 327| 327| 			state: "active",
| 328| 328| 			team: -1,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'food' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 322| 322| 			popLimit: 30,
| 323| 323| 			popMax: 300,
| 324| 324| 			panelEntities: [],
| 325|    |-			resourceCounts: { food: 200 },
|    | 325|+			resourceCounts: { "food": 200 },
| 326| 326| 			trainingBlocked: false,
| 327| 327| 			state: "active",
| 328| 328| 			team: -1,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'trainingBlocked' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 323| 323| 			popMax: 300,
| 324| 324| 			panelEntities: [],
| 325| 325| 			resourceCounts: { food: 200 },
| 326|    |-			trainingBlocked: false,
|    | 326|+			"trainingBlocked": false,
| 327| 327| 			state: "active",
| 328| 328| 			team: -1,
| 329| 329| 			teamsLocked: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'state' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 324| 324| 			panelEntities: [],
| 325| 325| 			resourceCounts: { food: 200 },
| 326| 326| 			trainingBlocked: false,
| 327|    |-			state: "active",
|    | 327|+			"state": "active",
| 328| 328| 			team: -1,
| 329| 329| 			teamsLocked: false,
| 330| 330| 			cheatsEnabled: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'team' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 325| 325| 			resourceCounts: { food: 200 },
| 326| 326| 			trainingBlocked: false,
| 327| 327| 			state: "active",
| 328|    |-			team: -1,
|    | 328|+			"team": -1,
| 329| 329| 			teamsLocked: false,
| 330| 330| 			cheatsEnabled: false,
| 331| 331| 			disabledTemplates: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'teamsLocked' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 326| 326| 			trainingBlocked: false,
| 327| 327| 			state: "active",
| 328| 328| 			team: -1,
| 329|    |-			teamsLocked: false,
|    | 329|+			"teamsLocked": false,
| 330| 330| 			cheatsEnabled: false,
| 331| 331| 			disabledTemplates: {},
| 332| 332| 			disabledTechnologies: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'cheatsEnabled' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 327| 327| 			state: "active",
| 328| 328| 			team: -1,
| 329| 329| 			teamsLocked: false,
| 330|    |-			cheatsEnabled: false,
|    | 330|+			"cheatsEnabled": false,
| 331| 331| 			disabledTemplates: {},
| 332| 332| 			disabledTechnologies: {},
| 333| 333| 			hasSharedDropsites: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'disabledTemplates' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 328| 328| 			team: -1,
| 329| 329| 			teamsLocked: false,
| 330| 330| 			cheatsEnabled: false,
| 331|    |-			disabledTemplates: {},
|    | 331|+			"disabledTemplates": {},
| 332| 332| 			disabledTechnologies: {},
| 333| 333| 			hasSharedDropsites: false,
| 334| 334| 			hasSharedLos: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'disabledTechnologies' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 329| 329| 			teamsLocked: false,
| 330| 330| 			cheatsEnabled: false,
| 331| 331| 			disabledTemplates: {},
| 332|    |-			disabledTechnologies: {},
|    | 332|+			"disabledTechnologies": {},
| 333| 333| 			hasSharedDropsites: false,
| 334| 334| 			hasSharedLos: false,
| 335| 335| 			spyCostMultiplier: 1,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'hasSharedDropsites' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 330| 330| 			cheatsEnabled: false,
| 331| 331| 			disabledTemplates: {},
| 332| 332| 			disabledTechnologies: {},
| 333|    |-			hasSharedDropsites: false,
|    | 333|+			"hasSharedDropsites": false,
| 334| 334| 			hasSharedLos: false,
| 335| 335| 			spyCostMultiplier: 1,
| 336| 336| 			phase: "village",
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'hasSharedLos' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 331| 331| 			disabledTemplates: {},
| 332| 332| 			disabledTechnologies: {},
| 333| 333| 			hasSharedDropsites: false,
| 334|    |-			hasSharedLos: false,
|    | 334|+			"hasSharedLos": false,
| 335| 335| 			spyCostMultiplier: 1,
| 336| 336| 			phase: "village",
| 337| 337| 			isAlly: [true, true],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'spyCostMultiplier' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 332| 332| 			disabledTechnologies: {},
| 333| 333| 			hasSharedDropsites: false,
| 334| 334| 			hasSharedLos: false,
| 335|    |-			spyCostMultiplier: 1,
|    | 335|+			"spyCostMultiplier": 1,
| 336| 336| 			phase: "village",
| 337| 337| 			isAlly: [true, true],
| 338| 338| 			isMutualAlly: [false, false],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'phase' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 333| 333| 			hasSharedDropsites: false,
| 334| 334| 			hasSharedLos: false,
| 335| 335| 			spyCostMultiplier: 1,
| 336|    |-			phase: "village",
|    | 336|+			"phase": "village",
| 337| 337| 			isAlly: [true, true],
| 338| 338| 			isMutualAlly: [false, false],
| 339| 339| 			isNeutral: [false, false],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 334| 334| 			hasSharedLos: false,
| 335| 335| 			spyCostMultiplier: 1,
| 336| 336| 			phase: "village",
| 337|    |-			isAlly: [true, true],
|    | 337|+			"isAlly": [true, true],
| 338| 338| 			isMutualAlly: [false, false],
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isMutualAlly' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 335| 335| 			spyCostMultiplier: 1,
| 336| 336| 			phase: "village",
| 337| 337| 			isAlly: [true, true],
| 338|    |-			isMutualAlly: [false, false],
|    | 338|+			"isMutualAlly": [false, false],
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isNeutral' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 336| 336| 			phase: "village",
| 337| 337| 			isAlly: [true, true],
| 338| 338| 			isMutualAlly: [false, false],
| 339|    |-			isNeutral: [false, false],
|    | 339|+			"isNeutral": [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'isEnemy' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 337| 337| 			isAlly: [true, true],
| 338| 338| 			isMutualAlly: [false, false],
| 339| 339| 			isNeutral: [false, false],
| 340|    |-			isEnemy: [false, false],
|    | 340|+			"isEnemy": [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'entityLimits' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 338| 338| 			isMutualAlly: [false, false],
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341|    |-			entityLimits: {"Bar": 20},
|    | 341|+			"entityLimits": {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 338| 338| 			isMutualAlly: [false, false],
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341|    |-			entityLimits: {"Bar": 20},
|    | 341|+			entityLimits: { "Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 338| 338| 			isMutualAlly: [false, false],
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341|    |-			entityLimits: {"Bar": 20},
|    | 341|+			entityLimits: {"Bar": 20 },
| 342| 342| 			entityCounts: {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'entityCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342|    |-			entityCounts: {"Bar": 0},
|    | 342|+			"entityCounts": {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342|    |-			entityCounts: {"Bar": 0},
|    | 342|+			entityCounts: { "Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 339| 339| 			isNeutral: [false, false],
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342|    |-			entityCounts: {"Bar": 0},
|    | 342|+			entityCounts: {"Bar": 0 },
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'entityLimitChangers' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343|    |-			entityLimitChangers: {"Bar": {}},
|    | 343|+			"entityLimitChangers": {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
| 346| 346| 			researchedTechs: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343|    |-			entityLimitChangers: {"Bar": {}},
|    | 343|+			entityLimitChangers: { "Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
| 346| 346| 			researchedTechs: new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 340| 340| 			isEnemy: [false, false],
| 341| 341| 			entityLimits: {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343|    |-			entityLimitChangers: {"Bar": {}},
|    | 343|+			entityLimitChangers: {"Bar": {} },
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
| 346| 346| 			researchedTechs: new Set(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'researchQueued' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 341| 341| 			entityLimits: {"Bar": 20},
| 342| 342| 			entityCounts: {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344|    |-			researchQueued: new Map(),
|    | 344|+			"researchQueued": new Map(),
| 345| 345| 			researchStarted: new Set(),
| 346| 346| 			researchedTechs: new Set(),
| 347| 347| 			classCounts: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'researchStarted' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 342| 342| 			entityCounts: {"Bar": 0},
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345|    |-			researchStarted: new Set(),
|    | 345|+			"researchStarted": new Set(),
| 346| 346| 			researchedTechs: new Set(),
| 347| 347| 			classCounts: {},
| 348| 348| 			typeCountsByClass: {},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'researchedTechs' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 343| 343| 			entityLimitChangers: {"Bar": {}},
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
| 346|    |-			researchedTechs: new Set(),
|    | 346|+			"researchedTechs": new Set(),
| 347| 347| 			classCounts: {},
| 348| 348| 			typeCountsByClass: {},
| 349| 349| 			canBarter: false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'classCounts' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 344| 344| 			researchQueued: new Map(),
| 345| 345| 			researchStarted: new Set(),
| 346| 346| 			researchedTechs: new Set(),
| 347|    |-			classCounts: {},
|    | 347|+			"classCounts": {},
| 348| 348| 			typeCountsByClass: {},
| 349| 349| 			canBarter: false,
| 350| 350| 			barterPrices: {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'typeCountsByClass' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 345| 345| 			researchStarted: new Set(),
| 346| 346| 			researchedTechs: new Set(),
| 347| 347| 			classCounts: {},
| 348|    |-			typeCountsByClass: {},
|    | 348|+			"typeCountsByClass": {},
| 349| 349| 			canBarter: false,
| 350| 350| 			barterPrices: {
| 351| 351| 				"buy": { "food": 150 },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'canBarter' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 346| 346| 			researchedTechs: new Set(),
| 347| 347| 			classCounts: {},
| 348| 348| 			typeCountsByClass: {},
| 349|    |-			canBarter: false,
|    | 349|+			"canBarter": false,
| 350| 350| 			barterPrices: {
| 351| 351| 				"buy": { "food": 150 },
| 352| 352| 				"sell": { "food": 25 }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'barterPrices' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 347| 347| 			classCounts: {},
| 348| 348| 			typeCountsByClass: {},
| 349| 349| 			canBarter: false,
| 350|    |-			barterPrices: {
|    | 350|+			"barterPrices": {
| 351| 351| 				"buy": { "food": 150 },
| 352| 352| 				"sell": { "food": 25 }
| 353| 353| 			},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'statistics' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 351| 351| 				"buy": { "food": 150 },
| 352| 352| 				"sell": { "food": 25 }
| 353| 353| 			},
| 354|    |-			statistics: {
|    | 354|+			"statistics": {
| 355| 355| 				resourcesGathered: {
| 356| 356| 					food: 100,
| 357| 357| 					wood: 0,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'resourcesGathered' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 352| 352| 				"sell": { "food": 25 }
| 353| 353| 			},
| 354| 354| 			statistics: {
| 355|    |-				resourcesGathered: {
|    | 355|+				"resourcesGathered": {
| 356| 356| 					food: 100,
| 357| 357| 					wood: 0,
| 358| 358| 					metal: 0,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'food' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 353| 353| 			},
| 354| 354| 			statistics: {
| 355| 355| 				resourcesGathered: {
| 356|    |-					food: 100,
|    | 356|+					"food": 100,
| 357| 357| 					wood: 0,
| 358| 358| 					metal: 0,
| 359| 359| 					stone: 0,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'wood' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 354| 354| 			statistics: {
| 355| 355| 				resourcesGathered: {
| 356| 356| 					food: 100,
| 357|    |-					wood: 0,
|    | 357|+					"wood": 0,
| 358| 358| 					metal: 0,
| 359| 359| 					stone: 0,
| 360| 360| 					vegetarianFood: 0
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'metal' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 355| 355| 				resourcesGathered: {
| 356| 356| 					food: 100,
| 357| 357| 					wood: 0,
| 358|    |-					metal: 0,
|    | 358|+					"metal": 0,
| 359| 359| 					stone: 0,
| 360| 360| 					vegetarianFood: 0
| 361| 361| 				},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'stone' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 356| 356| 					food: 100,
| 357| 357| 					wood: 0,
| 358| 358| 					metal: 0,
| 359|    |-					stone: 0,
|    | 359|+					"stone": 0,
| 360| 360| 					vegetarianFood: 0
| 361| 361| 				},
| 362| 362| 				percentMapExplored: 10
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'vegetarianFood' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 357| 357| 					wood: 0,
| 358| 358| 					metal: 0,
| 359| 359| 					stone: 0,
| 360|    |-					vegetarianFood: 0
|    | 360|+					"vegetarianFood": 0
| 361| 361| 				},
| 362| 362| 				percentMapExplored: 10
| 363| 363| 			}
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'percentMapExplored' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 359| 359| 					stone: 0,
| 360| 360| 					vegetarianFood: 0
| 361| 361| 				},
| 362|    |-				percentMapExplored: 10
|    | 362|+				"percentMapExplored": 10
| 363| 363| 			}
| 364| 364| 		}
| 365| 365| 	],
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'circularMap' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 363| 363| 			}
| 364| 364| 		}
| 365| 365| 	],
| 366|    |-	circularMap: false,
|    | 366|+	"circularMap": false,
| 367| 367| 	timeElapsed: 0,
| 368| 368| 	"victoryConditions": ["conquest", "wonder"],
| 369| 369| 	alliedVictory: false
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'timeElapsed' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 364| 364| 		}
| 365| 365| 	],
| 366| 366| 	circularMap: false,
| 367|    |-	timeElapsed: 0,
|    | 367|+	"timeElapsed": 0,
| 368| 368| 	"victoryConditions": ["conquest", "wonder"],
| 369| 369| 	alliedVictory: false
| 370| 370| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'alliedVictory' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 366| 366| 	circularMap: false,
| 367| 367| 	timeElapsed: 0,
| 368| 368| 	"victoryConditions": ["conquest", "wonder"],
| 369|    |-	alliedVictory: false
|    | 369|+	"alliedVictory": false
| 370| 370| });
| 371| 371| 
| 372| 372| TS_ASSERT_UNEVAL_EQUALS(cmp.GetExtendedSimulationState(), {
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'r'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 374| 374| 		{
| 375| 375| 			"name": "Player 1",
| 376| 376| 			"civ": "gaia",
| 377|    |-			"color": { "r":1, "g":1, "b":1, "a":1 },
|    | 377|+			"color": { "r": 1, "g":1, "b":1, "a":1 },
| 378| 378| 			"controlsAll": false,
| 379| 379| 			"popCount": 10,
| 380| 380| 			"popLimit": 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'g'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 374| 374| 		{
| 375| 375| 			"name": "Player 1",
| 376| 376| 			"civ": "gaia",
| 377|    |-			"color": { "r":1, "g":1, "b":1, "a":1 },
|    | 377|+			"color": { "r":1, "g": 1, "b":1, "a":1 },
| 378| 378| 			"controlsAll": false,
| 379| 379| 			"popCount": 10,
| 380| 380| 			"popLimit": 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'b'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 374| 374| 		{
| 375| 375| 			"name": "Player 1",
| 376| 376| 			"civ": "gaia",
| 377|    |-			"color": { "r":1, "g":1, "b":1, "a":1 },
|    | 377|+			"color": { "r":1, "g":1, "b": 1, "a":1 },
| 378| 378| 			"controlsAll": false,
| 379| 379| 			"popCount": 10,
| 380| 380| 			"popLimit": 20,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'a'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 374| 374| 		{
| 375| 375| 			"name": "Player 1",
| 376| 376| 			"civ": "gaia",
| 377|    |-			"color": { "r":1, "g":1, "b":1, "a":1 },
|    | 377|+			"color": { "r":1, "g":1, "b":1, "a": 1 },
| 378| 378| 			"controlsAll": false,
| 379| 379| 			"popCount": 10,
| 380| 380| 			"popLimit": 20,
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 396| 396| 			"isMutualAlly": [false, false],
| 397| 397| 			"isNeutral": [false, false],
| 398| 398| 			"isEnemy": [true, true],
| 399|    |-			"entityLimits": {"Foo": 10},
|    | 399|+			"entityLimits": { "Foo": 10},
| 400| 400| 			"entityCounts": {"Foo": 5},
| 401| 401| 			"entityLimitChangers": {"Foo": {}},
| 402| 402| 			"researchQueued": new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 396| 396| 			"isMutualAlly": [false, false],
| 397| 397| 			"isNeutral": [false, false],
| 398| 398| 			"isEnemy": [true, true],
| 399|    |-			"entityLimits": {"Foo": 10},
|    | 399|+			"entityLimits": {"Foo": 10 },
| 400| 400| 			"entityCounts": {"Foo": 5},
| 401| 401| 			"entityLimitChangers": {"Foo": {}},
| 402| 402| 			"researchQueued": new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 397| 397| 			"isNeutral": [false, false],
| 398| 398| 			"isEnemy": [true, true],
| 399| 399| 			"entityLimits": {"Foo": 10},
| 400|    |-			"entityCounts": {"Foo": 5},
|    | 400|+			"entityCounts": { "Foo": 5},
| 401| 401| 			"entityLimitChangers": {"Foo": {}},
| 402| 402| 			"researchQueued": new Map(),
| 403| 403| 			"researchStarted": new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 397| 397| 			"isNeutral": [false, false],
| 398| 398| 			"isEnemy": [true, true],
| 399| 399| 			"entityLimits": {"Foo": 10},
| 400|    |-			"entityCounts": {"Foo": 5},
|    | 400|+			"entityCounts": {"Foo": 5 },
| 401| 401| 			"entityLimitChangers": {"Foo": {}},
| 402| 402| 			"researchQueued": new Map(),
| 403| 403| 			"researchStarted": new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 398| 398| 			"isEnemy": [true, true],
| 399| 399| 			"entityLimits": {"Foo": 10},
| 400| 400| 			"entityCounts": {"Foo": 5},
| 401|    |-			"entityLimitChangers": {"Foo": {}},
|    | 401|+			"entityLimitChangers": { "Foo": {}},
| 402| 402| 			"researchQueued": new Map(),
| 403| 403| 			"researchStarted": new Set(),
| 404| 404| 			"researchedTechs": new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 398| 398| 			"isEnemy": [true, true],
| 399| 399| 			"entityLimits": {"Foo": 10},
| 400| 400| 			"entityCounts": {"Foo": 5},
| 401|    |-			"entityLimitChangers": {"Foo": {}},
|    | 401|+			"entityLimitChangers": {"Foo": {} },
| 402| 402| 			"researchQueued": new Map(),
| 403| 403| 			"researchStarted": new Set(),
| 404| 404| 			"researchedTechs": new Set(),
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'r'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 446| 446| 		{
| 447| 447| 			"name": "Player 2",
| 448| 448| 			"civ": "mace",
| 449|    |-			"color": { "r":1, "g":0, "b":0, "a":1 },
|    | 449|+			"color": { "r": 1, "g":0, "b":0, "a":1 },
| 450| 450| 			"controlsAll": true,
| 451| 451| 			"popCount": 40,
| 452| 452| 			"popLimit": 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'g'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 446| 446| 		{
| 447| 447| 			"name": "Player 2",
| 448| 448| 			"civ": "mace",
| 449|    |-			"color": { "r":1, "g":0, "b":0, "a":1 },
|    | 449|+			"color": { "r":1, "g": 0, "b":0, "a":1 },
| 450| 450| 			"controlsAll": true,
| 451| 451| 			"popCount": 40,
| 452| 452| 			"popLimit": 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'b'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 446| 446| 		{
| 447| 447| 			"name": "Player 2",
| 448| 448| 			"civ": "mace",
| 449|    |-			"color": { "r":1, "g":0, "b":0, "a":1 },
|    | 449|+			"color": { "r":1, "g":0, "b": 0, "a":1 },
| 450| 450| 			"controlsAll": true,
| 451| 451| 			"popCount": 40,
| 452| 452| 			"popLimit": 30,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'a'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 446| 446| 		{
| 447| 447| 			"name": "Player 2",
| 448| 448| 			"civ": "mace",
| 449|    |-			"color": { "r":1, "g":0, "b":0, "a":1 },
|    | 449|+			"color": { "r":1, "g":0, "b":0, "a": 1 },
| 450| 450| 			"controlsAll": true,
| 451| 451| 			"popCount": 40,
| 452| 452| 			"popLimit": 30,
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 468| 468| 			"isMutualAlly": [false, false],
| 469| 469| 			"isNeutral": [false, false],
| 470| 470| 			"isEnemy": [false, false],
| 471|    |-			"entityLimits": {"Bar": 20},
|    | 471|+			"entityLimits": { "Bar": 20},
| 472| 472| 			"entityCounts": {"Bar": 0},
| 473| 473| 			"entityLimitChangers": {"Bar": {}},
| 474| 474| 			"researchQueued": new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 468| 468| 			"isMutualAlly": [false, false],
| 469| 469| 			"isNeutral": [false, false],
| 470| 470| 			"isEnemy": [false, false],
| 471|    |-			"entityLimits": {"Bar": 20},
|    | 471|+			"entityLimits": {"Bar": 20 },
| 472| 472| 			"entityCounts": {"Bar": 0},
| 473| 473| 			"entityLimitChangers": {"Bar": {}},
| 474| 474| 			"researchQueued": new Map(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 469| 469| 			"isNeutral": [false, false],
| 470| 470| 			"isEnemy": [false, false],
| 471| 471| 			"entityLimits": {"Bar": 20},
| 472|    |-			"entityCounts": {"Bar": 0},
|    | 472|+			"entityCounts": { "Bar": 0},
| 473| 473| 			"entityLimitChangers": {"Bar": {}},
| 474| 474| 			"researchQueued": new Map(),
| 475| 475| 			"researchStarted": new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 469| 469| 			"isNeutral": [false, false],
| 470| 470| 			"isEnemy": [false, false],
| 471| 471| 			"entityLimits": {"Bar": 20},
| 472|    |-			"entityCounts": {"Bar": 0},
|    | 472|+			"entityCounts": {"Bar": 0 },
| 473| 473| 			"entityLimitChangers": {"Bar": {}},
| 474| 474| 			"researchQueued": new Map(),
| 475| 475| 			"researchStarted": new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 470| 470| 			"isEnemy": [false, false],
| 471| 471| 			"entityLimits": {"Bar": 20},
| 472| 472| 			"entityCounts": {"Bar": 0},
| 473|    |-			"entityLimitChangers": {"Bar": {}},
|    | 473|+			"entityLimitChangers": { "Bar": {}},
| 474| 474| 			"researchQueued": new Map(),
| 475| 475| 			"researchStarted": new Set(),
| 476| 476| 			"researchedTechs": new Set(),
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 470| 470| 			"isEnemy": [false, false],
| 471| 471| 			"entityLimits": {"Bar": 20},
| 472| 472| 			"entityCounts": {"Bar": 0},
| 473|    |-			"entityLimitChangers": {"Bar": {}},
|    | 473|+			"entityLimitChangers": {"Bar": {} },
| 474| 474| 			"researchQueued": new Map(),
| 475| 475| 			"researchStarted": new Set(),
| 476| 476| 			"researchedTechs": new Set(),
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetEntitiesList' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 524| 524| 
| 525| 525| 
| 526| 526| AddMock(10, IID_Builder, {
| 527|    |-	GetEntitiesList: function() {
|    | 527|+	"GetEntitiesList": function() {
| 528| 528| 		return ["test1", "test2"];
| 529| 529| 	},
| 530| 530| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetHitpoints' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 530| 530| });
| 531| 531| 
| 532| 532| AddMock(10, IID_Health, {
| 533|    |-	GetHitpoints: function() { return 50; },
|    | 533|+	"GetHitpoints": function() { return 50; },
| 534| 534| 	GetMaxHitpoints: function() { return 60; },
| 535| 535| 	IsRepairable: function() { return false; },
| 536| 536| 	IsUnhealable: function() { return false; }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetMaxHitpoints' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 531| 531| 
| 532| 532| AddMock(10, IID_Health, {
| 533| 533| 	GetHitpoints: function() { return 50; },
| 534|    |-	GetMaxHitpoints: function() { return 60; },
|    | 534|+	"GetMaxHitpoints": function() { return 60; },
| 535| 535| 	IsRepairable: function() { return false; },
| 536| 536| 	IsUnhealable: function() { return false; }
| 537| 537| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsRepairable' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 532| 532| AddMock(10, IID_Health, {
| 533| 533| 	GetHitpoints: function() { return 50; },
| 534| 534| 	GetMaxHitpoints: function() { return 60; },
| 535|    |-	IsRepairable: function() { return false; },
|    | 535|+	"IsRepairable": function() { return false; },
| 536| 536| 	IsUnhealable: function() { return false; }
| 537| 537| });
| 538| 538| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsUnhealable' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 533| 533| 	GetHitpoints: function() { return 50; },
| 534| 534| 	GetMaxHitpoints: function() { return 60; },
| 535| 535| 	IsRepairable: function() { return false; },
| 536|    |-	IsUnhealable: function() { return false; }
|    | 536|+	"IsUnhealable": function() { return false; }
| 537| 537| });
| 538| 538| 
| 539| 539| AddMock(10, IID_Identity, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetClassesList' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 537| 537| });
| 538| 538| 
| 539| 539| AddMock(10, IID_Identity, {
| 540|    |-	GetClassesList: function() { return ["class1", "class2"]; },
|    | 540|+	"GetClassesList": function() { return ["class1", "class2"]; },
| 541| 541| 	GetVisibleClassesList: function() { return ["class3", "class4"]; },
| 542| 542| 	GetRank: function() { return "foo"; },
| 543| 543| 	GetSelectionGroupName: function() { return "Selection Group Name"; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetVisibleClassesList' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 538| 538| 
| 539| 539| AddMock(10, IID_Identity, {
| 540| 540| 	GetClassesList: function() { return ["class1", "class2"]; },
| 541|    |-	GetVisibleClassesList: function() { return ["class3", "class4"]; },
|    | 541|+	"GetVisibleClassesList": function() { return ["class3", "class4"]; },
| 542| 542| 	GetRank: function() { return "foo"; },
| 543| 543| 	GetSelectionGroupName: function() { return "Selection Group Name"; },
| 544| 544| 	HasClass: function() { return true; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetRank' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 539| 539| AddMock(10, IID_Identity, {
| 540| 540| 	GetClassesList: function() { return ["class1", "class2"]; },
| 541| 541| 	GetVisibleClassesList: function() { return ["class3", "class4"]; },
| 542|    |-	GetRank: function() { return "foo"; },
|    | 542|+	"GetRank": function() { return "foo"; },
| 543| 543| 	GetSelectionGroupName: function() { return "Selection Group Name"; },
| 544| 544| 	HasClass: function() { return true; },
| 545| 545| 	IsUndeletable: function() { return false; },
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetSelectionGroupName' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 540| 540| 	GetClassesList: function() { return ["class1", "class2"]; },
| 541| 541| 	GetVisibleClassesList: function() { return ["class3", "class4"]; },
| 542| 542| 	GetRank: function() { return "foo"; },
| 543|    |-	GetSelectionGroupName: function() { return "Selection Group Name"; },
|    | 543|+	"GetSelectionGroupName": function() { return "Selection Group Name"; },
| 544| 544| 	HasClass: function() { return true; },
| 545| 545| 	IsUndeletable: function() { return false; },
| 546| 546| 	CanUseSomeFormation: function() { return false; }
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'HasClass' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 541| 541| 	GetVisibleClassesList: function() { return ["class3", "class4"]; },
| 542| 542| 	GetRank: function() { return "foo"; },
| 543| 543| 	GetSelectionGroupName: function() { return "Selection Group Name"; },
| 544|    |-	HasClass: function() { return true; },
|    | 544|+	"HasClass": function() { return true; },
| 545| 545| 	IsUndeletable: function() { return false; },
| 546| 546| 	CanUseSomeFormation: function() { return false; }
| 547| 547| });
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsUndeletable' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 542| 542| 	GetRank: function() { return "foo"; },
| 543| 543| 	GetSelectionGroupName: function() { return "Selection Group Name"; },
| 544| 544| 	HasClass: function() { return true; },
| 545|    |-	IsUndeletable: function() { return false; },
|    | 545|+	"IsUndeletable": function() { return false; },
| 546| 546| 	CanUseSomeFormation: function() { return false; }
| 547| 547| });
| 548| 548| 
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'CanUseSomeFormation' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 543| 543| 	GetSelectionGroupName: function() { return "Selection Group Name"; },
| 544| 544| 	HasClass: function() { return true; },
| 545| 545| 	IsUndeletable: function() { return false; },
| 546|    |-	CanUseSomeFormation: function() { return false; }
|    | 546|+	"CanUseSomeFormation": function() { return false; }
| 547| 547| });
| 548| 548| 
| 549| 549| AddMock(10, IID_Position, {
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetTurretParent' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 547| 547| });
| 548| 548| 
| 549| 549| AddMock(10, IID_Position, {
| 550|    |-	GetTurretParent: function() {return INVALID_ENTITY;},
|    | 550|+	"GetTurretParent": function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552| 552| 		return {x:1, y:2, z:3};
| 553| 553| 	},
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'GetPosition' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 548| 548| 
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551|    |-	GetPosition: function() {
|    | 551|+	"GetPosition": function() {
| 552| 552| 		return {x:1, y:2, z:3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return { x:1, y:2, z:3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'x' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {"x":1, y:2, z:3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'x'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {x: 1, y:2, z:3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'y' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {x:1, "y":2, z:3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'y'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {x:1, y: 2, z:3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'z' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {x:1, y:2, "z":3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'z'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {x:1, y:2, z: 3};
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 549| 549| AddMock(10, IID_Position, {
| 550| 550| 	GetTurretParent: function() {return INVALID_ENTITY;},
| 551| 551| 	GetPosition: function() {
| 552|    |-		return {x:1, y:2, z:3};
|    | 552|+		return {x:1, y:2, z:3 };
| 553| 553| 	},
| 554| 554| 	IsInWorld: function() {
| 555| 555| 		return true;
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'IsInWorld' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 551| 551| 	GetPosition: function() {
| 552| 552| 		return {x:1, y:2, z:3};
| 553| 553| 	},
| 554|    |-	IsInWorld: function() {
|    | 554|+	"IsInWorld": function() {
| 555| 555| 		return true;
| 556| 556| 	}
| 557| 557| });
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required after '{'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": { x:1, y:2, z:3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'x' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {"x":1, y:2, z:3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'x'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {x: 1, y:2, z:3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'y' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {x:1, "y":2, z:3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'y'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {x:1, y: 2, z:3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (quote-props):
|    | Unquoted property 'z' found.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {x:1, y:2, "z":3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'z'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {x:1, y:2, z: 3},
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (object-curly-spacing):
|    | A space is required before '}'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 576| 576| 		"canDelete": true,
| 577| 577| 		"canUseSomeFormation": false
| 578| 578| 	},
| 579|    |-	"position": {x:1, y:2, z:3},
|    | 579|+	"position": {x:1, y:2, z:3 },
| 580| 580| 	"hitpoints": 50,
| 581| 581| 	"maxHitpoints": 60,
| 582| 582| 	"needsRepair": false,
|    | [NORMAL] ESLintBear (key-spacing):
|    | Missing space before value for key 'isBarterMarket'.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
| 584| 584| 	"builder": true,
| 585| 585| 	"canGarrison": false,
| 586| 586| 	"visibility": "visible",
| 587|    |-	"isBarterMarket":true,
|    | 587|+	"isBarterMarket": true,
| 588| 588| 	"resourceTrickle": {
| 589| 589| 		"interval": 1250,
| 590| 590| 		"rates": { "food": 2, "wood": 3, "stone": 5, "metal": 9 }
Executing section cli...

Link to build: https://jenkins.wildfiregames.com/job/differential/1591/display/redirect