Page MenuHomeWildfire Games

Fix GetPosition2D call when the entity may be out of the world in unitMotion
ClosedPublic

Authored by wraitii on Aug 5 2020, 9:52 AM.

Details

Summary

As reported by Freagarach following rP23806.

rP22526 introduced a "MoveObstructed" message, that could be sent when the entity ran into obstructions, to stop early.
In HandleObstructedMove, my intention, as written in the comment, was that the caller would do its thing (call StopMoving(), move out of the world etc.) and thus ComputeGoal would return early.

However, I mistakenly left the cmpPosition->GetPosition2D() in between that and ComputeGoal, which would then fail.

This fixes that by moving it after the ComputeGoal call.

Also add a sanity StopMoving() call to rP23806's move-out-of-world call.

Test Plan

Run the replay provided by Freagarach at rP23806.

Analyse the code logic and notice it is not functional.

Diff Detail

Repository
rP 0 A.D. Public Repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

wraitii created this revision.Aug 5 2020, 9:52 AM

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

Linter detected issues:
Executing section Source...
Executing section JS...
**** ESLintBear (no-else-return) [Section <empty> | Severity NORMAL] ****
!    ! Unnecessary 'else' after 'return'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[ 799] 				else
[ 800] 				{
[ 799] 				
[ 803] 				}
[ 802] 				
**** ESLintBear (key-spacing) [Section <empty> | Severity NORMAL] ****
!    ! Missing space before value for key 'GARRISON'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[1063] 		"GARRISON":{
[1063] 		"GARRISON": {
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[2070] 					if (this.order.data.attackType == "Capture" && (this.GetStance().targetAttackersAlways || !this.order.data.force)
[2071] 						&& this.order.data.target != msg.data.attacker && this.GetBestAttackAgainst(msg.data.attacker, true) != "Capture")
[2070] 					if (this.order.data.attackType == "Capture" && (this.GetStance().targetAttackersAlways || !this.order.data.force) &&
[2071] 						this.order.data.target != msg.data.attacker && this.GetBestAttackAgainst(msg.data.attacker, true) != "Capture")
**** ESLintBear (no-trailing-spaces) [Section <empty> | Severity NORMAL] ****
!    ! Trailing spaces not allowed.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[2229] 						if (msg.likelyFailure || 
[2229] 						if (msg.likelyFailure ||
**** ESLintBear (indent) [Section <empty> | Severity NORMAL] ****
!    ! Expected indentation of 6 tabs but found 5.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[2531] 					});
[2531] 						});
**** ESLintBear (semi) [Section <empty> | Severity NORMAL] ****
!    ! Missing semicolon.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3148] 					this.SetAnimationVariant(this.formationAnimationVariant)
[3148] 					this.SetAnimationVariant(this.formationAnimationVariant);
**** ESLintBear (indent) [Section <empty> | Severity NORMAL] ****
!    ! Expected indentation of 2 tabs but found 7.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3362] 							// only used for domestic animals
[3362] 		// only used for domestic animals
**** ESLintBear (no-unneeded-ternary) [Section <empty> | Severity NORMAL] ****
!    ! Unnecessary use of boolean literals in conditional expression.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3412] 	return (this.template.NaturalBehaviour ? true : false);
[3412] 	return (!!this.template.NaturalBehaviour);
**** ESLintBear (comma-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after ','.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3552] 				this.UnitFsm.SwitchToNextState(this, this.GetCurrentState().slice(0,index));
[3552] 				this.UnitFsm.SwitchToNextState(this, this.GetCurrentState().slice(0, index));
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3609] 			this.UnitFsm.ProcessMessage(this, {"type": "PickupCanceled", "data": msg});
[3609] 			this.UnitFsm.ProcessMessage(this, { "type": "PickupCanceled", "data": msg});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3609] 			this.UnitFsm.ProcessMessage(this, {"type": "PickupCanceled", "data": msg});
[3609] 			this.UnitFsm.ProcessMessage(this, {"type": "PickupCanceled", "data": msg });
**** ESLintBear (spaced-comment) [Section <empty> | Severity NORMAL] ****
!    ! Expected space or tab after '//' in comment.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3738] //// FSM linkage functions ////
[3738] // // FSM linkage functions ////
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3911] 			this.orderQueue.splice(i, 0, {"type": type, "data": data});
[3911] 			this.orderQueue.splice(i, 0, { "type": type, "data": data});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3911] 			this.orderQueue.splice(i, 0, {"type": type, "data": data});
[3911] 			this.orderQueue.splice(i, 0, {"type": type, "data": data });
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4152] 	this.UnitFsm.ProcessMessage(this, {"type": "Timer", "data": data, "lateness": lateness});
[4152] 	this.UnitFsm.ProcessMessage(this, { "type": "Timer", "data": data, "lateness": lateness});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4152] 	this.UnitFsm.ProcessMessage(this, {"type": "Timer", "data": data, "lateness": lateness});
[4152] 	this.UnitFsm.ProcessMessage(this, {"type": "Timer", "data": data, "lateness": lateness });
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4238] 	this.UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg});
[4238] 	this.UnitFsm.ProcessMessage(this, { "type": "Attacked", "data": msg});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4238] 	this.UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg});
[4238] 	this.UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg });
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4243] 	this.UnitFsm.ProcessMessage(this, {"type": "GuardedAttacked", "data": msg.data});
[4243] 	this.UnitFsm.ProcessMessage(this, { "type": "GuardedAttacked", "data": msg.data});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4243] 	this.UnitFsm.ProcessMessage(this, {"type": "GuardedAttacked", "data": msg.data});
[4243] 	this.UnitFsm.ProcessMessage(this, {"type": "GuardedAttacked", "data": msg.data });
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4248] 	this.UnitFsm.ProcessMessage(this, {"type": "HealthChanged", "from": msg.from, "to": msg.to});
[4248] 	this.UnitFsm.ProcessMessage(this, { "type": "HealthChanged", "from": msg.from, "to": msg.to});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4248] 	this.UnitFsm.ProcessMessage(this, {"type": "HealthChanged", "from": msg.from, "to": msg.to});
[4248] 	this.UnitFsm.ProcessMessage(this, {"type": "HealthChanged", "from": msg.from, "to": msg.to });
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4263] 	this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed});
[4263] 	this.UnitFsm.ProcessMessage(this, { "type": "PackFinished", "packed": msg.packed});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4263] 	this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed});
[4263] 	this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed });
**** ESLintBear (spaced-comment) [Section <empty> | Severity NORMAL] ****
!    ! Expected space or tab after '//' in comment.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4266] //// Helper functions to be called by the FSM ////
[4266] // // Helper functions to be called by the FSM ////
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4991] 		this.CanAttack(target)
[4992] 		&& this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true))
[4991] 		this.CanAttack(target) &&
[4992] 		this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true))
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4992] 		&& this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true))
[4993] 		&& (this.GetStance().respondChaseBeyondVision || this.CheckTargetIsInVisionRange(target))
[4992] 		&& this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true)) &&
[4993] 		(this.GetStance().respondChaseBeyondVision || this.CheckTargetIsInVisionRange(target))
**** ESLintBear (no-multi-spaces) [Section <empty> | Severity NORMAL] ****
!    ! Multiple spaces found before 'Engine'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5076] 		var cmpUnitAI =  Engine.QueryInterface(target, IID_UnitAI);
[5076] 		var cmpUnitAI = Engine.QueryInterface(target, IID_UnitAI);
**** ESLintBear (indent) [Section <empty> | Severity NORMAL] ****
!    ! Expected indentation of 3 tabs but found 4.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5080] 				return false;
[5080] 			return false;
**** ESLintBear (no-multi-spaces) [Section <empty> | Severity NORMAL] ****
!    ! Multiple spaces found before 'Engine'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5118] 		let cmpUnitAI =  Engine.QueryInterface(target, IID_UnitAI);
[5118] 		let cmpUnitAI = Engine.QueryInterface(target, IID_UnitAI);
**** ESLintBear (spaced-comment) [Section <empty> | Severity NORMAL] ****
!    ! Expected space or tab after '//' in comment.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5131] //// External interface functions ////
[5131] // // External interface functions ////
**** ESLintBear (no-else-return) [Section <empty> | Severity NORMAL] ****
!    ! Unnecessary 'else' after 'return'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5287] 		else
[5288] 			this.RemoveGuard();
[5287] 		this.RemoveGuard();
**** ESLintBear (semi) [Section <empty> | Severity NORMAL] ****
!    ! Missing semicolon.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5621] }
[5621] };
**** ESLintBear (no-trailing-spaces) [Section <empty> | Severity NORMAL] ****
!    ! Trailing spaces not allowed.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5642] 		if (cmpTrader.HasBothMarkets() && 
[5642] 		if (cmpTrader.HasBothMarkets() &&
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5949] 					if (targetClasses.attack && cmpIdentity
[5950] 						&& !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack))
[5949] 					if (targetClasses.attack && cmpIdentity &&
[5950] 						!MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack))
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5952] 					if (targetClasses.avoid && cmpIdentity
[5953] 						&& MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid))
[5952] 					if (targetClasses.avoid && cmpIdentity &&
[5953] 						MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid))
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5975] 			if (cmpIdentity && targetClasses.attack
[5976] 				&& !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack))
[5975] 			if (cmpIdentity && targetClasses.attack &&
[5976] 				!MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack))
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5978] 			if (cmpIdentity && targetClasses.avoid
[5979] 				&& MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid))
[5978] 			if (cmpIdentity && targetClasses.avoid &&
[5979] 				MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid))
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6131] 	this.heldPosition = {"x": x, "z": z};
[6131] 	this.heldPosition = { "x": x, "z": z};
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6131] 	this.heldPosition = {"x": x, "z": z};
[6131] 	this.heldPosition = {"x": x, "z": z };
**** ESLintBear (spaced-comment) [Section <empty> | Severity NORMAL] ****
!    ! Expected space or tab after '//' in comment.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6158] //// Helper functions ////
[6158] // // Helper functions ////
**** ESLintBear (semi) [Section <empty> | Severity NORMAL] ****
!    ! Missing semicolon.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6177] }
[6177] };
**** ESLintBear (spaced-comment) [Section <empty> | Severity NORMAL] ****
!    ! Expected space or tab after '//' in comment.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6353] //// Formation specific functions ////
[6353] // // Formation specific functions ////
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6358] 	return cmpAttack && cmpAttack.CanAttackAsFormation()
[6359] 		&& this.GetCurrentState() == "FORMATIONCONTROLLER.COMBAT.ATTACKING";
[6358] 	return cmpAttack && cmpAttack.CanAttackAsFormation() &&
[6359] 		this.GetCurrentState() == "FORMATIONCONTROLLER.COMBAT.ATTACKING";
**** ESLintBear (spaced-comment) [Section <empty> | Severity NORMAL] ****
!    ! Expected space or tab after '//' in comment.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6362] //// Animal specific functions ////
[6362] // // Animal specific functions ////
**** ESLintBear (semi) [Section <empty> | Severity NORMAL] ****
!    ! Missing semicolon.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6413] }
[6413] };

