Page MenuHomeWildfire Games

Allow restoring lost wall turrets
Needs ReviewPublic

Authored by Stan on Jan 2 2018, 6:40 PM.

Details

Reviewers
Angen
Group Reviewers
Restricted Owners Package(Owns No Changed Paths)
Trac Tickets
#3789
Summary

Currently it's impossible to rebuild a lost wall turret without destroying/rebuilding adjacent wall segments.

Solution in this patch:
When wall tower is destroyed, new entity (slot) is spawned at its position, which is invisible until placing wall.
If player chooses wall as building, slots where can be rebuild tower are displayed.
Placement is snapped to this slots and in this case player can rebuild tower.
To be able to build wall and another segments, tower has to be rebuild first.
These tower slots are destroyed when foundation is placed on them to avoid multiple tower buildings.

Currently when there is some tower slot, any wall tower (even palisade tower) can be build on its place. (now you can rebuild wooden tower with stone tower and join or create mix of different wall types.

Test Plan
  1. Rebuild game
  2. Place wall turret
  3. Destroy turret
  4. Rebuild turret
  5. Destroy turret
  6. Destroy building with territory
  7. Confirm you do not see slot
  8. Build building with territory
  9. Confirm you see slot again
  10. Change perspectives
  11. Confirm you do not see slots that are not in your territory
  12. Reveal map
  13. Confirm you do not see your slots when not placing building
  14. Confirm you do not see slots that are not in your territory
  15. Build anything over slot
  16. Confirm slot is not there anymore

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
Freagarach added inline comments.Oct 12 2019, 9:01 PM
binaries/data/mods/public/gui/session/input.js
193

Is placementSupport.wallSlots; the same?

binaries/data/mods/public/simulation/components/GuiInterface.js
1171

-,

1179

-,

1245

+to +.

1248

+.

1256

-,

1572–1573

Could check for this earlier don't check the rest?

1923–1932

filter?

1937–1943

this.GetSlots(player, data)?

2079

-,

binaries/data/mods/public/simulation/components/Health.js
371–372
{
...
}
binaries/data/mods/public/simulation/components/Visibility.js
101

JSDOC.

106

JSDOC.

binaries/data/mods/public/simulation/templates/template_building_slot.xml
32–43

Does it need to have health?

source/simulation2/components/CCmpRangeManager.cpp
1622

+.

Quickly tested the patch. Looks like a really nice behaviour. 👍
But here are some things I noticed:

  • I think elexis mentioned it already: There is no way to get rid of the ghosts of dead towers.
  • Is it intended that you can't build more than a single tower when starting from a ghost? (Like starting a whole new wall from a ghosts point)
  • And most important: If you go into wall building mode and press Escape the ghosts are still displayed. (Such bugs wouldn't happen if GuiInterface would use a FSM with defined entry/exit functions)
Stan marked 16 inline comments as done.Oct 12 2019, 10:58 PM
In D1190#98997, @Imarok wrote:

Quickly tested the patch. Looks like a really nice behaviour. 👍
But here are some things I noticed:

  • I think elexis mentioned it already: There is no way to get rid of the ghosts of dead towers.

Yeah the only way to get rid of them is to rebuild them.

  • Is it intended that you can't build more than a single tower when starting from a ghost? (Like starting a whole new wall from a ghosts point)

Nope, I noticed it aswell, it was in the initial implementation, help is appreciated.

  • And most important: If you go into wall building mode and press Escape the ghosts are still displayed. (Such bugs wouldn't happen if GuiInterface would use a FSM with defined entry/exit functions)

How can I handle that ?

binaries/data/mods/public/gui/session/input.js
193

Would be undefined :)

binaries/data/mods/public/simulation/components/Health.js
341

Actually nothing, I changed both functions slightly to allow for that.

371–372

Good catch.

binaries/data/mods/public/simulation/components/Visibility.js
101

Getter and setter don't really require jsdoc :) Unless they are doing nontrivial stuff;

binaries/data/mods/public/simulation/templates/template_building_slot.xml
32–43

Nope, thanks

Stan updated this revision to Diff 10138.Oct 12 2019, 10:59 PM
Stan marked 5 inline comments as done.

Fix some comments

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

Link to build: https://jenkins.wildfiregames.com/job/vs2015-differential/444/display/redirect

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

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 489| 489| 
| 490| 490| 	if (this.regenRate != oldRegenRate || this.idleRegenRate != oldIdleRegenRate)
| 491| 491| 		this.CheckRegenTimer();
| 492|    |-}
|    | 492|+};
| 493| 493| 
| 494| 494| Health.prototype.OnValueModification = function(msg)
| 495| 495| {
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 501| 501| {
| 502| 502| 	if (msg.to != INVALID_PLAYER)
| 503| 503| 		this.RecalculateValues();
| 504|    |-}
|    | 504|+};
| 505| 505| 
| 506| 506| Health.prototype.RegisterHealthChanged = function(from)
| 507| 507| {

binaries/data/mods/public/simulation/components/Health.js
| 492| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Health.js
| 504| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '||' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|  87|  87| 		// If the elements are still strings, split them by space or by '+'
|  88|  88| 		if (typeof sublist == "string")
|  89|  89| 			sublist = sublist.split(/[+\s]+/);
|  90|    |-		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1)
|  91|    |-		                    || (c[0] != "!" && classes.indexOf(c) != -1)))
|    |  90|+		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1) ||
|    |  91|+		                    (c[0] != "!" && classes.indexOf(c) != -1)))
|  92|  92| 			return true;
|  93|  93| 	}
|  94|  94| 