binaries/data/mods/public/simulation/components/UnitAI.js
[ 349] »   »   »   return·true;
**** ESLintBear (consistent-return) [Section: JS | Severity: NORMAL] ****
!    ! Method 'Order.WalkToTarget' expected no return value.

binaries/data/mods/public/simulation/components/UnitAI.js
[4054] »   var·isWorkType·=·type·=>·type·==·"Gather"·||·type·==·"Trade"·||·type·==·"Repair"·||·type·==·"ReturnResource";
**** ESLintBear (no-shadow) [Section: JS | Severity: NORMAL] ****
!    ! 'type' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/UnitAI.js
[4975] »   var·target·=·ents.find(target·=>·this.CanAttack(target));
**** ESLintBear (no-shadow) [Section: JS | Severity: NORMAL] ****
!    ! 'target' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/UnitAI.js
[4990] »   var·target·=·ents.find(target·=>
**** ESLintBear (no-shadow) [Section: JS | Severity: NORMAL] ****
!    ! 'target' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/UnitAI.js
[5056] »   let·ent·=·ents.find(ent·=>·this.CanHeal(ent));
**** ESLintBear (no-shadow) [Section: JS | Severity: NORMAL] ****
!    ! 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/UnitAI.js
[5079] »   »   ····cmpAttack.GetAttackTypes().some(type·=>·cmpUnitAI.CheckTargetAttackRange(this.isGuardOf,·type)))
**** ESLintBear (no-shadow) [Section: JS | Severity: NORMAL] ****
!    ! 'type' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/UnitAI.js
[2071] »   »   »   »   »   »   &&·this.order.data.target·!=·msg.data.attacker·&&·this.GetBestAttackAgainst(msg.data.attacker,·true)·!=·"Capture")
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[3148] »   »   »   »   »   this.SetAnimationVariant(this.formationAnimationVariant)
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Missing semicolon.

binaries/data/mods/public/simulation/components/UnitAI.js
[4001] »   »   var·order·=·{·"type":·type,·"data":·data·};
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! 'order' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
[4085] »   for·(var·i·=·0;·i·<·this.orderQueue.length;·++i)
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! 'i' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
[4992] »   »   &&·this.CheckTargetDistanceFromHeldPosition(target,·IID_Attack,·this.GetBestAttackAgainst(target,·true))
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[4993] »   »   &&·(this.GetStance().respondChaseBeyondVision·||·this.CheckTargetIsInVisionRange(target))
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[5621] }
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Missing semicolon.

binaries/data/mods/public/simulation/components/UnitAI.js
[5950] »   »   »   »   »   »   &&·!MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.attack))
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[5953] »   »   »   »   »   »   &&·MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.avoid))
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[5966] »   var·targets·=·this.GetTargetsFromUnit();
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! 'targets' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
[5967] »   for·(var·targ·of·targets)
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! 'targ' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
[5973] »   »   »   var·cmpIdentity·=·Engine.QueryInterface(targ,·IID_Identity);
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! 'cmpIdentity' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
[5974] »   »   »   var·targetClasses·=·this.order.data.targetClasses;
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! 'targetClasses' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
[5976] »   »   »   »   &&·!MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.attack))
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[5979] »   »   »   »   &&·MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.avoid))
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[6177] }
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Missing semicolon.