binaries/data/mods/public/globalscripts/Templates.js
|  91| »   »   ····················||·(c[0]·!=·"!"·&&·classes.indexOf(c)·!=·-1)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.
|    | [NORMAL] ESLintBear (space-unary-ops):
|    | Unary word operator 'typeof' must be followed by whitespace.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 331| 331| 	}
| 332| 332| 
| 333| 333| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 334|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 334|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 335| 335| 	{
| 336| 336| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 337| 337| 		return false;
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 482| 482| 	mouseIsOverObject = (hoveredObject != null);
| 483| 483| 
| 484| 484| 	// Close the menu when interacting with the game world
| 485|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 486|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 485|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 486|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 487| 487| 		closeMenu();
| 488| 488| 
| 489| 489| 	// State-machine processing:
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 643| 643| 		// user to continue building walls.
| 644| 644| 		switch (ev.type)
| 645| 645| 		{
| 646|    |-			case "mousemotion":
|    | 646|+		case "mousemotion":
| 647| 647| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 644| 644| 		switch (ev.type)
| 645| 645| 		{
| 646| 646| 			case "mousemotion":
| 647|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 647|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 646| 646| 			case "mousemotion":
| 647| 647| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649|    |-				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 649|+			// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 647| 647| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650|    |-				// the ending point and the starting point to snap to.
|    | 650|+			// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
| 651|    |-				//
|    | 651|+			//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 652|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 650| 650| 				// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 653|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 654|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 655|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
| 658| 658| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 656|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
| 658| 658| 
| 659| 659| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657|    |-				// points.
|    | 657|+			// points.
| 658| 658| 
| 659| 659| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
| 658| 658| 
| 659|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 659|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662| 662| 				if (result && result.cost)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 657| 657| 				// points.
| 658| 658| 
| 659| 659| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 660|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662| 662| 				if (result && result.cost)
| 663| 663| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 659| 659| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662|    |-				if (result && result.cost)
|    | 662|+			if (result && result.cost)
| 663| 663| 				{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662| 662| 				if (result && result.cost)
| 663|    |-				{
|    | 663|+			{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 661| 661| 
| 662| 662| 				if (result && result.cost)
| 663| 663| 				{
| 664|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 664|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 662| 662| 				if (result && result.cost)
| 663| 663| 				{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665|    |-					placementSupport.tooltipMessage = [
|    | 665|+				placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 663| 663| 				{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666|    |-						getEntityCostTooltip(result),
|    | 666|+					getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
| 669| 669| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667|    |-						getNeededResourcesTooltip(neededResources)
|    | 667|+					getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
| 669| 669| 				}
| 670| 670| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668|    |-					].filter(tip => tip).join("\n");
|    | 668|+				].filter(tip => tip).join("\n");
| 669| 669| 				}
| 670| 670| 
| 671| 671| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
| 669|    |-				}
|    | 669|+			}
| 670| 670| 
| 671| 671| 				break;
| 672| 672| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 668| 668| 					].filter(tip => tip).join("\n");
| 669| 669| 				}
| 670| 670| 
| 671|    |-				break;
|    | 671|+			break;
| 672| 672| 
| 673| 673| 			case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 670| 670| 
| 671| 671| 				break;
| 672| 672| 
| 673|    |-			case "mousebuttondown":
|    | 673|+		case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 671| 671| 				break;
| 672| 672| 
| 673| 673| 			case "mousebuttondown":
| 674|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 674|+			if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 672| 672| 
| 673| 673| 			case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675|    |-				{
|    | 675|+			{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 673| 673| 			case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 676|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
| 679| 679| 						if (queued)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677|    |-					if (tryPlaceWall(queued))
|    | 677|+				if (tryPlaceWall(queued))
| 678| 678| 					{
| 679| 679| 						if (queued)
| 680| 680| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 675| 675| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678|    |-					{
|    | 678|+				{
| 679| 679| 						if (queued)
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
| 679|    |-						if (queued)
|    | 679|+					if (queued)
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
| 679| 679| 						if (queued)
| 680|    |-						{
|    | 680|+					{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 678| 678| 					{
| 679| 679| 						if (queued)
| 680| 680| 						{
| 681|    |-							// continue building, just set a new starting position where we left off
|    | 681|+						// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 679| 679| 						if (queued)
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 682|+						placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683|    |-							placementSupport.wallEndPosition = undefined;
|    | 683|+						placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 685|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
| 687| 687| 						else
| 688| 688| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686|    |-						}
|    | 686|+					}
| 687| 687| 						else
| 688| 688| 						{
| 689| 689| 							placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
| 687|    |-						else
|    | 687|+					else
| 688| 688| 						{
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
| 687| 687| 						else
| 688|    |-						{
|    | 688|+					{
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 686| 686| 						}
| 687| 687| 						else
| 688| 688| 						{
| 689|    |-							placementSupport.Reset();
|    | 689|+						placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 687| 687| 						else
| 688| 688| 						{
| 689| 689| 							placementSupport.Reset();
| 690|    |-							inputState = INPUT_NORMAL;
|    | 690|+						inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693| 693| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 688| 688| 						{
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691|    |-							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 691|+						Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693| 693| 					}
| 694| 694| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692|    |-						}
|    | 692|+					}
| 693| 693| 					}
| 694| 694| 					else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693|    |-					}
|    | 693|+				}
| 694| 694| 					else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693| 693| 					}
| 694|    |-					else
|    | 694|+				else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 692| 692| 						}
| 693| 693| 					}
| 694| 694| 					else
| 695|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 695|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
| 698| 698| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 694| 694| 					else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697|    |-					updateBuildingPlacementPreview();
|    | 697|+				updateBuildingPlacementPreview();
| 698| 698| 					return true;
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
| 698|    |-					return true;
|    | 698|+				return true;
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
| 698| 698| 					return true;
| 699|    |-				}
|    | 699|+			}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 697| 697| 					updateBuildingPlacementPreview();
| 698| 698| 					return true;
| 699| 699| 				}
| 700|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 700|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703| 703| 					// reset to normal input mode
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 698| 698| 					return true;
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701|    |-				{
|    | 701|+			{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703| 703| 					// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702|    |-					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 702|+				Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703| 703| 					// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
| 705| 705| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703|    |-					// reset to normal input mode
|    | 703|+				// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
| 705| 705| 					updateBuildingPlacementPreview();
| 706| 706| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703| 703| 					// reset to normal input mode
| 704|    |-					placementSupport.Reset();
|    | 704|+				placementSupport.Reset();
| 705| 705| 					updateBuildingPlacementPreview();
| 706| 706| 
| 707| 707| 					inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703| 703| 					// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
| 705|    |-					updateBuildingPlacementPreview();
|    | 705|+				updateBuildingPlacementPreview();
| 706| 706| 
| 707| 707| 					inputState = INPUT_NORMAL;
| 708| 708| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 704| 704| 					placementSupport.Reset();
| 705| 705| 					updateBuildingPlacementPreview();
| 706| 706| 
| 707|    |-					inputState = INPUT_NORMAL;
|    | 707|+				inputState = INPUT_NORMAL;
| 708| 708| 					return true;
| 709| 709| 				}
| 710| 710| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 705| 705| 					updateBuildingPlacementPreview();
| 706| 706| 
| 707| 707| 					inputState = INPUT_NORMAL;
| 708|    |-					return true;
|    | 708|+				return true;
| 709| 709| 				}
| 710| 710| 				break;
| 711| 711| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 706| 706| 
| 707| 707| 					inputState = INPUT_NORMAL;
| 708| 708| 					return true;
| 709|    |-				}
|    | 709|+			}
| 710| 710| 				break;
| 711| 711| 		}
| 712| 712| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 707| 707| 					inputState = INPUT_NORMAL;
| 708| 708| 					return true;
| 709| 709| 				}
| 710|    |-				break;
|    | 710|+			break;
| 711| 711| 		}
| 712| 712| 		break;
| 713| 713| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 865| 865| 			break;
| 866| 866| 
| 867| 867| 		case "hotkeydown":
| 868|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 868|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 866| 866| 
| 867| 867| 		case "hotkeydown":
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869|    |-				{
|    | 869|+			{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 867| 867| 		case "hotkeydown":
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870|    |-					let now = Date.now();
|    | 870|+				let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 871|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872|    |-					{
|    | 872|+				{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 873|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874|    |-						{
|    | 874|+					{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875|    |-							var sptr = ev.hotkey.split(".");
|    | 875|+						var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876|    |-							performGroup("snap", sptr[3]);
|    | 876|+						performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
| 879| 879| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877|    |-						}
|    | 877|+					}
| 878| 878| 					}
| 879| 879| 					else
| 880| 880| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878|    |-					}
|    | 878|+				}
| 879| 879| 					else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
| 879|    |-					else
|    | 879|+				else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 877| 877| 						}
| 878| 878| 					}
| 879| 879| 					else
| 880|    |-					{
|    | 880|+				{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 878| 878| 					}
| 879| 879| 					else
| 880| 880| 					{
| 881|    |-						var sptr = ev.hotkey.split(".");
|    | 881|+					var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 879| 879| 					else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882|    |-						performGroup(sptr[2], sptr[3]);
|    | 882|+					performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884|    |-						doublePressTimer = now;
|    | 884|+					doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885|    |-						prevHotkey = ev.hotkey;
|    | 885|+					prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
| 888| 888| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886|    |-					}
|    | 886|+				}
| 887| 887| 				}
| 888| 888| 				break;
| 889| 889| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887|    |-				}
|    | 887|+			}
| 888| 888| 				break;
| 889| 889| 		}
| 890| 890| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
| 888|    |-				break;
|    | 888|+			break;
| 889| 889| 		}
| 890| 890| 		break;
| 891| 891| 
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|1525|1525| 		g_BatchTrainingEntityAllowedCount < batchedSize * appropriateBuildings.length)
|1526|1526| 	{
|1527|1527| 		// Train as many full batches as we can
|1528|    |-		let buildingsCountToTrainFullBatch = Math.floor( g_BatchTrainingEntityAllowedCount / batchedSize);
|    |1528|+		let buildingsCountToTrainFullBatch = Math.floor(g_BatchTrainingEntityAllowedCount / batchedSize);
|1529|1529| 		Engine.PostNetworkCommand({
|1530|1530| 			"type": "train",
|1531|1531| 			"entities": appropriateBuildings.slice(0, buildingsCountToTrainFullBatch),
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|1604|1604| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1605|1605| 
|1606|1606| 	// Reset the last idle unit, etc., if the selection type has changed.
|1607|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1607|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1608|1608| 		resetIdleUnit();
|1609|1609| 	lastIdleClasses = classes;
|1610|1610| 

binaries/data/mods/public/gui/session/input.js
| 232| »   »   var·entState·=·GetEntityState(ent);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'entState' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
| 239| »   var·target·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'target' to undefined.

binaries/data/mods/public/gui/session/input.js
| 253| »   var·actionInfo·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'actionInfo' to undefined.

binaries/data/mods/public/gui/session/input.js
| 471| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 502| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 557| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 567| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 615| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 644| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 715| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 835| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 937| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1026| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1040| »   »   »   »   let·action·=·determineAction(ev.x,·ev.y);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'action' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
|1049| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1119| »   »   »   switch·(ev.hotkey)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 239| »   var·target·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'target' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 253| »   var·actionInfo·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'actionInfo' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 267| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 270| »   »   »   var·r·=·g_UnitActions[action].hotkeyActionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 275| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 278| »   »   »   var·r·=·g_UnitActions[action].actionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 486| »   »   &&·(ev.button·==·SDL_BUTTON_LEFT·||·ev.button·==·SDL_BUTTON_RIGHT))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/gui/session/input.js
| 516| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 519| »   »   »   »   var·ents·=·getPreferredEntities(Engine.PickPlayerEntitiesInRect(rect[0],·rect[1],·rect[2],·rect[3],·g_ViewedPlayer));
|    | [NORMAL] JSHintBear:
|    | 'ents' is already defined.

binaries/data/mods/public/gui/session/input.js
| 676| »   »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 749| »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 881| »   »   »   »   »   »   var·sptr·=·ev.hotkey.split(".");
|    | [NORMAL] JSHintBear:
|    | 'sptr' is already defined.

binaries/data/mods/public/gui/session/input.js
| 897| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/gui/session/input.js
| 923| »   »   »   }
|    | [NORMAL] JSHintBear:
|    | Expected a 'break' statement before 'default'.

binaries/data/mods/public/gui/session/input.js
| 947| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 329| »   »   var·pos·=·cmpPosition.GetPosition2D();
|    | [NORMAL] JSHintBear:
|    | 'pos' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 331| »   »   var·rot·=·cmpPosition.GetRotation();
|    | [NORMAL] JSHintBear:
|    | 'rot' is already defined.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 537| 537| 			if (cmpGarrisonHolder)
| 538| 538| 			{
| 539| 539| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 540|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 541|    |-				    && player != +cmd.owner)
|    | 540|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 541|+				    player != +cmd.owner)
| 542| 542| 						continue;
| 543| 543| 
| 544| 544| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 539| 539| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 540| 540| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 541| 541| 				    && player != +cmd.owner)
| 542|    |-						continue;
|    | 542|+					continue;
| 543| 543| 
| 544| 544| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 545| 545| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1143|1143| 
|1144|1144| 	// send Metadata info if any
|1145|1145| 	if (cmd.metadata)
|1146|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1146|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1147|1147| 
|1148|1148| 	// Tell the units to start building this new entity
|1149|1149| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1143|1143| 
|1144|1144| 	// send Metadata info if any
|1145|1145| 	if (cmd.metadata)
|1146|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1146|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1147|1147| 
|1148|1148| 	// Tell the units to start building this new entity
|1149|1149| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1143|1143| 
|1144|1144| 	// send Metadata info if any
|1145|1145| 	if (cmd.metadata)
|1146|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1146|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1147|1147| 
|1148|1148| 	// Tell the units to start building this new entity
|1149|1149| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1480|1480| 		// Check that all its members are selected
|1481|1481| 		var fid = formationIds[0];
|1482|1482| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1483|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1484|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1483|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1484|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1485|1485| 		{
|1486|1486| 			cmpFormation.DeleteTwinFormations();
|1487|1487| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1588|1588| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1589|1589| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1590|1590| 				if (matrix[i][j] < distSq)
|1591|    |-					closeClusters = [i,j];
|    |1591|+					closeClusters = [i, j];
|1592|1592| 
|1593|1593| 		// if no more close clusters found, just return all found clusters so far
|1594|1594| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1610|1610| 		}
|1611|1611| 		// remove the rows and columns in the matrix for the merged clusters,
|1612|1612| 		// and the clusters themselves from the cluster list
|1613|    |-		clusters.splice(closeClusters[0],1);
|    |1613|+		clusters.splice(closeClusters[0], 1);
|1614|1614| 		clusters.splice(closeClusters[1],1);
|1615|1615| 		matrix.splice(closeClusters[0],1);
|1616|1616| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1611|1611| 		// remove the rows and columns in the matrix for the merged clusters,
|1612|1612| 		// and the clusters themselves from the cluster list
|1613|1613| 		clusters.splice(closeClusters[0],1);
|1614|    |-		clusters.splice(closeClusters[1],1);
|    |1614|+		clusters.splice(closeClusters[1], 1);
|1615|1615| 		matrix.splice(closeClusters[0],1);
|1616|1616| 		matrix.splice(closeClusters[1],1);
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1612|1612| 		// and the clusters themselves from the cluster list
|1613|1613| 		clusters.splice(closeClusters[0],1);
|1614|1614| 		clusters.splice(closeClusters[1],1);
|1615|    |-		matrix.splice(closeClusters[0],1);
|    |1615|+		matrix.splice(closeClusters[0], 1);
|1616|1616| 		matrix.splice(closeClusters[1],1);
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|1618|1618| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1613|1613| 		clusters.splice(closeClusters[0],1);
|1614|1614| 		clusters.splice(closeClusters[1],1);
|1615|1615| 		matrix.splice(closeClusters[0],1);
|1616|    |-		matrix.splice(closeClusters[1],1);
|    |1616|+		matrix.splice(closeClusters[1], 1);
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|1618|1618| 		{
|1619|1619| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|1618|1618| 		{
|1619|1619| 			if (matrix[i].length > closeClusters[0])
|1620|    |-				matrix[i].splice(closeClusters[0],1);
|    |1620|+				matrix[i].splice(closeClusters[0], 1);
|1621|1621| 			if (matrix[i].length > closeClusters[1])
|1622|1622| 				matrix[i].splice(closeClusters[1],1);
|1623|1623| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1619|1619| 			if (matrix[i].length > closeClusters[0])
|1620|1620| 				matrix[i].splice(closeClusters[0],1);
|1621|1621| 			if (matrix[i].length > closeClusters[1])
|1622|    |-				matrix[i].splice(closeClusters[1],1);
|    |1622|+				matrix[i].splice(closeClusters[1], 1);
|1623|1623| 		}
|1624|1624| 		// add a new row of distances to the matrix and the new cluster
|1625|1625| 		clusters.push(newCluster);

binaries/data/mods/public/simulation/helpers/Commands.js
|  43| »   if·(g_Commands[cmd.type])
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|  47| »   »   g_Commands[cmd.type](player,·cmd,·data);
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 789| »   »   let·ent·=·pickRandom(cmpRangeManager.GetEntitiesByPlayer(cmd.player).filter(ent·=>·{
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1276| ····»   »   »   error("[TryConstructWall]·Expected·last·tower·control·group·to·be·available,·none·found·(1st·pass,·iteration·"·+·i·+·")");
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1277| ····»   »   »   break;
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1507| »   »   »   »   var·lastFormationTemplate·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'lastFormationTemplate' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1586| »   »   var·closeClusters·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1603| »   »   for·(let·i·=·0;·i·<·clusters.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1617| »   »   for·(let·i·=·0;·i·<·matrix.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

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
| 948| »   »   for·(var·i·=·0;·i·<·length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

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

binaries/data/mods/public/simulation/helpers/Commands.js
|1108| »   »   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
|1484| »   »   »   &&·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
|1510| »   »   »   »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1543| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
| 821| 821| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 822| 822| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 823| 823| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 824|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 824|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 825| 825| 	}
| 826| 826| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 827| 827| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1701|1701| 			{
|1702|1702| 				minDist2 = dist2;
|1703|1703| 				minDistEntitySnapData = {
|1704|    |-						"x": pos.x,
|    |1704|+					"x": pos.x,
|1705|1705| 						"z": pos.z,
|1706|1706| 						"angle": cmpPosition.GetRotation().y,
|1707|1707| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1702|1702| 				minDist2 = dist2;
|1703|1703| 				minDistEntitySnapData = {
|1704|1704| 						"x": pos.x,
|1705|    |-						"z": pos.z,
|    |1705|+					"z": pos.z,
|1706|1706| 						"angle": cmpPosition.GetRotation().y,
|1707|1707| 						"ent": ent
|1708|1708| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1703|1703| 				minDistEntitySnapData = {
|1704|1704| 						"x": pos.x,
|1705|1705| 						"z": pos.z,
|1706|    |-						"angle": cmpPosition.GetRotation().y,
|    |1706|+					"angle": cmpPosition.GetRotation().y,
|1707|1707| 						"ent": ent
|1708|1708| 				};
|1709|1709| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1704|1704| 						"x": pos.x,
|1705|1705| 						"z": pos.z,
|1706|1706| 						"angle": cmpPosition.GetRotation().y,
|1707|    |-						"ent": ent
|    |1707|+					"ent": ent
|1708|1708| 				};
|1709|1709| 			}
|1710|1710| 		}
Executing section cli...

Link to build: https://jenkins.wildfiregames.com/job/docker-differential/959/display/redirect

Stan updated this revision to Diff 10142.Oct 12 2019, 11:15 PM

Remove more duplication.

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

Link to build: https://jenkins.wildfiregames.com/job/vs2015-differential/447/display/redirect

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

Linter detected issues:
Executing section Source...
Executing section JS...

binaries/data/mods/public/simulation/components/Foundation.js
| 329| »   »   var·pos·=·cmpPosition.GetPosition2D();
|    | [NORMAL] JSHintBear:
|    | 'pos' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 331| »   »   var·rot·=·cmpPosition.GetRotation();
|    | [NORMAL] JSHintBear:
|    | 'rot' is already defined.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 537| 537| 			if (cmpGarrisonHolder)
| 538| 538| 			{
| 539| 539| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 540|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 541|    |-				    && player != +cmd.owner)
|    | 540|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 541|+				    player != +cmd.owner)
| 542| 542| 						continue;
| 543| 543| 
| 544| 544| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 539| 539| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 540| 540| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 541| 541| 				    && player != +cmd.owner)
| 542|    |-						continue;
|    | 542|+					continue;
| 543| 543| 
| 544| 544| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 545| 545| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1143|1143| 
|1144|1144| 	// send Metadata info if any
|1145|1145| 	if (cmd.metadata)
|1146|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1146|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1147|1147| 
|1148|1148| 	// Tell the units to start building this new entity
|1149|1149| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1143|1143| 
|1144|1144| 	// send Metadata info if any
|1145|1145| 	if (cmd.metadata)
|1146|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1146|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1147|1147| 
|1148|1148| 	// Tell the units to start building this new entity
|1149|1149| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1143|1143| 
|1144|1144| 	// send Metadata info if any
|1145|1145| 	if (cmd.metadata)
|1146|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1146|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1147|1147| 
|1148|1148| 	// Tell the units to start building this new entity
|1149|1149| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1480|1480| 		// Check that all its members are selected
|1481|1481| 		var fid = formationIds[0];
|1482|1482| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1483|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1484|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1483|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1484|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1485|1485| 		{
|1486|1486| 			cmpFormation.DeleteTwinFormations();
|1487|1487| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1588|1588| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1589|1589| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1590|1590| 				if (matrix[i][j] < distSq)
|1591|    |-					closeClusters = [i,j];
|    |1591|+					closeClusters = [i, j];
|1592|1592| 
|1593|1593| 		// if no more close clusters found, just return all found clusters so far
|1594|1594| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1610|1610| 		}
|1611|1611| 		// remove the rows and columns in the matrix for the merged clusters,
|1612|1612| 		// and the clusters themselves from the cluster list
|1613|    |-		clusters.splice(closeClusters[0],1);
|    |1613|+		clusters.splice(closeClusters[0], 1);
|1614|1614| 		clusters.splice(closeClusters[1],1);
|1615|1615| 		matrix.splice(closeClusters[0],1);
|1616|1616| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1611|1611| 		// remove the rows and columns in the matrix for the merged clusters,
|1612|1612| 		// and the clusters themselves from the cluster list
|1613|1613| 		clusters.splice(closeClusters[0],1);
|1614|    |-		clusters.splice(closeClusters[1],1);
|    |1614|+		clusters.splice(closeClusters[1], 1);
|1615|1615| 		matrix.splice(closeClusters[0],1);
|1616|1616| 		matrix.splice(closeClusters[1],1);
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1612|1612| 		// and the clusters themselves from the cluster list
|1613|1613| 		clusters.splice(closeClusters[0],1);
|1614|1614| 		clusters.splice(closeClusters[1],1);
|1615|    |-		matrix.splice(closeClusters[0],1);
|    |1615|+		matrix.splice(closeClusters[0], 1);
|1616|1616| 		matrix.splice(closeClusters[1],1);
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|1618|1618| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1613|1613| 		clusters.splice(closeClusters[0],1);
|1614|1614| 		clusters.splice(closeClusters[1],1);
|1615|1615| 		matrix.splice(closeClusters[0],1);
|1616|    |-		matrix.splice(closeClusters[1],1);
|    |1616|+		matrix.splice(closeClusters[1], 1);
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|1618|1618| 		{
|1619|1619| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1617|1617| 		for (let i = 0; i < matrix.length; ++i)
|1618|1618| 		{
|1619|1619| 			if (matrix[i].length > closeClusters[0])
|1620|    |-				matrix[i].splice(closeClusters[0],1);
|    |1620|+				matrix[i].splice(closeClusters[0], 1);
|1621|1621| 			if (matrix[i].length > closeClusters[1])
|1622|1622| 				matrix[i].splice(closeClusters[1],1);
|1623|1623| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1619|1619| 			if (matrix[i].length > closeClusters[0])
|1620|1620| 				matrix[i].splice(closeClusters[0],1);
|1621|1621| 			if (matrix[i].length > closeClusters[1])
|1622|    |-				matrix[i].splice(closeClusters[1],1);
|    |1622|+				matrix[i].splice(closeClusters[1], 1);
|1623|1623| 		}
|1624|1624| 		// add a new row of distances to the matrix and the new cluster
|1625|1625| 		clusters.push(newCluster);

binaries/data/mods/public/simulation/helpers/Commands.js
|  43| »   if·(g_Commands[cmd.type])
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|  47| »   »   g_Commands[cmd.type](player,·cmd,·data);
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 789| »   »   let·ent·=·pickRandom(cmpRangeManager.GetEntitiesByPlayer(cmd.player).filter(ent·=>·{
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1276| ····»   »   »   error("[TryConstructWall]·Expected·last·tower·control·group·to·be·available,·none·found·(1st·pass,·iteration·"·+·i·+·")");
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1277| ····»   »   »   break;
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1507| »   »   »   »   var·lastFormationTemplate·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'lastFormationTemplate' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1586| »   »   var·closeClusters·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1603| »   »   for·(let·i·=·0;·i·<·clusters.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1617| »   »   for·(let·i·=·0;·i·<·matrix.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

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
| 948| »   »   for·(var·i·=·0;·i·<·length;·++i)
|    | [NORMAL] JSHintBear:
|    | 'i' is already defined.

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

binaries/data/mods/public/simulation/helpers/Commands.js
|1108| »   »   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
|1484| »   »   »   &&·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
|1510| »   »   »   »   »   var·cmpUnitAI·=·Engine.QueryInterface(ent,·IID_UnitAI);
|    | [NORMAL] JSHintBear:
|    | 'cmpUnitAI' is already defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1543| »   »   »   var·cmpFormation·=·Engine.QueryInterface(formationEnt,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
| 821| 821| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 822| 822| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 823| 823| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 824|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 824|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 825| 825| 	}
| 826| 826| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 827| 827| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1701|1701| 			{
|1702|1702| 				minDist2 = dist2;
|1703|1703| 				minDistEntitySnapData = {
|1704|    |-						"x": pos.x,
|    |1704|+					"x": pos.x,
|1705|1705| 						"z": pos.z,
|1706|1706| 						"angle": cmpPosition.GetRotation().y,
|1707|1707| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1702|1702| 				minDist2 = dist2;
|1703|1703| 				minDistEntitySnapData = {
|1704|1704| 						"x": pos.x,
|1705|    |-						"z": pos.z,
|    |1705|+					"z": pos.z,
|1706|1706| 						"angle": cmpPosition.GetRotation().y,
|1707|1707| 						"ent": ent
|1708|1708| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1703|1703| 				minDistEntitySnapData = {
|1704|1704| 						"x": pos.x,
|1705|1705| 						"z": pos.z,
|1706|    |-						"angle": cmpPosition.GetRotation().y,
|    |1706|+					"angle": cmpPosition.GetRotation().y,
|1707|1707| 						"ent": ent
|1708|1708| 				};
|1709|1709| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1704|1704| 						"x": pos.x,
|1705|1705| 						"z": pos.z,
|1706|1706| 						"angle": cmpPosition.GetRotation().y,
|1707|    |-						"ent": ent
|    |1707|+					"ent": ent
|1708|1708| 				};
|1709|1709| 			}
|1710|1710| 		}
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 445| 445| 
| 446| 446| 	if (this.regenRate != oldRegenRate || this.idleRegenRate != oldIdleRegenRate)
| 447| 447| 		this.CheckRegenTimer();
| 448|    |-}
|    | 448|+};
| 449| 449| 
| 450| 450| Health.prototype.OnValueModification = function(msg)
| 451| 451| {
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 457| 457| {
| 458| 458| 	if (msg.to != INVALID_PLAYER)
| 459| 459| 		this.RecalculateValues();
| 460|    |-}
|    | 460|+};
| 461| 461| 
| 462| 462| Health.prototype.RegisterHealthChanged = function(from)
| 463| 463| {

binaries/data/mods/public/simulation/components/Health.js
| 448| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Health.js
| 460| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '||' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|  87|  87| 		// If the elements are still strings, split them by space or by '+'
|  88|  88| 		if (typeof sublist == "string")
|  89|  89| 			sublist = sublist.split(/[+\s]+/);
|  90|    |-		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1)
|  91|    |-		                    || (c[0] != "!" && classes.indexOf(c) != -1)))
|    |  90|+		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1) ||
|    |  91|+		                    (c[0] != "!" && classes.indexOf(c) != -1)))
|  92|  92| 			return true;
|  93|  93| 	}
|  94|  94| 

binaries/data/mods/public/globalscripts/Templates.js
|  91| »   »   ····················||·(c[0]·!=·"!"·&&·classes.indexOf(c)·!=·-1)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.
|    | [NORMAL] ESLintBear (space-unary-ops):
|    | Unary word operator 'typeof' must be followed by whitespace.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 331| 331| 	}
| 332| 332| 
| 333| 333| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 334|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 334|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 335| 335| 	{
| 336| 336| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 337| 337| 		return false;
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 482| 482| 	mouseIsOverObject = (hoveredObject != null);
| 483| 483| 
| 484| 484| 	// Close the menu when interacting with the game world
| 485|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 486|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 485|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 486|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 487| 487| 		closeMenu();
| 488| 488| 
| 489| 489| 	// State-machine processing:
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 643| 643| 		// user to continue building walls.
| 644| 644| 		switch (ev.type)
| 645| 645| 		{
| 646|    |-			case "mousemotion":
|    | 646|+		case "mousemotion":
| 647| 647| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 644| 644| 		switch (ev.type)
| 645| 645| 		{
| 646| 646| 			case "mousemotion":
| 647|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 647|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 646| 646| 			case "mousemotion":
| 647| 647| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649|    |-				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 649|+			// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 647| 647| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650|    |-				// the ending point and the starting point to snap to.
|    | 650|+			// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 648| 648| 
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
| 651|    |-				//
|    | 651|+			//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 649| 649| 				// Update the building placement preview, and by extension, the list of snapping candidate entities for both (!)
| 650| 650| 				// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 652|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 650| 650| 				// the ending point and the starting point to snap to.
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 653|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 651| 651| 				//
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 654|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 652| 652| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 655|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
| 658| 658| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 653| 653| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 656|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
| 658| 658| 
| 659| 659| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 654| 654| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 655| 655| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657|    |-				// points.
|    | 657|+			// points.
| 658| 658| 
| 659| 659| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 656| 656| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 657| 657| 				// points.
| 658| 658| 
| 659|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 659|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662| 662| 				if (result && result.cost)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 657| 657| 				// points.
| 658| 658| 
| 659| 659| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 660|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662| 662| 				if (result && result.cost)
| 663| 663| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 659| 659| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662|    |-				if (result && result.cost)
|    | 662|+			if (result && result.cost)
| 663| 663| 				{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 660| 660| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 661| 661| 
| 662| 662| 				if (result && result.cost)
| 663|    |-				{
|    | 663|+			{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 661| 661| 
| 662| 662| 				if (result && result.cost)
| 663| 663| 				{
| 664|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 664|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 662| 662| 				if (result && result.cost)
| 663| 663| 				{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665|    |-					placementSupport.tooltipMessage = [
|    | 665|+				placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 663| 663| 				{
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666|    |-						getEntityCostTooltip(result),
|    | 666|+					getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
| 669| 669| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 664| 664| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667|    |-						getNeededResourcesTooltip(neededResources)
|    | 667|+					getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
| 669| 669| 				}
| 670| 670| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 665| 665| 					placementSupport.tooltipMessage = [
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668|    |-					].filter(tip => tip).join("\n");
|    | 668|+				].filter(tip => tip).join("\n");
| 669| 669| 				}
| 670| 670| 
| 671| 671| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 666| 666| 						getEntityCostTooltip(result),
| 667| 667| 						getNeededResourcesTooltip(neededResources)
| 668| 668| 					].filter(tip => tip).join("\n");
| 669|    |-				}
|    | 669|+			}
| 670| 670| 
| 671| 671| 				break;
| 672| 672| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 668| 668| 					].filter(tip => tip).join("\n");
| 669| 669| 				}
| 670| 670| 
| 671|    |-				break;
|    | 671|+			break;
| 672| 672| 
| 673| 673| 			case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 670| 670| 
| 671| 671| 				break;
| 672| 672| 
| 673|    |-			case "mousebuttondown":
|    | 673|+		case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 671| 671| 				break;
| 672| 672| 
| 673| 673| 			case "mousebuttondown":
| 674|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 674|+			if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 672| 672| 
| 673| 673| 			case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675|    |-				{
|    | 675|+			{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 673| 673| 			case "mousebuttondown":
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 676|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
| 679| 679| 						if (queued)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 674| 674| 				if (ev.button == SDL_BUTTON_LEFT)
| 675| 675| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677|    |-					if (tryPlaceWall(queued))
|    | 677|+				if (tryPlaceWall(queued))
| 678| 678| 					{
| 679| 679| 						if (queued)
| 680| 680| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 675| 675| 				{
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678|    |-					{
|    | 678|+				{
| 679| 679| 						if (queued)
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 676| 676| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
| 679|    |-						if (queued)
|    | 679|+					if (queued)
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 677| 677| 					if (tryPlaceWall(queued))
| 678| 678| 					{
| 679| 679| 						if (queued)
| 680|    |-						{
|    | 680|+					{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 678| 678| 					{
| 679| 679| 						if (queued)
| 680| 680| 						{
| 681|    |-							// continue building, just set a new starting position where we left off
|    | 681|+						// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 679| 679| 						if (queued)
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 682|+						placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 680| 680| 						{
| 681| 681| 							// continue building, just set a new starting position where we left off
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683|    |-							placementSupport.wallEndPosition = undefined;
|    | 683|+						placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 682| 682| 							placementSupport.position = placementSupport.wallEndPosition;
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 685|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
| 687| 687| 						else
| 688| 688| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 683| 683| 							placementSupport.wallEndPosition = undefined;
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686|    |-						}
|    | 686|+					}
| 687| 687| 						else
| 688| 688| 						{
| 689| 689| 							placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 684| 684| 
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
| 687|    |-						else
|    | 687|+					else
| 688| 688| 						{
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 685| 685| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 686| 686| 						}
| 687| 687| 						else
| 688|    |-						{
|    | 688|+					{
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 686| 686| 						}
| 687| 687| 						else
| 688| 688| 						{
| 689|    |-							placementSupport.Reset();
|    | 689|+						placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 687| 687| 						else
| 688| 688| 						{
| 689| 689| 							placementSupport.Reset();
| 690|    |-							inputState = INPUT_NORMAL;
|    | 690|+						inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693| 693| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 688| 688| 						{
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691|    |-							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 691|+						Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693| 693| 					}
| 694| 694| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 689| 689| 							placementSupport.Reset();
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692|    |-						}
|    | 692|+					}
| 693| 693| 					}
| 694| 694| 					else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 690| 690| 							inputState = INPUT_NORMAL;
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693|    |-					}
|    | 693|+				}
| 694| 694| 					else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 691| 691| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 692| 692| 						}
| 693| 693| 					}
| 694|    |-					else
|    | 694|+				else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 692| 692| 						}
| 693| 693| 					}
| 694| 694| 					else
| 695|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 695|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
| 698| 698| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 694| 694| 					else
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697|    |-					updateBuildingPlacementPreview();
|    | 697|+				updateBuildingPlacementPreview();
| 698| 698| 					return true;
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 695| 695| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
| 698|    |-					return true;
|    | 698|+				return true;
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 696| 696| 
| 697| 697| 					updateBuildingPlacementPreview();
| 698| 698| 					return true;
| 699|    |-				}
|    | 699|+			}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 697| 697| 					updateBuildingPlacementPreview();
| 698| 698| 					return true;
| 699| 699| 				}
| 700|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 700|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703| 703| 					// reset to normal input mode
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 698| 698| 					return true;
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701|    |-				{
|    | 701|+			{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703| 703| 					// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 699| 699| 				}
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702|    |-					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 702|+				Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703| 703| 					// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
| 705| 705| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 700| 700| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703|    |-					// reset to normal input mode
|    | 703|+				// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
| 705| 705| 					updateBuildingPlacementPreview();
| 706| 706| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 701| 701| 				{
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703| 703| 					// reset to normal input mode
| 704|    |-					placementSupport.Reset();
|    | 704|+				placementSupport.Reset();
| 705| 705| 					updateBuildingPlacementPreview();
| 706| 706| 
| 707| 707| 					inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 702| 702| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 703| 703| 					// reset to normal input mode
| 704| 704| 					placementSupport.Reset();
| 705|    |-					updateBuildingPlacementPreview();
|    | 705|+				updateBuildingPlacementPreview();
| 706| 706| 
| 707| 707| 					inputState = INPUT_NORMAL;
| 708| 708| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 704| 704| 					placementSupport.Reset();
| 705| 705| 					updateBuildingPlacementPreview();
| 706| 706| 
| 707|    |-					inputState = INPUT_NORMAL;
|    | 707|+				inputState = INPUT_NORMAL;
| 708| 708| 					return true;
| 709| 709| 				}
| 710| 710| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 705| 705| 					updateBuildingPlacementPreview();
| 706| 706| 
| 707| 707| 					inputState = INPUT_NORMAL;
| 708|    |-					return true;
|    | 708|+				return true;
| 709| 709| 				}
| 710| 710| 				break;
| 711| 711| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 706| 706| 
| 707| 707| 					inputState = INPUT_NORMAL;
| 708| 708| 					return true;
| 709|    |-				}
|    | 709|+			}
| 710| 710| 				break;
| 711| 711| 		}
| 712| 712| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 707| 707| 					inputState = INPUT_NORMAL;
| 708| 708| 					return true;
| 709| 709| 				}
| 710|    |-				break;
|    | 710|+			break;
| 711| 711| 		}
| 712| 712| 		break;
| 713| 713| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 865| 865| 			break;
| 866| 866| 
| 867| 867| 		case "hotkeydown":
| 868|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 868|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 866| 866| 
| 867| 867| 		case "hotkeydown":
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869|    |-				{
|    | 869|+			{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 867| 867| 		case "hotkeydown":
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870|    |-					let now = Date.now();
|    | 870|+				let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 868| 868| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 871|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 869| 869| 				{
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872|    |-					{
|    | 872|+				{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 870| 870| 					let now = Date.now();
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 873|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 871| 871| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874|    |-						{
|    | 874|+					{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 872| 872| 					{
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875|    |-							var sptr = ev.hotkey.split(".");
|    | 875|+						var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 873| 873| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876|    |-							performGroup("snap", sptr[3]);
|    | 876|+						performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
| 879| 879| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 874| 874| 						{
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877|    |-						}
|    | 877|+					}
| 878| 878| 					}
| 879| 879| 					else
| 880| 880| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 875| 875| 							var sptr = ev.hotkey.split(".");
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878|    |-					}
|    | 878|+				}
| 879| 879| 					else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 876| 876| 							performGroup("snap", sptr[3]);
| 877| 877| 						}
| 878| 878| 					}
| 879|    |-					else
|    | 879|+				else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 877| 877| 						}
| 878| 878| 					}
| 879| 879| 					else
| 880|    |-					{
|    | 880|+				{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 878| 878| 					}
| 879| 879| 					else
| 880| 880| 					{
| 881|    |-						var sptr = ev.hotkey.split(".");
|    | 881|+					var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 879| 879| 					else
| 880| 880| 					{
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882|    |-						performGroup(sptr[2], sptr[3]);
|    | 882|+					performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 881| 881| 						var sptr = ev.hotkey.split(".");
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884|    |-						doublePressTimer = now;
|    | 884|+					doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 882| 882| 						performGroup(sptr[2], sptr[3]);
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885|    |-						prevHotkey = ev.hotkey;
|    | 885|+					prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
| 888| 888| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 883| 883| 
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886|    |-					}
|    | 886|+				}
| 887| 887| 				}
| 888| 888| 				break;
| 889| 889| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 884| 884| 						doublePressTimer = now;
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887|    |-				}
|    | 887|+			}
| 888| 888| 				break;
| 889| 889| 		}
| 890| 890| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 885| 885| 						prevHotkey = ev.hotkey;
| 886| 886| 					}
| 887| 887| 				}
| 888|    |-				break;
|    | 888|+			break;
| 889| 889| 		}
| 890| 890| 		break;
| 891| 891| 
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|1525|1525| 		g_BatchTrainingEntityAllowedCount < batchedSize * appropriateBuildings.length)
|1526|1526| 	{
|1527|1527| 		// Train as many full batches as we can
|1528|    |-		let buildingsCountToTrainFullBatch = Math.floor( g_BatchTrainingEntityAllowedCount / batchedSize);
|    |1528|+		let buildingsCountToTrainFullBatch = Math.floor(g_BatchTrainingEntityAllowedCount / batchedSize);
|1529|1529| 		Engine.PostNetworkCommand({
|1530|1530| 			"type": "train",
|1531|1531| 			"entities": appropriateBuildings.slice(0, buildingsCountToTrainFullBatch),
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|1604|1604| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1605|1605| 
|1606|1606| 	// Reset the last idle unit, etc., if the selection type has changed.
|1607|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1607|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1608|1608| 		resetIdleUnit();
|1609|1609| 	lastIdleClasses = classes;
|1610|1610| 

binaries/data/mods/public/gui/session/input.js
| 232| »   »   var·entState·=·GetEntityState(ent);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'entState' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
| 239| »   var·target·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'target' to undefined.

binaries/data/mods/public/gui/session/input.js
| 253| »   var·actionInfo·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'actionInfo' to undefined.

binaries/data/mods/public/gui/session/input.js
| 471| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 502| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 557| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 567| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 615| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 644| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 715| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 835| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 937| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1026| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1040| »   »   »   »   let·action·=·determineAction(ev.x,·ev.y);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'action' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
|1049| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1119| »   »   »   switch·(ev.hotkey)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 239| »   var·target·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'target' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 253| »   var·actionInfo·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'actionInfo' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 267| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 270| »   »   »   var·r·=·g_UnitActions[action].hotkeyActionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 275| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 278| »   »   »   var·r·=·g_UnitActions[action].actionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 486| »   »   &&·(ev.button·==·SDL_BUTTON_LEFT·||·ev.button·==·SDL_BUTTON_RIGHT))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/gui/session/input.js
| 516| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 519| »   »   »   »   var·ents·=·getPreferredEntities(Engine.PickPlayerEntitiesInRect(rect[0],·rect[1],·rect[2],·rect[3],·g_ViewedPlayer));
|    | [NORMAL] JSHintBear:
|    | 'ents' is already defined.

binaries/data/mods/public/gui/session/input.js
| 676| »   »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 749| »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 881| »   »   »   »   »   »   var·sptr·=·ev.hotkey.split(".");
|    | [NORMAL] JSHintBear:
|    | 'sptr' is already defined.

binaries/data/mods/public/gui/session/input.js
| 897| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/gui/session/input.js
| 923| »   »   »   }
|    | [NORMAL] JSHintBear:
|    | Expected a 'break' statement before 'default'.

binaries/data/mods/public/gui/session/input.js
| 947| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.
Executing section cli...

Link to build: https://jenkins.wildfiregames.com/job/docker-differential/962/display/redirect

Freagarach added inline comments.Oct 13 2019, 7:21 AM
binaries/data/mods/public/simulation/components/GuiInterface.js
1931

Early return when no slots?

binaries/data/mods/public/simulation/components/Visibility.js
101

Okay :)