binaries/data/mods/public/simulation/components/UnitAI.js
[6359] »   »   &&·this.GetCurrentState()·==·"FORMATIONCONTROLLER.COMBAT.ATTACKING";
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[6413] }
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Missing semicolon.
Executing section cli...

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

wraitii requested review of this revision.Aug 5 2020, 10:11 AM
Silier added a subscriber: Silier.Aug 5 2020, 10:40 AM

just notes, looks sensible

Analyse the code logic and notice it is not functional.

Are you sure ? :-)

source/simulation2/components/CCmpUnitMotion.cpp
1047 ↗(On Diff #13062)

If we got here, we are sure we have since computegoal passed

Stan added a subscriber: Stan.Aug 5 2020, 10:43 AM
Stan added inline comments.
source/simulation2/components/CCmpUnitMotion.cpp
1033 ↗(On Diff #13062)

Can we move the whole block after ? Since it didn't prevent the warning at all ?

I meant the old code logic :p

source/simulation2/components/CCmpUnitMotion.cpp
1033 ↗(On Diff #13062)

Technically, we can end up here with no position I think (perhaps not in the current codebase but in the future). So this seems like a sane check to me.

I'll move some of this around when doing the motion manager patch anyways.

1047 ↗(On Diff #13062)

True.

wraitii updated this revision to Diff 13094.Aug 6 2020, 9:50 AM

Update comment. Ready for commit.

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

Linter detected issues:
Executing section Source...
Executing section JS...
**** ESLintBear (no-else-return) [Section <empty> | Severity NORMAL] ****
!    ! Unnecessary 'else' after 'return'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[ 799] 				else
[ 800] 				{
[ 799] 				
[ 803] 				}
[ 802] 				
**** ESLintBear (key-spacing) [Section <empty> | Severity NORMAL] ****
!    ! Missing space before value for key 'GARRISON'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[1063] 		"GARRISON":{
[1063] 		"GARRISON": {
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[2070] 					if (this.order.data.attackType == "Capture" && (this.GetStance().targetAttackersAlways || !this.order.data.force)
[2071] 						&& this.order.data.target != msg.data.attacker && this.GetBestAttackAgainst(msg.data.attacker, true) != "Capture")
[2070] 					if (this.order.data.attackType == "Capture" && (this.GetStance().targetAttackersAlways || !this.order.data.force) &&
[2071] 						this.order.data.target != msg.data.attacker && this.GetBestAttackAgainst(msg.data.attacker, true) != "Capture")
**** ESLintBear (no-trailing-spaces) [Section <empty> | Severity NORMAL] ****
!    ! Trailing spaces not allowed.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[2229] 						if (msg.likelyFailure || 
[2229] 						if (msg.likelyFailure ||
**** ESLintBear (indent) [Section <empty> | Severity NORMAL] ****
!    ! Expected indentation of 6 tabs but found 5.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[2531] 					});
[2531] 						});
**** ESLintBear (semi) [Section <empty> | Severity NORMAL] ****
!    ! Missing semicolon.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3148] 					this.SetAnimationVariant(this.formationAnimationVariant)
[3148] 					this.SetAnimationVariant(this.formationAnimationVariant);
**** ESLintBear (indent) [Section <empty> | Severity NORMAL] ****
!    ! Expected indentation of 2 tabs but found 7.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3362] 							// only used for domestic animals
[3362] 		// only used for domestic animals
**** ESLintBear (no-unneeded-ternary) [Section <empty> | Severity NORMAL] ****
!    ! Unnecessary use of boolean literals in conditional expression.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3412] 	return (this.template.NaturalBehaviour ? true : false);
[3412] 	return (!!this.template.NaturalBehaviour);
**** ESLintBear (comma-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after ','.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3552] 				this.UnitFsm.SwitchToNextState(this, this.GetCurrentState().slice(0,index));
[3552] 				this.UnitFsm.SwitchToNextState(this, this.GetCurrentState().slice(0, index));
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3609] 			this.UnitFsm.ProcessMessage(this, {"type": "PickupCanceled", "data": msg});
[3609] 			this.UnitFsm.ProcessMessage(this, { "type": "PickupCanceled", "data": msg});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3609] 			this.UnitFsm.ProcessMessage(this, {"type": "PickupCanceled", "data": msg});
[3609] 			this.UnitFsm.ProcessMessage(this, {"type": "PickupCanceled", "data": msg });
**** ESLintBear (spaced-comment) [Section <empty> | Severity NORMAL] ****
!    ! Expected space or tab after '//' in comment.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3738] //// FSM linkage functions ////
[3738] // // FSM linkage functions ////
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3911] 			this.orderQueue.splice(i, 0, {"type": type, "data": data});
[3911] 			this.orderQueue.splice(i, 0, { "type": type, "data": data});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[3911] 			this.orderQueue.splice(i, 0, {"type": type, "data": data});
[3911] 			this.orderQueue.splice(i, 0, {"type": type, "data": data });
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4152] 	this.UnitFsm.ProcessMessage(this, {"type": "Timer", "data": data, "lateness": lateness});
[4152] 	this.UnitFsm.ProcessMessage(this, { "type": "Timer", "data": data, "lateness": lateness});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4152] 	this.UnitFsm.ProcessMessage(this, {"type": "Timer", "data": data, "lateness": lateness});
[4152] 	this.UnitFsm.ProcessMessage(this, {"type": "Timer", "data": data, "lateness": lateness });
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4238] 	this.UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg});
[4238] 	this.UnitFsm.ProcessMessage(this, { "type": "Attacked", "data": msg});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4238] 	this.UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg});
[4238] 	this.UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg });
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4243] 	this.UnitFsm.ProcessMessage(this, {"type": "GuardedAttacked", "data": msg.data});
[4243] 	this.UnitFsm.ProcessMessage(this, { "type": "GuardedAttacked", "data": msg.data});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4243] 	this.UnitFsm.ProcessMessage(this, {"type": "GuardedAttacked", "data": msg.data});
[4243] 	this.UnitFsm.ProcessMessage(this, {"type": "GuardedAttacked", "data": msg.data });
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4248] 	this.UnitFsm.ProcessMessage(this, {"type": "HealthChanged", "from": msg.from, "to": msg.to});
[4248] 	this.UnitFsm.ProcessMessage(this, { "type": "HealthChanged", "from": msg.from, "to": msg.to});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4248] 	this.UnitFsm.ProcessMessage(this, {"type": "HealthChanged", "from": msg.from, "to": msg.to});
[4248] 	this.UnitFsm.ProcessMessage(this, {"type": "HealthChanged", "from": msg.from, "to": msg.to });
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4263] 	this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed});
[4263] 	this.UnitFsm.ProcessMessage(this, { "type": "PackFinished", "packed": msg.packed});
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4263] 	this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed});
[4263] 	this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed });
**** ESLintBear (spaced-comment) [Section <empty> | Severity NORMAL] ****
!    ! Expected space or tab after '//' in comment.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4266] //// Helper functions to be called by the FSM ////
[4266] // // Helper functions to be called by the FSM ////
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4991] 		this.CanAttack(target)
[4992] 		&& this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true))
[4991] 		this.CanAttack(target) &&
[4992] 		this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true))
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[4992] 		&& this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true))
[4993] 		&& (this.GetStance().respondChaseBeyondVision || this.CheckTargetIsInVisionRange(target))
[4992] 		&& this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true)) &&
[4993] 		(this.GetStance().respondChaseBeyondVision || this.CheckTargetIsInVisionRange(target))
**** ESLintBear (no-multi-spaces) [Section <empty> | Severity NORMAL] ****
!    ! Multiple spaces found before 'Engine'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5076] 		var cmpUnitAI =  Engine.QueryInterface(target, IID_UnitAI);
[5076] 		var cmpUnitAI = Engine.QueryInterface(target, IID_UnitAI);
**** ESLintBear (indent) [Section <empty> | Severity NORMAL] ****
!    ! Expected indentation of 3 tabs but found 4.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5080] 				return false;
[5080] 			return false;
**** ESLintBear (no-multi-spaces) [Section <empty> | Severity NORMAL] ****
!    ! Multiple spaces found before 'Engine'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5118] 		let cmpUnitAI =  Engine.QueryInterface(target, IID_UnitAI);
[5118] 		let cmpUnitAI = Engine.QueryInterface(target, IID_UnitAI);
**** ESLintBear (spaced-comment) [Section <empty> | Severity NORMAL] ****
!    ! Expected space or tab after '//' in comment.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5131] //// External interface functions ////
[5131] // // External interface functions ////
**** ESLintBear (no-else-return) [Section <empty> | Severity NORMAL] ****
!    ! Unnecessary 'else' after 'return'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5287] 		else
[5288] 			this.RemoveGuard();
[5287] 		this.RemoveGuard();
**** ESLintBear (semi) [Section <empty> | Severity NORMAL] ****
!    ! Missing semicolon.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5621] }
[5621] };
**** ESLintBear (no-trailing-spaces) [Section <empty> | Severity NORMAL] ****
!    ! Trailing spaces not allowed.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5642] 		if (cmpTrader.HasBothMarkets() && 
[5642] 		if (cmpTrader.HasBothMarkets() &&
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5949] 					if (targetClasses.attack && cmpIdentity
[5950] 						&& !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack))
[5949] 					if (targetClasses.attack && cmpIdentity &&
[5950] 						!MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack))
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5952] 					if (targetClasses.avoid && cmpIdentity
[5953] 						&& MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid))
[5952] 					if (targetClasses.avoid && cmpIdentity &&
[5953] 						MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid))
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5975] 			if (cmpIdentity && targetClasses.attack
[5976] 				&& !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack))
[5975] 			if (cmpIdentity && targetClasses.attack &&
[5976] 				!MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack))
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[5978] 			if (cmpIdentity && targetClasses.avoid
[5979] 				&& MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid))
[5978] 			if (cmpIdentity && targetClasses.avoid &&
[5979] 				MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid))
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required after '{'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6131] 	this.heldPosition = {"x": x, "z": z};
[6131] 	this.heldPosition = { "x": x, "z": z};
**** ESLintBear (object-curly-spacing) [Section <empty> | Severity NORMAL] ****
!    ! A space is required before '}'.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6131] 	this.heldPosition = {"x": x, "z": z};
[6131] 	this.heldPosition = {"x": x, "z": z };
**** ESLintBear (spaced-comment) [Section <empty> | Severity NORMAL] ****
!    ! Expected space or tab after '//' in comment.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6158] //// Helper functions ////
[6158] // // Helper functions ////
**** ESLintBear (semi) [Section <empty> | Severity NORMAL] ****
!    ! Missing semicolon.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6177] }
[6177] };
**** ESLintBear (spaced-comment) [Section <empty> | Severity NORMAL] ****
!    ! Expected space or tab after '//' in comment.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6353] //// Formation specific functions ////
[6353] // // Formation specific functions ////
**** ESLintBear (operator-linebreak) [Section <empty> | Severity NORMAL] ****
!    ! '&&' should be placed at the end of the line.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6358] 	return cmpAttack && cmpAttack.CanAttackAsFormation()
[6359] 		&& this.GetCurrentState() == "FORMATIONCONTROLLER.COMBAT.ATTACKING";
[6358] 	return cmpAttack && cmpAttack.CanAttackAsFormation() &&
[6359] 		this.GetCurrentState() == "FORMATIONCONTROLLER.COMBAT.ATTACKING";
**** ESLintBear (spaced-comment) [Section <empty> | Severity NORMAL] ****
!    ! Expected space or tab after '//' in comment.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6362] //// Animal specific functions ////
[6362] // // Animal specific functions ////
**** ESLintBear (semi) [Section <empty> | Severity NORMAL] ****
!    ! Missing semicolon.
[----] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[++++] /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
[6413] }
[6413] };

binaries/data/mods/public/simulation/components/UnitAI.js
[ 349] »   »   »   return·true;
**** ESLintBear (consistent-return) [Section: JS | Severity: NORMAL] ****
!    ! Method 'Order.WalkToTarget' expected no return value.

binaries/data/mods/public/simulation/components/UnitAI.js
[4054] »   var·isWorkType·=·type·=>·type·==·"Gather"·||·type·==·"Trade"·||·type·==·"Repair"·||·type·==·"ReturnResource";
**** ESLintBear (no-shadow) [Section: JS | Severity: NORMAL] ****
!    ! 'type' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/UnitAI.js
[4975] »   var·target·=·ents.find(target·=>·this.CanAttack(target));
**** ESLintBear (no-shadow) [Section: JS | Severity: NORMAL] ****
!    ! 'target' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/UnitAI.js
[4990] »   var·target·=·ents.find(target·=>
**** ESLintBear (no-shadow) [Section: JS | Severity: NORMAL] ****
!    ! 'target' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/UnitAI.js
[5056] »   let·ent·=·ents.find(ent·=>·this.CanHeal(ent));
**** ESLintBear (no-shadow) [Section: JS | Severity: NORMAL] ****
!    ! 'ent' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/UnitAI.js
[5079] »   »   ····cmpAttack.GetAttackTypes().some(type·=>·cmpUnitAI.CheckTargetAttackRange(this.isGuardOf,·type)))
**** ESLintBear (no-shadow) [Section: JS | Severity: NORMAL] ****
!    ! 'type' is already declared in the upper scope.