@Stan This patch does not seem to be able to repair the damaged stone walls and arrow towers directly. I have tried several factions, Athens, Macedonia, Carthage, the Indian Peacock Dynasty.

Stan updated this revision to Diff 11609.Mar 30 2020, 2:37 PM
Stan marked 2 inline comments as done.
Stan edited the summary of this revision. (Show Details)
Stan edited the test plan for this revision. (Show Details)

Add early return

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

Link to build: https://jenkins.wildfiregames.com/job/macos-differential/522/display/redirect

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

Link to build: https://jenkins.wildfiregames.com/job/docker-differential/1950/display/redirect

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

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '||' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|  87|  87| 		// If the elements are still strings, split them by space or by '+'
|  88|  88| 		if (typeof sublist == "string")
|  89|  89| 			sublist = sublist.split(/[+\s]+/);
|  90|    |-		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1)
|  91|    |-		                    || (c[0] != "!" && classes.indexOf(c) != -1)))
|    |  90|+		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1) ||
|    |  91|+		                    (c[0] != "!" && classes.indexOf(c) != -1)))
|  92|  92| 			return true;
|  93|  93| 	}
|  94|  94| 

binaries/data/mods/public/globalscripts/Templates.js
|  91| »   »   ····················||·(c[0]·!=·"!"·&&·classes.indexOf(c)·!=·-1)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 445| 445| 
| 446| 446| 	if (this.regenRate != oldRegenRate || this.idleRegenRate != oldIdleRegenRate)
| 447| 447| 		this.CheckRegenTimer();
| 448|    |-}
|    | 448|+};
| 449| 449| 
| 450| 450| Health.prototype.OnValueModification = function(msg)
| 451| 451| {
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 457| 457| {
| 458| 458| 	if (msg.to != INVALID_PLAYER)
| 459| 459| 		this.RecalculateValues();
| 460|    |-}
|    | 460|+};
| 461| 461| 
| 462| 462| Health.prototype.RegisterHealthChanged = function(from)
| 463| 463| {

binaries/data/mods/public/simulation/components/Health.js
| 448| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Health.js
| 460| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 527| 527| 			if (cmpGarrisonHolder)
| 528| 528| 			{
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531|    |-				    && player != +cmd.owner)
|    | 530|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 531|+				    player != +cmd.owner)
| 532| 532| 						continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530| 530| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531| 531| 				    && player != +cmd.owner)
| 532|    |-						continue;
|    | 532|+					continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 535| 535| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1479|1479| 		// Check that all its members are selected
|1480|1480| 		var fid = formationIds[0];
|1481|1481| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1482|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1483|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1482|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1483|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1484|1484| 		{
|1485|1485| 			cmpFormation.DeleteTwinFormations();
|1486|1486| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1587|1587| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1588|1588| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1589|1589| 				if (matrix[i][j] < distSq)
|1590|    |-					closeClusters = [i,j];
|    |1590|+					closeClusters = [i, j];
|1591|1591| 
|1592|1592| 		// if no more close clusters found, just return all found clusters so far
|1593|1593| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1609|1609| 		}
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|    |-		clusters.splice(closeClusters[0],1);
|    |1612|+		clusters.splice(closeClusters[0], 1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|    |-		clusters.splice(closeClusters[1],1);
|    |1613|+		clusters.splice(closeClusters[1], 1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|    |-		matrix.splice(closeClusters[0],1);
|    |1614|+		matrix.splice(closeClusters[0], 1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|    |-		matrix.splice(closeClusters[1],1);
|    |1615|+		matrix.splice(closeClusters[1], 1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|    |-				matrix[i].splice(closeClusters[0],1);
|    |1619|+				matrix[i].splice(closeClusters[0], 1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|1621| 				matrix[i].splice(closeClusters[1],1);
|1622|1622| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|1619| 				matrix[i].splice(closeClusters[0],1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|    |-				matrix[i].splice(closeClusters[1],1);
|    |1621|+				matrix[i].splice(closeClusters[1], 1);
|1622|1622| 		}
|1623|1623| 		// add a new row of distances to the matrix and the new cluster
|1624|1624| 		clusters.push(newCluster);

binaries/data/mods/public/simulation/helpers/Commands.js
|  43| »   if·(g_Commands[cmd.type])
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|  47| »   »   g_Commands[cmd.type](player,·cmd,·data);
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 788| »   »   let·ent·=·pickRandom(cmpRangeManager.GetEntitiesByPlayer(cmd.player).filter(ent·=>·{
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1275| ····»   »   »   error("[TryConstructWall]·Expected·last·tower·control·group·to·be·available,·none·found·(1st·pass,·iteration·"·+·i·+·")");
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1276| ····»   »   »   break;
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1506| »   »   »   »   var·lastFormationTemplate·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'lastFormationTemplate' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1585| »   »   var·closeClusters·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1602| »   »   for·(let·i·=·0;·i·<·clusters.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1616| »   »   for·(let·i·=·0;·i·<·matrix.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

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
| 531| »   »   »   »   ····&&·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
| 726| »   »   »   »   var·cmpGUIInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGUIInterface' is already defined.

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

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

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

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

binaries/data/mods/public/simulation/helpers/Commands.js
|1444| »   »   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 (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
| 826| 826| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 827| 827| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 828| 828| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 829|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 829|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 830| 830| 	}
| 831| 831| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 832| 832| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1706|1706| 			{
|1707|1707| 				minDist2 = dist2;
|1708|1708| 				minDistEntitySnapData = {
|1709|    |-						"x": pos.x,
|    |1709|+					"x": pos.x,
|1710|1710| 						"z": pos.z,
|1711|1711| 						"angle": cmpPosition.GetRotation().y,
|1712|1712| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1707|1707| 				minDist2 = dist2;
|1708|1708| 				minDistEntitySnapData = {
|1709|1709| 						"x": pos.x,
|1710|    |-						"z": pos.z,
|    |1710|+					"z": pos.z,
|1711|1711| 						"angle": cmpPosition.GetRotation().y,
|1712|1712| 						"ent": ent
|1713|1713| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1708|1708| 				minDistEntitySnapData = {
|1709|1709| 						"x": pos.x,
|1710|1710| 						"z": pos.z,
|1711|    |-						"angle": cmpPosition.GetRotation().y,
|    |1711|+					"angle": cmpPosition.GetRotation().y,
|1712|1712| 						"ent": ent
|1713|1713| 				};
|1714|1714| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1709|1709| 						"x": pos.x,
|1710|1710| 						"z": pos.z,
|1711|1711| 						"angle": cmpPosition.GetRotation().y,
|1712|    |-						"ent": ent
|    |1712|+					"ent": ent
|1713|1713| 				};
|1714|1714| 			}
|1715|1715| 		}
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 169| 169| 	this.totalBuilderRate += buildRate;
| 170| 170| 
| 171| 171| 	return true;
| 172|    |-}
|    | 172|+};
| 173| 173| 
| 174| 174| /**
| 175| 175|  * Adds a builder to the counter.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 204| 204| 		cmpVisual.SetVariable("numbuilders", this.builders.size);
| 205| 205| 
| 206| 206| 	Engine.PostMessage(this.entity, MT_FoundationBuildersChanged, { "to": this.GetBuilders() });
| 207|    |-}
|    | 207|+};
| 208| 208| 
| 209| 209| /**
| 210| 210|  * The build multiplier is a penalty that is applied to each builder.

binaries/data/mods/public/simulation/components/Foundation.js
| 172| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 207| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 377| »   »   var·pos·=·cmpPosition.GetPosition2D();
|    | [NORMAL] JSHintBear:
|    | 'pos' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 379| »   »   var·rot·=·cmpPosition.GetRotation();
|    | [NORMAL] JSHintBear:
|    | 'rot' is already defined.
|    | [NORMAL] ESLintBear (space-unary-ops):
|    | Unary word operator 'typeof' must be followed by whitespace.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 340| 340| 	}
| 341| 341| 
| 342| 342| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 343|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 343|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 344| 344| 	{
| 345| 345| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 346| 346| 		return false;
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 491| 491| 	mouseIsOverObject = (hoveredObject != null);
| 492| 492| 
| 493| 493| 	// Close the menu when interacting with the game world
| 494|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 495|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 494|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 495|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 496| 496| 		g_Menu.close();
| 497| 497| 
| 498| 498| 	// State-machine processing:
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 652| 652| 		// user to continue building walls.
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655|    |-			case "mousemotion":
|    | 655|+		case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655| 655| 			case "mousemotion":
| 656|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 656|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 655| 655| 			case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658|    |-				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 658|+			// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659|    |-				// the ending point and the starting point to snap to.
|    | 659|+			// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660|    |-				//
|    | 660|+			//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 661|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 662|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 663|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 664|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 665|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666|    |-				// points.
|    | 666|+			// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 668|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 669|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671|    |-				if (result && result.cost)
|    | 671|+			if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672|    |-				{
|    | 672|+			{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 673|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674|    |-					placementSupport.tooltipMessage = [
|    | 674|+				placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675|    |-						getEntityCostTooltip(result),
|    | 675|+					getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676|    |-						getNeededResourcesTooltip(neededResources)
|    | 676|+					getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677|    |-					].filter(tip => tip).join("\n");
|    | 677|+				].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680| 680| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678|    |-				}
|    | 678|+			}
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680|    |-				break;
|    | 680|+			break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
| 682|    |-			case "mousebuttondown":
|    | 682|+		case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 680| 680| 				break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 683|+			if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684|    |-				{
|    | 684|+			{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 685|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686|    |-					if (tryPlaceWall(queued))
|    | 686|+				if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687|    |-					{
|    | 687|+				{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688|    |-						if (queued)
|    | 688|+					if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689|    |-						{
|    | 689|+					{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690|    |-							// continue building, just set a new starting position where we left off
|    | 690|+						// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 691|+						placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692|    |-							placementSupport.wallEndPosition = undefined;
|    | 692|+						placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 694|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695|    |-						}
|    | 695|+					}
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696|    |-						else
|    | 696|+					else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697|    |-						{
|    | 697|+					{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
| 698|    |-							placementSupport.Reset();
|    | 698|+						placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699|    |-							inputState = INPUT_NORMAL;
|    | 699|+						inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700|    |-							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 700|+						Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701|    |-						}
|    | 701|+					}
| 702| 702| 					}
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702|    |-					}
|    | 702|+				}
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703|    |-					else
|    | 703|+				else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					else
| 704|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 704|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706|    |-					updateBuildingPlacementPreview();
|    | 706|+				updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707|    |-					return true;
|    | 707|+				return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708|    |-				}
|    | 708|+			}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 709|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710|    |-				{
|    | 710|+			{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711|    |-					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 711|+				Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712|    |-					// reset to normal input mode
|    | 712|+				// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713|    |-					placementSupport.Reset();
|    | 713|+				placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714|    |-					updateBuildingPlacementPreview();
|    | 714|+				updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716|    |-					inputState = INPUT_NORMAL;
|    | 716|+				inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719| 719| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717|    |-					return true;
|    | 717|+				return true;
| 718| 718| 				}
| 719| 719| 				break;
| 720| 720| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718|    |-				}
|    | 718|+			}
| 719| 719| 				break;
| 720| 720| 		}
| 721| 721| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719|    |-				break;
|    | 719|+			break;
| 720| 720| 		}
| 721| 721| 		break;
| 722| 722| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 858| 858| 			break;
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 861|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862|    |-				{
|    | 862|+			{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863|    |-					let now = Date.now();
|    | 863|+				let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 864|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865|    |-					{
|    | 865|+				{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 866|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867|    |-						{
|    | 867|+					{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868|    |-							var sptr = ev.hotkey.split(".");
|    | 868|+						var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869|    |-							performGroup("snap", sptr[3]);
|    | 869|+						performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870|    |-						}
|    | 870|+					}
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871|    |-					}
|    | 871|+				}
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872|    |-					else
|    | 872|+				else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					else
| 873|    |-					{
|    | 873|+				{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
| 874|    |-						var sptr = ev.hotkey.split(".");
|    | 874|+					var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875|    |-						performGroup(sptr[2], sptr[3]);
|    | 875|+					performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877|    |-						doublePressTimer = now;
|    | 877|+					doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878|    |-						prevHotkey = ev.hotkey;
|    | 878|+					prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881| 881| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879|    |-					}
|    | 879|+				}
| 880| 880| 				}
| 881| 881| 				break;
| 882| 882| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880|    |-				}
|    | 880|+			}
| 881| 881| 				break;
| 882| 882| 		}
| 883| 883| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881|    |-				break;
|    | 881|+			break;
| 882| 882| 		}
| 883| 883| 		break;
| 884| 884| 
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|1612|1612| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1613|1613| 
|1614|1614| 	// Reset the last idle unit, etc., if the selection type has changed.
|1615|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1615|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1616|1616| 		resetIdleUnit();
|1617|1617| 	lastIdleClasses = classes;
|1618|1618| 

binaries/data/mods/public/gui/session/input.js
| 235| »   var·target·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'target' to undefined.

binaries/data/mods/public/gui/session/input.js
| 249| »   var·actionInfo·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'actionInfo' to undefined.

binaries/data/mods/public/gui/session/input.js
| 480| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 511| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 566| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 576| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 624| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 653| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 724| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 740| ·»   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 741| ·»   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 746| ·»   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

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

binaries/data/mods/public/gui/session/input.js
| 828| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 930| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1019| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1033| »   »   »   »   let·action·=·determineAction(ev.x,·ev.y);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'action' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
|1042| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1066| ·»   »   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1067| ·»   »   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1068| ·»   »   »   »   »   "z":·placementSupport.position.z,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1071| ·»   »   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1132| »   »   »   switch·(ev.hotkey)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 235| »   var·target·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'target' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 249| »   var·actionInfo·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'actionInfo' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 263| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 266| »   »   »   var·r·=·g_UnitActions[action].hotkeyActionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 271| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 274| »   »   »   var·r·=·g_UnitActions[action].actionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 495| »   »   &&·(ev.button·==·SDL_BUTTON_LEFT·||·ev.button·==·SDL_BUTTON_RIGHT))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/gui/session/input.js
| 525| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 528| »   »   »   »   var·ents·=·getPreferredEntities(Engine.PickPlayerEntitiesInRect(rect[0],·rect[1],·rect[2],·rect[3],·g_ViewedPlayer));
|    | [NORMAL] JSHintBear:
|    | 'ents' is already defined.

binaries/data/mods/public/gui/session/input.js
| 685| »   »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 761| »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 874| »   »   »   »   »   »   var·sptr·=·ev.hotkey.split(".");
|    | [NORMAL] JSHintBear:
|    | 'sptr' is already defined.

binaries/data/mods/public/gui/session/input.js
| 890| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/gui/session/input.js
| 916| »   »   »   }
|    | [NORMAL] JSHintBear:
|    | Expected a 'break' statement before 'default'.

binaries/data/mods/public/gui/session/input.js
| 940| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.
Executing section cli...

Link to build: https://jenkins.wildfiregames.com/job/docker-differential/1952/display/redirect

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

Link to build: https://jenkins.wildfiregames.com/job/macos-differential/526/display/redirect

@Stan' My friend, have those ghost slots been fixed?

Freagarach added inline comments.Apr 1 2020, 7:00 PM
binaries/data/mods/public/gui/session/input.js
193

You can define this in placement.js as is the case of other properties.

binaries/data/mods/public/simulation/components/Foundation.js
48

Couldn't this be abused? Removing carcasses by construction init? Instead of upon commit.

binaries/data/mods/public/simulation/components/GuiInterface.js
1249

let? And perhaps a more descriptive name ;)

1269

Still this?

1332

Check?

1450

let?

binaries/data/mods/public/simulation/templates/structures/palisades_tower.xml
15

Template does not exist?

Angen added a comment.Apr 1 2020, 8:09 PM

Anyway I was planing another approach but if someone can make this one fully working it would be nice too.

binaries/data/mods/public/simulation/components/GuiInterface.js
1249

snapRadiusMultiplier ?

1450

const is fine and better then let because value is not changing in scope

binaries/data/mods/public/simulation/templates/structures/palisades_tower.xml
15

maybe got lost during rebase, or i forgot to update them, crap

Angen added inline comments.Apr 1 2020, 8:13 PM
binaries/data/mods/public/simulation/templates/structures/palisades_tower.xml
15
Stan updated this revision to Diff 11617.Apr 2 2020, 3:14 PM
Stan marked 12 inline comments as done.

Fix inlines.

@Angen, feel free to commandeer back, I just really wanted that feature.

binaries/data/mods/public/simulation/components/Foundation.js
48

How is it done currently for foundations?

binaries/data/mods/public/simulation/components/GuiInterface.js
1572–1573

Where would you put this

binaries/data/mods/public/simulation/templates/structures/palisades_tower.xml
15

To reproduce the bug do the following
arc patch
revert svn
arc patch again
This time all unversionned undeleted files won't get added.

Vulcan added a comment.Apr 2 2020, 3:24 PM

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

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 169| 169| 	this.totalBuilderRate += buildRate;
| 170| 170| 
| 171| 171| 	return true;
| 172|    |-}
|    | 172|+};
| 173| 173| 
| 174| 174| /**
| 175| 175|  * Adds a builder to the counter.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 204| 204| 		cmpVisual.SetVariable("numbuilders", this.builders.size);
| 205| 205| 
| 206| 206| 	Engine.PostMessage(this.entity, MT_FoundationBuildersChanged, { "to": this.GetBuilders() });
| 207|    |-}
|    | 207|+};
| 208| 208| 
| 209| 209| /**
| 210| 210|  * The build multiplier is a penalty that is applied to each builder.

binaries/data/mods/public/simulation/components/Foundation.js
| 172| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 207| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 377| »   »   var·pos·=·cmpPosition.GetPosition2D();
|    | [NORMAL] JSHintBear:
|    | 'pos' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 379| »   »   var·rot·=·cmpPosition.GetRotation();
|    | [NORMAL] JSHintBear:
|    | 'rot' is already defined.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 445| 445| 
| 446| 446| 	if (this.regenRate != oldRegenRate || this.idleRegenRate != oldIdleRegenRate)
| 447| 447| 		this.CheckRegenTimer();
| 448|    |-}
|    | 448|+};
| 449| 449| 
| 450| 450| Health.prototype.OnValueModification = function(msg)
| 451| 451| {
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 457| 457| {
| 458| 458| 	if (msg.to != INVALID_PLAYER)
| 459| 459| 		this.RecalculateValues();
| 460|    |-}
|    | 460|+};
| 461| 461| 
| 462| 462| Health.prototype.RegisterHealthChanged = function(from)
| 463| 463| {

binaries/data/mods/public/simulation/components/Health.js
| 448| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Health.js
| 460| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 527| 527| 			if (cmpGarrisonHolder)
| 528| 528| 			{
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531|    |-				    && player != +cmd.owner)
|    | 530|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 531|+				    player != +cmd.owner)
| 532| 532| 						continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530| 530| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531| 531| 				    && player != +cmd.owner)
| 532|    |-						continue;
|    | 532|+					continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 535| 535| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1479|1479| 		// Check that all its members are selected
|1480|1480| 		var fid = formationIds[0];
|1481|1481| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1482|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1483|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1482|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1483|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1484|1484| 		{
|1485|1485| 			cmpFormation.DeleteTwinFormations();
|1486|1486| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1587|1587| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1588|1588| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1589|1589| 				if (matrix[i][j] < distSq)
|1590|    |-					closeClusters = [i,j];
|    |1590|+					closeClusters = [i, j];
|1591|1591| 
|1592|1592| 		// if no more close clusters found, just return all found clusters so far
|1593|1593| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1609|1609| 		}
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|    |-		clusters.splice(closeClusters[0],1);
|    |1612|+		clusters.splice(closeClusters[0], 1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|    |-		clusters.splice(closeClusters[1],1);
|    |1613|+		clusters.splice(closeClusters[1], 1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|    |-		matrix.splice(closeClusters[0],1);
|    |1614|+		matrix.splice(closeClusters[0], 1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|    |-		matrix.splice(closeClusters[1],1);
|    |1615|+		matrix.splice(closeClusters[1], 1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|    |-				matrix[i].splice(closeClusters[0],1);
|    |1619|+				matrix[i].splice(closeClusters[0], 1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|1621| 				matrix[i].splice(closeClusters[1],1);
|1622|1622| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|1619| 				matrix[i].splice(closeClusters[0],1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|    |-				matrix[i].splice(closeClusters[1],1);
|    |1621|+				matrix[i].splice(closeClusters[1], 1);
|1622|1622| 		}
|1623|1623| 		// add a new row of distances to the matrix and the new cluster
|1624|1624| 		clusters.push(newCluster);

binaries/data/mods/public/simulation/helpers/Commands.js
|  43| »   if·(g_Commands[cmd.type])
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|  47| »   »   g_Commands[cmd.type](player,·cmd,·data);
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 788| »   »   let·ent·=·pickRandom(cmpRangeManager.GetEntitiesByPlayer(cmd.player).filter(ent·=>·{
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1275| ····»   »   »   error("[TryConstructWall]·Expected·last·tower·control·group·to·be·available,·none·found·(1st·pass,·iteration·"·+·i·+·")");
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1276| ····»   »   »   break;
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1506| »   »   »   »   var·lastFormationTemplate·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'lastFormationTemplate' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1585| »   »   var·closeClusters·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1602| »   »   for·(let·i·=·0;·i·<·clusters.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1616| »   »   for·(let·i·=·0;·i·<·matrix.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

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
| 531| »   »   »   »   ····&&·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
| 726| »   »   »   »   var·cmpGUIInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGUIInterface' is already defined.

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

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

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

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

binaries/data/mods/public/simulation/helpers/Commands.js
|1444| »   »   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 (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
| 826| 826| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 827| 827| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 828| 828| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 829|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 829|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 830| 830| 	}
| 831| 831| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 832| 832| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (no-multi-spaces):
|    | Multiple spaces found before '='.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1246|1246| 	if (cmd.snapSlots)
|1247|1247| 	{
|1248|1248| 		// Determined through trial and error.
|1249|    |-		let snapRadiusMultiplier  = 0.5;
|    |1249|+		let snapRadiusMultiplier = 0.5;
|1250|1250| 		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier ;
|1251|1251| 		let startSnapData = this.GetFoundationSnapData(player, {
|1252|1252| 			"x": start.pos.x,
|    | [NORMAL] ESLintBear (semi-spacing):
|    | Unexpected whitespace before semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1247|1247| 	{
|1248|1248| 		// Determined through trial and error.
|1249|1249| 		let snapRadiusMultiplier  = 0.5;
|1250|    |-		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier ;
|    |1250|+		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier;
|1251|1251| 		let startSnapData = this.GetFoundationSnapData(player, {
|1252|1252| 			"x": start.pos.x,
|1253|1253| 			"z": start.pos.z,
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1682|1682| 			{
|1683|1683| 				minDist2 = dist2;
|1684|1684| 				minDistEntitySnapData = {
|1685|    |-						"x": pos.x,
|    |1685|+					"x": pos.x,
|1686|1686| 						"z": pos.z,
|1687|1687| 						"angle": cmpPosition.GetRotation().y,
|1688|1688| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1683|1683| 				minDist2 = dist2;
|1684|1684| 				minDistEntitySnapData = {
|1685|1685| 						"x": pos.x,
|1686|    |-						"z": pos.z,
|    |1686|+					"z": pos.z,
|1687|1687| 						"angle": cmpPosition.GetRotation().y,
|1688|1688| 						"ent": ent
|1689|1689| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1684|1684| 				minDistEntitySnapData = {
|1685|1685| 						"x": pos.x,
|1686|1686| 						"z": pos.z,
|1687|    |-						"angle": cmpPosition.GetRotation().y,
|    |1687|+					"angle": cmpPosition.GetRotation().y,
|1688|1688| 						"ent": ent
|1689|1689| 				};
|1690|1690| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1685|1685| 						"x": pos.x,
|1686|1686| 						"z": pos.z,
|1687|1687| 						"angle": cmpPosition.GetRotation().y,
|1688|    |-						"ent": ent
|    |1688|+					"ent": ent
|1689|1689| 				};
|1690|1690| 			}
|1691|1691| 		}
|    | [NORMAL] ESLintBear (space-unary-ops):
|    | Unary word operator 'typeof' must be followed by whitespace.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 340| 340| 	}
| 341| 341| 
| 342| 342| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 343|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 343|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 344| 344| 	{
| 345| 345| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 346| 346| 		return false;
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 491| 491| 	mouseIsOverObject = (hoveredObject != null);
| 492| 492| 
| 493| 493| 	// Close the menu when interacting with the game world
| 494|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 495|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 494|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 495|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 496| 496| 		g_Menu.close();
| 497| 497| 
| 498| 498| 	// State-machine processing:
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 652| 652| 		// user to continue building walls.
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655|    |-			case "mousemotion":
|    | 655|+		case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655| 655| 			case "mousemotion":
| 656|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 656|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 655| 655| 			case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658|    |-				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 658|+			// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659|    |-				// the ending point and the starting point to snap to.
|    | 659|+			// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660|    |-				//
|    | 660|+			//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 661|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 662|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 663|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 664|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 665|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666|    |-				// points.
|    | 666|+			// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 668|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 669|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671|    |-				if (result && result.cost)
|    | 671|+			if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672|    |-				{
|    | 672|+			{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 673|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674|    |-					placementSupport.tooltipMessage = [
|    | 674|+				placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675|    |-						getEntityCostTooltip(result),
|    | 675|+					getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676|    |-						getNeededResourcesTooltip(neededResources)
|    | 676|+					getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677|    |-					].filter(tip => tip).join("\n");
|    | 677|+				].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680| 680| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678|    |-				}
|    | 678|+			}
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680|    |-				break;
|    | 680|+			break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
| 682|    |-			case "mousebuttondown":
|    | 682|+		case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 680| 680| 				break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 683|+			if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684|    |-				{
|    | 684|+			{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 685|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686|    |-					if (tryPlaceWall(queued))
|    | 686|+				if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687|    |-					{
|    | 687|+				{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688|    |-						if (queued)
|    | 688|+					if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689|    |-						{
|    | 689|+					{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690|    |-							// continue building, just set a new starting position where we left off
|    | 690|+						// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 691|+						placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692|    |-							placementSupport.wallEndPosition = undefined;
|    | 692|+						placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 694|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695|    |-						}
|    | 695|+					}
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696|    |-						else
|    | 696|+					else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697|    |-						{
|    | 697|+					{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
| 698|    |-							placementSupport.Reset();
|    | 698|+						placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699|    |-							inputState = INPUT_NORMAL;
|    | 699|+						inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700|    |-							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 700|+						Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701|    |-						}
|    | 701|+					}
| 702| 702| 					}
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702|    |-					}
|    | 702|+				}
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703|    |-					else
|    | 703|+				else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					else
| 704|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 704|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706|    |-					updateBuildingPlacementPreview();
|    | 706|+				updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707|    |-					return true;
|    | 707|+				return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708|    |-				}
|    | 708|+			}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 709|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710|    |-				{
|    | 710|+			{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711|    |-					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 711|+				Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712|    |-					// reset to normal input mode
|    | 712|+				// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713|    |-					placementSupport.Reset();
|    | 713|+				placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714|    |-					updateBuildingPlacementPreview();
|    | 714|+				updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716|    |-					inputState = INPUT_NORMAL;
|    | 716|+				inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719| 719| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717|    |-					return true;
|    | 717|+				return true;
| 718| 718| 				}
| 719| 719| 				break;
| 720| 720| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718|    |-				}
|    | 718|+			}
| 719| 719| 				break;
| 720| 720| 		}
| 721| 721| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719|    |-				break;
|    | 719|+			break;
| 720| 720| 		}
| 721| 721| 		break;
| 722| 722| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 858| 858| 			break;
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 861|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862|    |-				{
|    | 862|+			{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863|    |-					let now = Date.now();
|    | 863|+				let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 864|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865|    |-					{
|    | 865|+				{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 866|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867|    |-						{
|    | 867|+					{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868|    |-							var sptr = ev.hotkey.split(".");
|    | 868|+						var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869|    |-							performGroup("snap", sptr[3]);
|    | 869|+						performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870|    |-						}
|    | 870|+					}
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871|    |-					}
|    | 871|+				}
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872|    |-					else
|    | 872|+				else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					else
| 873|    |-					{
|    | 873|+				{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
| 874|    |-						var sptr = ev.hotkey.split(".");
|    | 874|+					var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875|    |-						performGroup(sptr[2], sptr[3]);
|    | 875|+					performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877|    |-						doublePressTimer = now;
|    | 877|+					doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878|    |-						prevHotkey = ev.hotkey;
|    | 878|+					prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881| 881| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879|    |-					}
|    | 879|+				}
| 880| 880| 				}
| 881| 881| 				break;
| 882| 882| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880|    |-				}
|    | 880|+			}
| 881| 881| 				break;
| 882| 882| 		}
| 883| 883| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881|    |-				break;
|    | 881|+			break;
| 882| 882| 		}
| 883| 883| 		break;
| 884| 884| 
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|1612|1612| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1613|1613| 
|1614|1614| 	// Reset the last idle unit, etc., if the selection type has changed.
|1615|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1615|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1616|1616| 		resetIdleUnit();
|1617|1617| 	lastIdleClasses = classes;
|1618|1618| 

binaries/data/mods/public/gui/session/input.js
| 235| »   var·target·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'target' to undefined.

binaries/data/mods/public/gui/session/input.js
| 249| »   var·actionInfo·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'actionInfo' to undefined.

binaries/data/mods/public/gui/session/input.js
| 480| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 511| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 566| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 576| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 624| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 653| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 724| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 740| ·»   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 741| ·»   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 746| ·»   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

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

binaries/data/mods/public/gui/session/input.js
| 828| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 930| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1019| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1033| »   »   »   »   let·action·=·determineAction(ev.x,·ev.y);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'action' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
|1042| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1066| ·»   »   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1067| ·»   »   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1068| ·»   »   »   »   »   "z":·placementSupport.position.z,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1071| ·»   »   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1132| »   »   »   switch·(ev.hotkey)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 235| »   var·target·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'target' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 249| »   var·actionInfo·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'actionInfo' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 263| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 266| »   »   »   var·r·=·g_UnitActions[action].hotkeyActionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 271| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 274| »   »   »   var·r·=·g_UnitActions[action].actionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 495| »   »   &&·(ev.button·==·SDL_BUTTON_LEFT·||·ev.button·==·SDL_BUTTON_RIGHT))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/gui/session/input.js
| 525| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 528| »   »   »   »   var·ents·=·getPreferredEntities(Engine.PickPlayerEntitiesInRect(rect[0],·rect[1],·rect[2],·rect[3],·g_ViewedPlayer));
|    | [NORMAL] JSHintBear:
|    | 'ents' is already defined.

binaries/data/mods/public/gui/session/input.js
| 685| »   »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 761| »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 874| »   »   »   »   »   »   var·sptr·=·ev.hotkey.split(".");
|    | [NORMAL] JSHintBear:
|    | 'sptr' is already defined.

binaries/data/mods/public/gui/session/input.js
| 890| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/gui/session/input.js
| 916| »   »   »   }
|    | [NORMAL] JSHintBear:
|    | Expected a 'break' statement before 'default'.

binaries/data/mods/public/gui/session/input.js
| 940| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '||' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|  87|  87| 		// If the elements are still strings, split them by space or by '+'
|  88|  88| 		if (typeof sublist == "string")
|  89|  89| 			sublist = sublist.split(/[+\s]+/);
|  90|    |-		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1)
|  91|    |-		                    || (c[0] != "!" && classes.indexOf(c) != -1)))
|    |  90|+		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1) ||
|    |  91|+		                    (c[0] != "!" && classes.indexOf(c) != -1)))
|  92|  92| 			return true;
|  93|  93| 	}
|  94|  94| 

binaries/data/mods/public/globalscripts/Templates.js
|  91| »   »   ····················||·(c[0]·!=·"!"·&&·classes.indexOf(c)·!=·-1)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.
Executing section cli...

Link to build: https://jenkins.wildfiregames.com/job/docker-differential/1958/display/redirect

Freagarach added inline comments.Apr 2 2020, 4:10 PM
binaries/data/mods/public/simulation/components/Foundation.js
48

On the first build attempt of an entity.

binaries/data/mods/public/simulation/components/GuiInterface.js
1572–1573
if (entInfo.slot)
  validPlacement = true;
else
{
  rest of checks;
}

Like that?

binaries/data/mods/public/simulation/templates/structures/palisades_tower.xml
15

(One can do svn cleanup --remove-unversioned.)

source/simulation2/components/CCmpRangeManager.cpp
1623–1624

Not sure about this by the way. To have it after the scripted visibility.

Stan updated this revision to Diff 11619.Apr 2 2020, 5:04 PM
Stan marked 3 inline comments as done.

fix inlines

Stan marked an inline comment as done.Apr 2 2020, 5:04 PM
Stan added inline comments.
binaries/data/mods/public/simulation/components/Foundation.js
48

Does that mean I can remove it?

binaries/data/mods/public/simulation/templates/structures/palisades_tower.xml
15

Sure, one might also forget :D

source/simulation2/components/CCmpRangeManager.cpp
1623–1624

Maybe @Angen know why.

Vulcan added a comment.Apr 2 2020, 5:11 PM

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

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '||' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|  87|  87| 		// If the elements are still strings, split them by space or by '+'
|  88|  88| 		if (typeof sublist == "string")
|  89|  89| 			sublist = sublist.split(/[+\s]+/);
|  90|    |-		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1)
|  91|    |-		                    || (c[0] != "!" && classes.indexOf(c) != -1)))
|    |  90|+		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1) ||
|    |  91|+		                    (c[0] != "!" && classes.indexOf(c) != -1)))
|  92|  92| 			return true;
|  93|  93| 	}
|  94|  94| 

binaries/data/mods/public/globalscripts/Templates.js
|  91| »   »   ····················||·(c[0]·!=·"!"·&&·classes.indexOf(c)·!=·-1)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 527| 527| 			if (cmpGarrisonHolder)
| 528| 528| 			{
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531|    |-				    && player != +cmd.owner)
|    | 530|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 531|+				    player != +cmd.owner)
| 532| 532| 						continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530| 530| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531| 531| 				    && player != +cmd.owner)
| 532|    |-						continue;
|    | 532|+					continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 535| 535| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1479|1479| 		// Check that all its members are selected
|1480|1480| 		var fid = formationIds[0];
|1481|1481| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1482|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1483|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1482|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1483|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1484|1484| 		{
|1485|1485| 			cmpFormation.DeleteTwinFormations();
|1486|1486| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1587|1587| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1588|1588| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1589|1589| 				if (matrix[i][j] < distSq)
|1590|    |-					closeClusters = [i,j];
|    |1590|+					closeClusters = [i, j];
|1591|1591| 
|1592|1592| 		// if no more close clusters found, just return all found clusters so far
|1593|1593| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1609|1609| 		}
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|    |-		clusters.splice(closeClusters[0],1);
|    |1612|+		clusters.splice(closeClusters[0], 1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|    |-		clusters.splice(closeClusters[1],1);
|    |1613|+		clusters.splice(closeClusters[1], 1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|    |-		matrix.splice(closeClusters[0],1);
|    |1614|+		matrix.splice(closeClusters[0], 1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|    |-		matrix.splice(closeClusters[1],1);
|    |1615|+		matrix.splice(closeClusters[1], 1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|    |-				matrix[i].splice(closeClusters[0],1);
|    |1619|+				matrix[i].splice(closeClusters[0], 1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|1621| 				matrix[i].splice(closeClusters[1],1);
|1622|1622| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|1619| 				matrix[i].splice(closeClusters[0],1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|    |-				matrix[i].splice(closeClusters[1],1);
|    |1621|+				matrix[i].splice(closeClusters[1], 1);
|1622|1622| 		}
|1623|1623| 		// add a new row of distances to the matrix and the new cluster
|1624|1624| 		clusters.push(newCluster);

binaries/data/mods/public/simulation/helpers/Commands.js
|  43| »   if·(g_Commands[cmd.type])
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|  47| »   »   g_Commands[cmd.type](player,·cmd,·data);
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 788| »   »   let·ent·=·pickRandom(cmpRangeManager.GetEntitiesByPlayer(cmd.player).filter(ent·=>·{
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1275| ····»   »   »   error("[TryConstructWall]·Expected·last·tower·control·group·to·be·available,·none·found·(1st·pass,·iteration·"·+·i·+·")");
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1276| ····»   »   »   break;
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1506| »   »   »   »   var·lastFormationTemplate·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'lastFormationTemplate' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1585| »   »   var·closeClusters·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1602| »   »   for·(let·i·=·0;·i·<·clusters.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1616| »   »   for·(let·i·=·0;·i·<·matrix.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

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
| 531| »   »   »   »   ····&&·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
| 726| »   »   »   »   var·cmpGUIInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGUIInterface' is already defined.

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

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

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

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

binaries/data/mods/public/simulation/helpers/Commands.js
|1444| »   »   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 (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
| 826| 826| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 827| 827| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 828| 828| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 829|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 829|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 830| 830| 	}
| 831| 831| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 832| 832| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (no-multi-spaces):
|    | Multiple spaces found before '='.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1246|1246| 	if (cmd.snapSlots)
|1247|1247| 	{
|1248|1248| 		// Determined through trial and error.
|1249|    |-		let snapRadiusMultiplier  = 0.5;
|    |1249|+		let snapRadiusMultiplier = 0.5;
|1250|1250| 		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier ;
|1251|1251| 		let startSnapData = this.GetFoundationSnapData(player, {
|1252|1252| 			"x": start.pos.x,
|    | [NORMAL] ESLintBear (semi-spacing):
|    | Unexpected whitespace before semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1247|1247| 	{
|1248|1248| 		// Determined through trial and error.
|1249|1249| 		let snapRadiusMultiplier  = 0.5;
|1250|    |-		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier ;
|    |1250|+		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier;
|1251|1251| 		let startSnapData = this.GetFoundationSnapData(player, {
|1252|1252| 			"x": start.pos.x,
|1253|1253| 			"z": start.pos.z,
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1683|1683| 			{
|1684|1684| 				minDist2 = dist2;
|1685|1685| 				minDistEntitySnapData = {
|1686|    |-						"x": pos.x,
|    |1686|+					"x": pos.x,
|1687|1687| 						"z": pos.z,
|1688|1688| 						"angle": cmpPosition.GetRotation().y,
|1689|1689| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1684|1684| 				minDist2 = dist2;
|1685|1685| 				minDistEntitySnapData = {
|1686|1686| 						"x": pos.x,
|1687|    |-						"z": pos.z,
|    |1687|+					"z": pos.z,
|1688|1688| 						"angle": cmpPosition.GetRotation().y,
|1689|1689| 						"ent": ent
|1690|1690| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1685|1685| 				minDistEntitySnapData = {
|1686|1686| 						"x": pos.x,
|1687|1687| 						"z": pos.z,
|1688|    |-						"angle": cmpPosition.GetRotation().y,
|    |1688|+					"angle": cmpPosition.GetRotation().y,
|1689|1689| 						"ent": ent
|1690|1690| 				};
|1691|1691| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1686|1686| 						"x": pos.x,
|1687|1687| 						"z": pos.z,
|1688|1688| 						"angle": cmpPosition.GetRotation().y,
|1689|    |-						"ent": ent
|    |1689|+					"ent": ent
|1690|1690| 				};
|1691|1691| 			}
|1692|1692| 		}
|    | [NORMAL] ESLintBear (space-unary-ops):
|    | Unary word operator 'typeof' must be followed by whitespace.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 340| 340| 	}
| 341| 341| 
| 342| 342| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 343|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 343|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 344| 344| 	{
| 345| 345| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 346| 346| 		return false;
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 491| 491| 	mouseIsOverObject = (hoveredObject != null);
| 492| 492| 
| 493| 493| 	// Close the menu when interacting with the game world
| 494|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 495|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 494|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 495|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 496| 496| 		g_Menu.close();
| 497| 497| 
| 498| 498| 	// State-machine processing:
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 652| 652| 		// user to continue building walls.
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655|    |-			case "mousemotion":
|    | 655|+		case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655| 655| 			case "mousemotion":
| 656|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 656|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 655| 655| 			case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658|    |-				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 658|+			// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659|    |-				// the ending point and the starting point to snap to.
|    | 659|+			// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660|    |-				//
|    | 660|+			//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 661|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 662|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 663|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 664|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 665|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666|    |-				// points.
|    | 666|+			// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 668|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 669|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671|    |-				if (result && result.cost)
|    | 671|+			if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672|    |-				{
|    | 672|+			{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 673|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674|    |-					placementSupport.tooltipMessage = [
|    | 674|+				placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675|    |-						getEntityCostTooltip(result),
|    | 675|+					getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676|    |-						getNeededResourcesTooltip(neededResources)
|    | 676|+					getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677|    |-					].filter(tip => tip).join("\n");
|    | 677|+				].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680| 680| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678|    |-				}
|    | 678|+			}
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680|    |-				break;
|    | 680|+			break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
| 682|    |-			case "mousebuttondown":
|    | 682|+		case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 680| 680| 				break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 683|+			if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684|    |-				{
|    | 684|+			{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 685|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686|    |-					if (tryPlaceWall(queued))
|    | 686|+				if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687|    |-					{
|    | 687|+				{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688|    |-						if (queued)
|    | 688|+					if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689|    |-						{
|    | 689|+					{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690|    |-							// continue building, just set a new starting position where we left off
|    | 690|+						// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 691|+						placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692|    |-							placementSupport.wallEndPosition = undefined;
|    | 692|+						placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 694|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695|    |-						}
|    | 695|+					}
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696|    |-						else
|    | 696|+					else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697|    |-						{
|    | 697|+					{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
| 698|    |-							placementSupport.Reset();
|    | 698|+						placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699|    |-							inputState = INPUT_NORMAL;
|    | 699|+						inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700|    |-							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 700|+						Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701|    |-						}
|    | 701|+					}
| 702| 702| 					}
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702|    |-					}
|    | 702|+				}
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703|    |-					else
|    | 703|+				else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					else
| 704|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 704|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706|    |-					updateBuildingPlacementPreview();
|    | 706|+				updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707|    |-					return true;
|    | 707|+				return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708|    |-				}
|    | 708|+			}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 709|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710|    |-				{
|    | 710|+			{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711|    |-					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 711|+				Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712|    |-					// reset to normal input mode
|    | 712|+				// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713|    |-					placementSupport.Reset();
|    | 713|+				placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714|    |-					updateBuildingPlacementPreview();
|    | 714|+				updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716|    |-					inputState = INPUT_NORMAL;
|    | 716|+				inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719| 719| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717|    |-					return true;
|    | 717|+				return true;
| 718| 718| 				}
| 719| 719| 				break;
| 720| 720| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718|    |-				}
|    | 718|+			}
| 719| 719| 				break;
| 720| 720| 		}
| 721| 721| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719|    |-				break;
|    | 719|+			break;
| 720| 720| 		}
| 721| 721| 		break;
| 722| 722| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 858| 858| 			break;
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 861|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862|    |-				{
|    | 862|+			{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863|    |-					let now = Date.now();
|    | 863|+				let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 864|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865|    |-					{
|    | 865|+				{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 866|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867|    |-						{
|    | 867|+					{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868|    |-							var sptr = ev.hotkey.split(".");
|    | 868|+						var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869|    |-							performGroup("snap", sptr[3]);
|    | 869|+						performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870|    |-						}
|    | 870|+					}
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871|    |-					}
|    | 871|+				}
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872|    |-					else
|    | 872|+				else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					else
| 873|    |-					{
|    | 873|+				{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
| 874|    |-						var sptr = ev.hotkey.split(".");
|    | 874|+					var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875|    |-						performGroup(sptr[2], sptr[3]);
|    | 875|+					performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877|    |-						doublePressTimer = now;
|    | 877|+					doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878|    |-						prevHotkey = ev.hotkey;
|    | 878|+					prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881| 881| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879|    |-					}
|    | 879|+				}
| 880| 880| 				}
| 881| 881| 				break;
| 882| 882| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880|    |-				}
|    | 880|+			}
| 881| 881| 				break;
| 882| 882| 		}
| 883| 883| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881|    |-				break;
|    | 881|+			break;
| 882| 882| 		}
| 883| 883| 		break;
| 884| 884| 
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|1612|1612| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1613|1613| 
|1614|1614| 	// Reset the last idle unit, etc., if the selection type has changed.
|1615|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1615|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1616|1616| 		resetIdleUnit();
|1617|1617| 	lastIdleClasses = classes;
|1618|1618| 

binaries/data/mods/public/gui/session/input.js
| 235| »   var·target·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'target' to undefined.

binaries/data/mods/public/gui/session/input.js
| 249| »   var·actionInfo·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'actionInfo' to undefined.

binaries/data/mods/public/gui/session/input.js
| 480| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 511| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 566| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 576| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 624| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 653| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 724| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 740| ·»   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 741| ·»   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 746| ·»   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

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

binaries/data/mods/public/gui/session/input.js
| 828| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 930| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1019| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1033| »   »   »   »   let·action·=·determineAction(ev.x,·ev.y);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'action' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
|1042| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1066| ·»   »   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1067| ·»   »   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1068| ·»   »   »   »   »   "z":·placementSupport.position.z,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1071| ·»   »   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1132| »   »   »   switch·(ev.hotkey)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 235| »   var·target·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'target' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 249| »   var·actionInfo·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'actionInfo' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 263| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 266| »   »   »   var·r·=·g_UnitActions[action].hotkeyActionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 271| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 274| »   »   »   var·r·=·g_UnitActions[action].actionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 495| »   »   &&·(ev.button·==·SDL_BUTTON_LEFT·||·ev.button·==·SDL_BUTTON_RIGHT))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/gui/session/input.js
| 525| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 528| »   »   »   »   var·ents·=·getPreferredEntities(Engine.PickPlayerEntitiesInRect(rect[0],·rect[1],·rect[2],·rect[3],·g_ViewedPlayer));
|    | [NORMAL] JSHintBear:
|    | 'ents' is already defined.

binaries/data/mods/public/gui/session/input.js
| 685| »   »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 761| »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 874| »   »   »   »   »   »   var·sptr·=·ev.hotkey.split(".");
|    | [NORMAL] JSHintBear:
|    | 'sptr' is already defined.

binaries/data/mods/public/gui/session/input.js
| 890| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/gui/session/input.js
| 916| »   »   »   }
|    | [NORMAL] JSHintBear:
|    | Expected a 'break' statement before 'default'.

binaries/data/mods/public/gui/session/input.js
| 940| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 445| 445| 
| 446| 446| 	if (this.regenRate != oldRegenRate || this.idleRegenRate != oldIdleRegenRate)
| 447| 447| 		this.CheckRegenTimer();
| 448|    |-}
|    | 448|+};
| 449| 449| 
| 450| 450| Health.prototype.OnValueModification = function(msg)
| 451| 451| {
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 457| 457| {
| 458| 458| 	if (msg.to != INVALID_PLAYER)
| 459| 459| 		this.RecalculateValues();
| 460|    |-}
|    | 460|+};
| 461| 461| 
| 462| 462| Health.prototype.RegisterHealthChanged = function(from)
| 463| 463| {

binaries/data/mods/public/simulation/components/Health.js
| 448| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Health.js
| 460| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 169| 169| 	this.totalBuilderRate += buildRate;
| 170| 170| 
| 171| 171| 	return true;
| 172|    |-}
|    | 172|+};
| 173| 173| 
| 174| 174| /**
| 175| 175|  * Adds a builder to the counter.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 204| 204| 		cmpVisual.SetVariable("numbuilders", this.builders.size);
| 205| 205| 
| 206| 206| 	Engine.PostMessage(this.entity, MT_FoundationBuildersChanged, { "to": this.GetBuilders() });
| 207|    |-}
|    | 207|+};
| 208| 208| 
| 209| 209| /**
| 210| 210|  * The build multiplier is a penalty that is applied to each builder.

binaries/data/mods/public/simulation/components/Foundation.js
| 172| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 207| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 377| »   »   var·pos·=·cmpPosition.GetPosition2D();
|    | [NORMAL] JSHintBear:
|    | 'pos' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 379| »   »   var·rot·=·cmpPosition.GetRotation();
|    | [NORMAL] JSHintBear:
|    | 'rot' is already defined.
Executing section cli...

Link to build: https://jenkins.wildfiregames.com/job/docker-differential/1960/display/redirect

Freagarach added inline comments.Apr 2 2020, 5:17 PM
binaries/data/mods/public/gui/session/placement.js
22

this.wallSlots

binaries/data/mods/public/simulation/components/GuiInterface.js
2002–2009

It can't find start here.

Stan updated this revision to Diff 11620.Apr 2 2020, 5:22 PM
Stan marked an inline comment as done.

Fix some inlines

Stan marked an inline comment as done.Apr 2 2020, 5:22 PM
Stan added inline comments.
binaries/data/mods/public/simulation/components/GuiInterface.js
2002–2009

Duh

Angen added inline comments.Apr 2 2020, 5:24 PM
source/simulation2/components/CCmpRangeManager.cpp
1623–1624

because else with revealed map, observer mod, current ai visibility one would see tower spots all the time

Freagarach added inline comments.Apr 2 2020, 5:26 PM
source/simulation2/components/CCmpRangeManager.cpp
1623–1624

Yes, that I figured, but does/can it have unintended side effects?

Vulcan added a comment.Apr 2 2020, 5:31 PM

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

Linter detected issues:
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 445| 445| 
| 446| 446| 	if (this.regenRate != oldRegenRate || this.idleRegenRate != oldIdleRegenRate)
| 447| 447| 		this.CheckRegenTimer();
| 448|    |-}
|    | 448|+};
| 449| 449| 
| 450| 450| Health.prototype.OnValueModification = function(msg)
| 451| 451| {
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Health.js
| 457| 457| {
| 458| 458| 	if (msg.to != INVALID_PLAYER)
| 459| 459| 		this.RecalculateValues();
| 460|    |-}
|    | 460|+};
| 461| 461| 
| 462| 462| Health.prototype.RegisterHealthChanged = function(from)
| 463| 463| {

binaries/data/mods/public/simulation/components/Health.js
| 448| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Health.js
| 460| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 527| 527| 			if (cmpGarrisonHolder)
| 528| 528| 			{
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530|    |-				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531|    |-				    && player != +cmd.owner)
|    | 530|+				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits &&
|    | 531|+				    player != +cmd.owner)
| 532| 532| 						continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
| 529| 529| 				// Only the owner of the garrisonHolder may unload entities from any owners
| 530| 530| 				if (!IsOwnedByPlayer(player, garrisonHolder) && !data.controlAllUnits
| 531| 531| 				    && player != +cmd.owner)
| 532|    |-						continue;
|    | 532|+					continue;
| 533| 533| 
| 534| 534| 				if (!cmpGarrisonHolder.UnloadTemplate(cmd.template, cmd.owner, cmd.all))
| 535| 535| 					notifyUnloadFailure(player, garrisonHolder);
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'metadata'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata": cmd.metadata, "owner" : player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (key-spacing):
|    | Extra space after key 'owner'.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner": player } );
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (space-in-parens):
|    | There should be no spaces inside this paren.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1142|1142| 
|1143|1143| 	// send Metadata info if any
|1144|1144| 	if (cmd.metadata)
|1145|    |-		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player } );
|    |1145|+		Engine.PostMessage(ent, MT_AIMetadata, { "id": ent, "metadata" : cmd.metadata, "owner" : player });
|1146|1146| 
|1147|1147| 	// Tell the units to start building this new entity
|1148|1148| 	if (cmd.autorepair)
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1479|1479| 		// Check that all its members are selected
|1480|1480| 		var fid = formationIds[0];
|1481|1481| 		var cmpFormation = Engine.QueryInterface(+fid, IID_Formation);
|1482|    |-		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length
|1483|    |-			&& cmpFormation.GetMemberCount() == formation.entities.length)
|    |1482|+		if (cmpFormation && cmpFormation.GetMemberCount() == formation.members[fid].length &&
|    |1483|+			cmpFormation.GetMemberCount() == formation.entities.length)
|1484|1484| 		{
|1485|1485| 			cmpFormation.DeleteTwinFormations();
|1486|1486| 			// The whole formation was selected, so reuse its controller for this command
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1587|1587| 		for (var i = matrix.length - 1; i >= 0 && !closeClusters; --i)
|1588|1588| 			for (var j = i - 1; j >= 0 && !closeClusters; --j)
|1589|1589| 				if (matrix[i][j] < distSq)
|1590|    |-					closeClusters = [i,j];
|    |1590|+					closeClusters = [i, j];
|1591|1591| 
|1592|1592| 		// if no more close clusters found, just return all found clusters so far
|1593|1593| 		if (!closeClusters)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1609|1609| 		}
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|    |-		clusters.splice(closeClusters[0],1);
|    |1612|+		clusters.splice(closeClusters[0], 1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1610|1610| 		// remove the rows and columns in the matrix for the merged clusters,
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|    |-		clusters.splice(closeClusters[1],1);
|    |1613|+		clusters.splice(closeClusters[1], 1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1611|1611| 		// and the clusters themselves from the cluster list
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|    |-		matrix.splice(closeClusters[0],1);
|    |1614|+		matrix.splice(closeClusters[0], 1);
|1615|1615| 		matrix.splice(closeClusters[1],1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1612|1612| 		clusters.splice(closeClusters[0],1);
|1613|1613| 		clusters.splice(closeClusters[1],1);
|1614|1614| 		matrix.splice(closeClusters[0],1);
|1615|    |-		matrix.splice(closeClusters[1],1);
|    |1615|+		matrix.splice(closeClusters[1], 1);
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1616|1616| 		for (let i = 0; i < matrix.length; ++i)
|1617|1617| 		{
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|    |-				matrix[i].splice(closeClusters[0],1);
|    |1619|+				matrix[i].splice(closeClusters[0], 1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|1621| 				matrix[i].splice(closeClusters[1],1);
|1622|1622| 		}
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/helpers/Commands.js
|1618|1618| 			if (matrix[i].length > closeClusters[0])
|1619|1619| 				matrix[i].splice(closeClusters[0],1);
|1620|1620| 			if (matrix[i].length > closeClusters[1])
|1621|    |-				matrix[i].splice(closeClusters[1],1);
|    |1621|+				matrix[i].splice(closeClusters[1], 1);
|1622|1622| 		}
|1623|1623| 		// add a new row of distances to the matrix and the new cluster
|1624|1624| 		clusters.push(newCluster);

binaries/data/mods/public/simulation/helpers/Commands.js
|  43| »   if·(g_Commands[cmd.type])
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
|  47| »   »   g_Commands[cmd.type](player,·cmd,·data);
|    | [MAJOR] ESLintBear (no-use-before-define):
|    | 'g_Commands' was used before it was defined.

binaries/data/mods/public/simulation/helpers/Commands.js
| 788| »   »   let·ent·=·pickRandom(cmpRangeManager.GetEntitiesByPlayer(cmd.player).filter(ent·=>·{
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1275| ····»   »   »   error("[TryConstructWall]·Expected·last·tower·control·group·to·be·available,·none·found·(1st·pass,·iteration·"·+·i·+·")");
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1276| ····»   »   »   break;
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/simulation/helpers/Commands.js
|1506| »   »   »   »   var·lastFormationTemplate·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'lastFormationTemplate' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1585| »   »   var·closeClusters·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'closeClusters' to undefined.

binaries/data/mods/public/simulation/helpers/Commands.js
|1602| »   »   for·(let·i·=·0;·i·<·clusters.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

binaries/data/mods/public/simulation/helpers/Commands.js
|1616| »   »   for·(let·i·=·0;·i·<·matrix.length;·++i)
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'i' is already declared in the upper scope.

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
| 531| »   »   »   »   ····&&·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
| 726| »   »   »   »   var·cmpGUIInterface·=·Engine.QueryInterface(SYSTEM_ENTITY,·IID_GuiInterface);
|    | [NORMAL] JSHintBear:
|    | 'cmpGUIInterface' is already defined.

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

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

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

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

binaries/data/mods/public/simulation/helpers/Commands.js
|1444| »   »   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 (operator-linebreak):
|    | '||' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/globalscripts/Templates.js
|  87|  87| 		// If the elements are still strings, split them by space or by '+'
|  88|  88| 		if (typeof sublist == "string")
|  89|  89| 			sublist = sublist.split(/[+\s]+/);
|  90|    |-		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1)
|  91|    |-		                    || (c[0] != "!" && classes.indexOf(c) != -1)))
|    |  90|+		if (sublist.every(c => (c[0] == "!" && classes.indexOf(c.substr(1)) == -1) ||
|    |  91|+		                    (c[0] != "!" && classes.indexOf(c) != -1)))
|  92|  92| 			return true;
|  93|  93| 	}
|  94|  94| 

binaries/data/mods/public/globalscripts/Templates.js
|  91| »   »   ····················||·(c[0]·!=·"!"·&&·classes.indexOf(c)·!=·-1)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 169| 169| 	this.totalBuilderRate += buildRate;
| 170| 170| 
| 171| 171| 	return true;
| 172|    |-}
|    | 172|+};
| 173| 173| 
| 174| 174| /**
| 175| 175|  * Adds a builder to the counter.
|    | [NORMAL] ESLintBear (semi):
|    | Missing semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/Foundation.js
| 204| 204| 		cmpVisual.SetVariable("numbuilders", this.builders.size);
| 205| 205| 
| 206| 206| 	Engine.PostMessage(this.entity, MT_FoundationBuildersChanged, { "to": this.GetBuilders() });
| 207|    |-}
|    | 207|+};
| 208| 208| 
| 209| 209| /**
| 210| 210|  * The build multiplier is a penalty that is applied to each builder.

binaries/data/mods/public/simulation/components/Foundation.js
| 172| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 207| }
|    | [NORMAL] JSHintBear:
|    | Missing semicolon.

binaries/data/mods/public/simulation/components/Foundation.js
| 377| »   »   var·pos·=·cmpPosition.GetPosition2D();
|    | [NORMAL] JSHintBear:
|    | 'pos' is already defined.

binaries/data/mods/public/simulation/components/Foundation.js
| 379| »   »   var·rot·=·cmpPosition.GetRotation();
|    | [NORMAL] JSHintBear:
|    | 'rot' is already defined.
|    | [NORMAL] ESLintBear (space-unary-ops):
|    | Unary word operator 'typeof' must be followed by whitespace.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 340| 340| 	}
| 341| 341| 
| 342| 342| 	var wallPlacementInfo = updateBuildingPlacementPreview(); // entities making up the wall (wall segments, towers, ...)
| 343|    |-	if (!(wallPlacementInfo === false || typeof(wallPlacementInfo) === "object"))
|    | 343|+	if (!(wallPlacementInfo === false || typeof (wallPlacementInfo) === "object"))
| 344| 344| 	{
| 345| 345| 		error("Invalid updateBuildingPlacementPreview return value: " + uneval(wallPlacementInfo));
| 346| 346| 		return false;
|    | [NORMAL] ESLintBear (operator-linebreak):
|    | '&&' should be placed at the end of the line.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 491| 491| 	mouseIsOverObject = (hoveredObject != null);
| 492| 492| 
| 493| 493| 	// Close the menu when interacting with the game world
| 494|    |-	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown")
| 495|    |-		&& (ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
|    | 494|+	if (!mouseIsOverObject && (ev.type =="mousebuttonup" || ev.type == "mousebuttondown") &&
|    | 495|+		(ev.button == SDL_BUTTON_LEFT || ev.button == SDL_BUTTON_RIGHT))
| 496| 496| 		g_Menu.close();
| 497| 497| 
| 498| 498| 	// State-machine processing:
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 652| 652| 		// user to continue building walls.
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655|    |-			case "mousemotion":
|    | 655|+		case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 653| 653| 		switch (ev.type)
| 654| 654| 		{
| 655| 655| 			case "mousemotion":
| 656|    |-				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
|    | 656|+			placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 655| 655| 			case "mousemotion":
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658|    |-				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
|    | 658|+			// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 656| 656| 				placementSupport.wallEndPosition = Engine.GetTerrainAtScreenPoint(ev.x, ev.y);
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659|    |-				// the ending point and the starting point to snap to.
|    | 659|+			// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 657| 657| 
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660|    |-				//
|    | 660|+			//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 658| 658| 				// Update the structure placement preview, and by extension, the list of snapping candidate entities for both (!)
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661|    |-				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
|    | 661|+			// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 659| 659| 				// the ending point and the starting point to snap to.
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662|    |-				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
|    | 662|+			// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 660| 660| 				//
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663|    |-				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
|    | 663|+			// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 661| 661| 				// TODO: Note that here, we need to fetch all similar entities, including any offscreen ones, to support the case
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664|    |-				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
|    | 664|+			// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 662| 662| 				// where the snap entity for the starting point has moved offscreen, or has been deleted/destroyed, or was a
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665|    |-				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
|    | 665|+			// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 663| 663| 				// foundation and has been replaced with a completed entity since the user first chose it. Fetching all towers on
| 664| 664| 				// the entire map instead of only the current screen might get expensive fast since walls all have a ton of towers
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666|    |-				// points.
|    | 666|+			// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 665| 665| 				// in them. Might be useful to query only for entities within a certain range around the starting point and ending
| 666| 666| 				// points.
| 667| 667| 
| 668|    |-				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
|    | 668|+			placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 666| 666| 				// points.
| 667| 667| 
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669|    |-				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
|    | 669|+			var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 668| 668| 				placementSupport.wallSnapEntitiesIncludeOffscreen = true;
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671|    |-				if (result && result.cost)
|    | 671|+			if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 669| 669| 				var result = updateBuildingPlacementPreview(); // includes an update of the snap entity candidates
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672|    |-				{
|    | 672|+			{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 670| 670| 
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673|    |-					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
|    | 673|+				var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 671| 671| 				if (result && result.cost)
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674|    |-					placementSupport.tooltipMessage = [
|    | 674|+				placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 672| 672| 				{
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675|    |-						getEntityCostTooltip(result),
|    | 675|+					getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 673| 673| 					var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost });
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676|    |-						getNeededResourcesTooltip(neededResources)
|    | 676|+					getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 674| 674| 					placementSupport.tooltipMessage = [
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677|    |-					].filter(tip => tip).join("\n");
|    | 677|+				].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680| 680| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 675| 675| 						getEntityCostTooltip(result),
| 676| 676| 						getNeededResourcesTooltip(neededResources)
| 677| 677| 					].filter(tip => tip).join("\n");
| 678|    |-				}
|    | 678|+			}
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 677| 677| 					].filter(tip => tip).join("\n");
| 678| 678| 				}
| 679| 679| 
| 680|    |-				break;
|    | 680|+			break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 679| 679| 
| 680| 680| 				break;
| 681| 681| 
| 682|    |-			case "mousebuttondown":
|    | 682|+		case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 680| 680| 				break;
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683|    |-				if (ev.button == SDL_BUTTON_LEFT)
|    | 683|+			if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 681| 681| 
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684|    |-				{
|    | 684|+			{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 682| 682| 			case "mousebuttondown":
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685|    |-					var queued = Engine.HotkeyIsPressed("session.queue");
|    | 685|+				var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 683| 683| 				if (ev.button == SDL_BUTTON_LEFT)
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686|    |-					if (tryPlaceWall(queued))
|    | 686|+				if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 684| 684| 				{
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687|    |-					{
|    | 687|+				{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 685| 685| 					var queued = Engine.HotkeyIsPressed("session.queue");
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688|    |-						if (queued)
|    | 688|+					if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 686| 686| 					if (tryPlaceWall(queued))
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689|    |-						{
|    | 689|+					{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 687| 687| 					{
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690|    |-							// continue building, just set a new starting position where we left off
|    | 690|+						// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 688| 688| 						if (queued)
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691|    |-							placementSupport.position = placementSupport.wallEndPosition;
|    | 691|+						placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 689| 689| 						{
| 690| 690| 							// continue building, just set a new starting position where we left off
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692|    |-							placementSupport.wallEndPosition = undefined;
|    | 692|+						placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 691| 691| 							placementSupport.position = placementSupport.wallEndPosition;
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694|    |-							inputState = INPUT_BUILDING_WALL_CLICK;
|    | 694|+						inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 692| 692| 							placementSupport.wallEndPosition = undefined;
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695|    |-						}
|    | 695|+					}
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 693| 693| 
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696|    |-						else
|    | 696|+					else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 694| 694| 							inputState = INPUT_BUILDING_WALL_CLICK;
| 695| 695| 						}
| 696| 696| 						else
| 697|    |-						{
|    | 697|+					{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 695| 695| 						}
| 696| 696| 						else
| 697| 697| 						{
| 698|    |-							placementSupport.Reset();
|    | 698|+						placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 696| 696| 						else
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699|    |-							inputState = INPUT_NORMAL;
|    | 699|+						inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 697| 697| 						{
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700|    |-							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 700|+						Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 698| 698| 							placementSupport.Reset();
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701|    |-						}
|    | 701|+					}
| 702| 702| 					}
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 699| 699| 							inputState = INPUT_NORMAL;
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702|    |-					}
|    | 702|+				}
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 700| 700| 							Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 701| 701| 						}
| 702| 702| 					}
| 703|    |-					else
|    | 703|+				else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 701| 701| 						}
| 702| 702| 					}
| 703| 703| 					else
| 704|    |-						placementSupport.tooltipMessage = translate("Cannot build wall here!");
|    | 704|+					placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 703| 703| 					else
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706|    |-					updateBuildingPlacementPreview();
|    | 706|+				updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 704| 704| 						placementSupport.tooltipMessage = translate("Cannot build wall here!");
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707|    |-					return true;
|    | 707|+				return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 705| 705| 
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708|    |-				}
|    | 708|+			}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 706| 706| 					updateBuildingPlacementPreview();
| 707| 707| 					return true;
| 708| 708| 				}
| 709|    |-				else if (ev.button == SDL_BUTTON_RIGHT)
|    | 709|+			else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 707| 707| 					return true;
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710|    |-				{
|    | 710|+			{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 708| 708| 				}
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711|    |-					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
|    | 711|+				Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 709| 709| 				else if (ev.button == SDL_BUTTON_RIGHT)
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712|    |-					// reset to normal input mode
|    | 712|+				// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 710| 710| 				{
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713|    |-					placementSupport.Reset();
|    | 713|+				placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 711| 711| 					Engine.GuiInterfaceCall("SetSlotVisibility", { "hidden": true });
| 712| 712| 					// reset to normal input mode
| 713| 713| 					placementSupport.Reset();
| 714|    |-					updateBuildingPlacementPreview();
|    | 714|+				updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 713| 713| 					placementSupport.Reset();
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716|    |-					inputState = INPUT_NORMAL;
|    | 716|+				inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719| 719| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 714| 714| 					updateBuildingPlacementPreview();
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717|    |-					return true;
|    | 717|+				return true;
| 718| 718| 				}
| 719| 719| 				break;
| 720| 720| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 715| 715| 
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718|    |-				}
|    | 718|+			}
| 719| 719| 				break;
| 720| 720| 		}
| 721| 721| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 716| 716| 					inputState = INPUT_NORMAL;
| 717| 717| 					return true;
| 718| 718| 				}
| 719|    |-				break;
|    | 719|+			break;
| 720| 720| 		}
| 721| 721| 		break;
| 722| 722| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 858| 858| 			break;
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861|    |-				if (ev.hotkey.indexOf("selection.group.") == 0)
|    | 861|+			if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 859| 859| 
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862|    |-				{
|    | 862|+			{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 860| 860| 		case "hotkeydown":
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863|    |-					let now = Date.now();
|    | 863|+				let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 861| 861| 				if (ev.hotkey.indexOf("selection.group.") == 0)
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864|    |-					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
|    | 864|+				if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 862| 862| 				{
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865|    |-					{
|    | 865|+				{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 863| 863| 					let now = Date.now();
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866|    |-						if (ev.hotkey.indexOf("selection.group.select.") == 0)
|    | 866|+					if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 864| 864| 					if (now - doublePressTimer < doublePressTime && ev.hotkey == prevHotkey)
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867|    |-						{
|    | 867|+					{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 865| 865| 					{
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868|    |-							var sptr = ev.hotkey.split(".");
|    | 868|+						var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 6 tabs but found 7.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 866| 866| 						if (ev.hotkey.indexOf("selection.group.select.") == 0)
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869|    |-							performGroup("snap", sptr[3]);
|    | 869|+						performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					else
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 867| 867| 						{
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870|    |-						}
|    | 870|+					}
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 868| 868| 							var sptr = ev.hotkey.split(".");
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871|    |-					}
|    | 871|+				}
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 869| 869| 							performGroup("snap", sptr[3]);
| 870| 870| 						}
| 871| 871| 					}
| 872|    |-					else
|    | 872|+				else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 870| 870| 						}
| 871| 871| 					}
| 872| 872| 					else
| 873|    |-					{
|    | 873|+				{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 871| 871| 					}
| 872| 872| 					else
| 873| 873| 					{
| 874|    |-						var sptr = ev.hotkey.split(".");
|    | 874|+					var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 872| 872| 					else
| 873| 873| 					{
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875|    |-						performGroup(sptr[2], sptr[3]);
|    | 875|+					performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 874| 874| 						var sptr = ev.hotkey.split(".");
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877|    |-						doublePressTimer = now;
|    | 877|+					doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 875| 875| 						performGroup(sptr[2], sptr[3]);
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878|    |-						prevHotkey = ev.hotkey;
|    | 878|+					prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881| 881| 				break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 4 tabs but found 5.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 876| 876| 
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879|    |-					}
|    | 879|+				}
| 880| 880| 				}
| 881| 881| 				break;
| 882| 882| 		}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 877| 877| 						doublePressTimer = now;
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880|    |-				}
|    | 880|+			}
| 881| 881| 				break;
| 882| 882| 		}
| 883| 883| 		break;
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 4.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
| 878| 878| 						prevHotkey = ev.hotkey;
| 879| 879| 					}
| 880| 880| 				}
| 881|    |-				break;
|    | 881|+			break;
| 882| 882| 		}
| 883| 883| 		break;
| 884| 884| 
|    | [NORMAL] ESLintBear (comma-spacing):
|    | A space is required after ','.
|----|    | /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/gui/session/input.js
|1612|1612| 	var selectall = Engine.HotkeyIsPressed("selection.offscreen");
|1613|1613| 
|1614|1614| 	// Reset the last idle unit, etc., if the selection type has changed.
|1615|    |-	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v,i) => v === lastIdleClasses[i]))
|    |1615|+	if (selectall || classes.length != lastIdleClasses.length || !classes.every((v, i) => v === lastIdleClasses[i]))
|1616|1616| 		resetIdleUnit();
|1617|1617| 	lastIdleClasses = classes;
|1618|1618| 

binaries/data/mods/public/gui/session/input.js
| 235| »   var·target·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'target' to undefined.

binaries/data/mods/public/gui/session/input.js
| 249| »   var·actionInfo·=·undefined;
|    | [NORMAL] ESLintBear (no-undef-init):
|    | It's not necessary to initialize 'actionInfo' to undefined.

binaries/data/mods/public/gui/session/input.js
| 480| »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 511| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 566| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 576| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 624| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 653| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 724| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 740| ·»   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 741| ·»   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
| 746| ·»   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

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

binaries/data/mods/public/gui/session/input.js
| 828| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
| 930| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1019| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1033| »   »   »   »   let·action·=·determineAction(ev.x,·ev.y);
|    | [NORMAL] ESLintBear (no-shadow):
|    | 'action' is already declared in the upper scope.

binaries/data/mods/public/gui/session/input.js
|1042| »   »   switch·(ev.type)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

binaries/data/mods/public/gui/session/input.js
|1066| ·»   »   »   »   »   "template":·placementSupport.template,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1067| ·»   »   »   »   »   "x":·placementSupport.position.x,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1068| ·»   »   »   »   »   "z":·placementSupport.position.z,
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1071| ·»   »   »   »   });
|    | [NORMAL] ESLintBear (no-mixed-spaces-and-tabs):
|    | Mixed spaces and tabs.

binaries/data/mods/public/gui/session/input.js
|1132| »   »   »   switch·(ev.hotkey)
|    | [NORMAL] ESLintBear (default-case):
|    | Expected a default case.

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

binaries/data/mods/public/gui/session/input.js
| 235| »   var·target·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'target' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 249| »   var·actionInfo·=·undefined;
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'actionInfo' to 'undefined'.

binaries/data/mods/public/gui/session/input.js
| 263| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 266| »   »   »   var·r·=·g_UnitActions[action].hotkeyActionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 271| »   for·(var·action·of·actions)
|    | [NORMAL] JSHintBear:
|    | 'action' is already defined.

binaries/data/mods/public/gui/session/input.js
| 274| »   »   »   var·r·=·g_UnitActions[action].actionCheck(target,·selection);
|    | [NORMAL] JSHintBear:
|    | 'r' is already defined.

binaries/data/mods/public/gui/session/input.js
| 495| »   »   &&·(ev.button·==·SDL_BUTTON_LEFT·||·ev.button·==·SDL_BUTTON_RIGHT))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/gui/session/input.js
| 525| »   »   »   »   var·rect·=·updateBandbox(bandbox,·ev,·true);
|    | [NORMAL] JSHintBear:
|    | 'rect' is already defined.

binaries/data/mods/public/gui/session/input.js
| 528| »   »   »   »   var·ents·=·getPreferredEntities(Engine.PickPlayerEntitiesInRect(rect[0],·rect[1],·rect[2],·rect[3],·g_ViewedPlayer));
|    | [NORMAL] JSHintBear:
|    | 'ents' is already defined.

binaries/data/mods/public/gui/session/input.js
| 685| »   »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 761| »   »   »   »   var·queued·=·Engine.HotkeyIsPressed("session.queue");
|    | [NORMAL] JSHintBear:
|    | 'queued' is already defined.

binaries/data/mods/public/gui/session/input.js
| 874| »   »   »   »   »   »   var·sptr·=·ev.hotkey.split(".");
|    | [NORMAL] JSHintBear:
|    | 'sptr' is already defined.

binaries/data/mods/public/gui/session/input.js
| 890| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.

binaries/data/mods/public/gui/session/input.js
| 916| »   »   »   }
|    | [NORMAL] JSHintBear:
|    | Expected a 'break' statement before 'default'.

binaries/data/mods/public/gui/session/input.js
| 940| »   »   »   var·ent·=·Engine.PickEntityAtPoint(ev.x,·ev.y);
|    | [NORMAL] JSHintBear:
|    | 'ent' is already defined.
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 2 tabs but found 3.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
| 826| 826| 		updateEntityColor(data.showAllStatusBars && (i == player || player == -1) ?
| 827| 827| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer, IID_StatusBars] :
| 828| 828| 			[IID_Minimap, IID_RangeOverlayRenderer, IID_RallyPointRenderer],
| 829|    |-			cmpRangeManager.GetEntitiesByPlayer(i));
|    | 829|+		cmpRangeManager.GetEntitiesByPlayer(i));
| 830| 830| 	}
| 831| 831| 	updateEntityColor([IID_Selectable, IID_StatusBars], data.selected);
| 832| 832| 	Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager).UpdateColors();
|    | [NORMAL] ESLintBear (no-multi-spaces):
|    | Multiple spaces found before '='.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1246|1246| 	if (cmd.snapSlots)
|1247|1247| 	{
|1248|1248| 		// Determined through trial and error.
|1249|    |-		let snapRadiusMultiplier  = 0.5;
|    |1249|+		let snapRadiusMultiplier = 0.5;
|1250|1250| 		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier ;
|1251|1251| 		let startSnapData = this.GetFoundationSnapData(player, {
|1252|1252| 			"x": start.pos.x,
|    | [NORMAL] ESLintBear (semi-spacing):
|    | Unexpected whitespace before semicolon.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1247|1247| 	{
|1248|1248| 		// Determined through trial and error.
|1249|1249| 		let snapRadiusMultiplier  = 0.5;
|1250|    |-		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier ;
|    |1250|+		let snapRadius = this.placementWallEntities[wallSet.templates.tower].templateData.wallPiece.length * snapRadiusMultiplier;
|1251|1251| 		let startSnapData = this.GetFoundationSnapData(player, {
|1252|1252| 			"x": start.pos.x,
|1253|1253| 			"z": start.pos.z,
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1683|1683| 			{
|1684|1684| 				minDist2 = dist2;
|1685|1685| 				minDistEntitySnapData = {
|1686|    |-						"x": pos.x,
|    |1686|+					"x": pos.x,
|1687|1687| 						"z": pos.z,
|1688|1688| 						"angle": cmpPosition.GetRotation().y,
|1689|1689| 						"ent": ent
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1684|1684| 				minDist2 = dist2;
|1685|1685| 				minDistEntitySnapData = {
|1686|1686| 						"x": pos.x,
|1687|    |-						"z": pos.z,
|    |1687|+					"z": pos.z,
|1688|1688| 						"angle": cmpPosition.GetRotation().y,
|1689|1689| 						"ent": ent
|1690|1690| 				};
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1685|1685| 				minDistEntitySnapData = {
|1686|1686| 						"x": pos.x,
|1687|1687| 						"z": pos.z,
|1688|    |-						"angle": cmpPosition.GetRotation().y,
|    |1688|+					"angle": cmpPosition.GetRotation().y,
|1689|1689| 						"ent": ent
|1690|1690| 				};
|1691|1691| 			}
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 5 tabs but found 6.
|----|    | /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|    |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
|1686|1686| 						"x": pos.x,
|1687|1687| 						"z": pos.z,
|1688|1688| 						"angle": cmpPosition.GetRotation().y,
|1689|    |-						"ent": ent
|    |1689|+					"ent": ent
|1690|1690| 				};
|1691|1691| 			}
|1692|1692| 		}
Executing section cli...

Link to build: https://jenkins.wildfiregames.com/job/docker-differential/1961/display/redirect

Angen added a comment.EditedApr 3 2020, 9:02 AM

What I was thinking was something like sockets, but with the visibility switching. They would spawn with every wall tower placement and get tower foundation assigned immediately by code. But would need to keep track of assigned wall parts. If no wall connected, it would be destroyed.

This could be better:
Or every wall would keep track of assigned towers. If assigned tower to wall would be missing and it wall building mode, it would display socket as locale entity like building preview is done and then destroyed. If tower would be destroyed or foundation would be placed, walls would update missing tower status.

Only reason they are not locale entities and cpp changes are needed is that now it needs to get list of them, but that would not be needed.

binaries/data/mods/public/simulation/components/Foundation.js
48

But then one can place multiple tower foundations.

Stan marked an inline comment as done.Apr 3 2020, 2:29 PM

Feel free to commandeer @Angen

Angen added a comment.Apr 3 2020, 2:58 PM

(I was commenting with my thoughts how to do it, because I do not have this high at my priority list right now, so one can take over if feels)