binaries/data/mods/public/simulation/components/UnitAI.js
[2071] »   »   »   »   »   »   &&·this.order.data.target·!=·msg.data.attacker·&&·this.GetBestAttackAgainst(msg.data.attacker,·true)·!=·"Capture")
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[3148] »   »   »   »   »   this.SetAnimationVariant(this.formationAnimationVariant)
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Missing semicolon.

binaries/data/mods/public/simulation/components/UnitAI.js
[4001] »   »   var·order·=·{·"type":·type,·"data":·data·};
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! 'order' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
[4085] »   for·(var·i·=·0;·i·<·this.orderQueue.length;·++i)
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! 'i' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
[4992] »   »   &&·this.CheckTargetDistanceFromHeldPosition(target,·IID_Attack,·this.GetBestAttackAgainst(target,·true))
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[4993] »   »   &&·(this.GetStance().respondChaseBeyondVision·||·this.CheckTargetIsInVisionRange(target))
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[5621] }
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Missing semicolon.

binaries/data/mods/public/simulation/components/UnitAI.js
[5950] »   »   »   »   »   »   &&·!MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.attack))
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[5953] »   »   »   »   »   »   &&·MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.avoid))
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[5966] »   var·targets·=·this.GetTargetsFromUnit();
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! 'targets' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
[5967] »   for·(var·targ·of·targets)
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! 'targ' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
[5973] »   »   »   var·cmpIdentity·=·Engine.QueryInterface(targ,·IID_Identity);
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! 'cmpIdentity' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
[5974] »   »   »   var·targetClasses·=·this.order.data.targetClasses;
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! 'targetClasses' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
[5976] »   »   »   »   &&·!MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.attack))
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[5979] »   »   »   »   &&·MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.avoid))
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[6177] }
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Missing semicolon.

binaries/data/mods/public/simulation/components/UnitAI.js
[6359] »   »   &&·this.GetCurrentState()·==·"FORMATIONCONTROLLER.COMBAT.ATTACKING";
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
[6413] }
**** JSHintBear [Section: JS | Severity: NORMAL] ****
!    ! Missing semicolon.
Executing section cli...

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

This revision was not accepted when it landed; it landed in state Needs Review.Aug 6 2020, 10:40 AM
This revision was automatically updated to reflect the committed changes.