Details
- Reviewers
Silier - Group Reviewers
Restricted Owners Package (Owns No Changed Paths) - Commits
- rP23267: Fix promoted entities not retaining order queue after rP22753.
Verify that a promoted entity executes its previous orders.
Diff Detail
- Repository
- rP 0 A.D. Public Repository
- Branch
- /ps/trunk
- Lint
Lint OK - Unit
No Unit Test Coverage - Build Status
Buildable 9911 Build 16711: Vulcan Build Jenkins Build 16710: Vulcan Build (Windows) Jenkins Build 16709: arc lint + arc unit
Event Timeline
Successful build - Chance fights ever on the side of the prudent.
Link to build: https://jenkins.wildfiregames.com/job/vs2015-differential/413/display/redirect
Successful build - Chance fights ever on the side of the prudent.
Linter detected issues: Executing section Source... Executing section JS... | | [NORMAL] ESLintBear (no-else-return): | | Unnecessary 'else' after 'return'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js | 762| 762| this.FinishOrder(); | 763| 763| return; | 764| 764| } | 765| |- else | 766| |- { | | 765|+ | 767| 766| this.SetNextState("GARRISON.APPROACHING"); | 768| 767| return; | 769| |- } | | 768|+ | 770| 769| } | 771| 770| | 772| 771| this.SetNextState("GARRISON.GARRISONING"); | | [NORMAL] ESLintBear (key-spacing): | | 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 |1030|1030| }, |1031|1031| }, |1032|1032| |1033| |- "GARRISON":{ | |1033|+ "GARRISON": { |1034|1034| "enter": function() { |1035|1035| // If the garrisonholder should pickup, warn it so it can take needed action |1036|1036| var cmpGarrisonHolder = Engine.QueryInterface(this.order.data.target, IID_GarrisonHolder); | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |1979|1979| |1980|1980| "Attacked": function(msg) { |1981|1981| // If we are capturing and are attacked by something that we would not capture, attack that entity instead |1982| |- if (this.order.data.attackType == "Capture" && (this.GetStance().targetAttackersAlways || !this.order.data.force) |1983| |- && this.order.data.target != msg.data.attacker && this.GetBestAttackAgainst(msg.data.attacker, true) != "Capture") | |1982|+ if (this.order.data.attackType == "Capture" && (this.GetStance().targetAttackersAlways || !this.order.data.force) && | |1983|+ this.order.data.target != msg.data.attacker && this.GetBestAttackAgainst(msg.data.attacker, true) != "Capture") |1984|1984| this.RespondToTargetedEntities([msg.data.attacker]); |1985|1985| }, |1986|1986| }, | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |2707|2707| { |2708|2708| // The building was already finished/fully repaired before we arrived; |2709|2709| // let the ConstructionFinished handler handle this. |2710| |- this.OnGlobalConstructionFinished({"entity": this.repairTarget, "newentity": this.repairTarget}); | |2710|+ this.OnGlobalConstructionFinished({ "entity": this.repairTarget, "newentity": this.repairTarget}); |2711|2711| return true; |2712|2712| } |2713|2713| | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |2707|2707| { |2708|2708| // The building was already finished/fully repaired before we arrived; |2709|2709| // let the ConstructionFinished handler handle this. |2710| |- this.OnGlobalConstructionFinished({"entity": this.repairTarget, "newentity": this.repairTarget}); | |2710|+ this.OnGlobalConstructionFinished({"entity": this.repairTarget, "newentity": this.repairTarget }); |2711|2711| return true; |2712|2712| } |2713|2713| | | [NORMAL] ESLintBear (indent): | | 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 |3220|3220| "COMBAT": "INDIVIDUAL.COMBAT", // reuse the same combat behaviour for animals |3221|3221| |3222|3222| "WALKING": "INDIVIDUAL.WALKING", // reuse the same walking behaviour for animals |3223| |- // only used for domestic animals | |3223|+ // only used for domestic animals |3224|3224| }, |3225|3225| }; |3226|3226| | | [NORMAL] ESLintBear (no-unneeded-ternary): | | 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 |3277|3277| |3278|3278| UnitAI.prototype.IsAnimal = function() |3279|3279| { |3280| |- return (this.template.NaturalBehaviour ? true : false); | |3280|+ return (!!this.template.NaturalBehaviour); |3281|3281| }; |3282|3282| |3283|3283| UnitAI.prototype.IsDangerousAnimal = function() | | [NORMAL] ESLintBear (comma-spacing): | | 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 |3393|3393| { |3394|3394| let index = this.GetCurrentState().indexOf("."); |3395|3395| if (index != -1) |3396| |- this.UnitFsm.SwitchToNextState(this, this.GetCurrentState().slice(0,index)); | |3396|+ this.UnitFsm.SwitchToNextState(this, this.GetCurrentState().slice(0, index)); |3397|3397| this.Stop(false); |3398|3398| } |3399|3399| | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3449|3449| if (this.orderQueue[i].type != "PickupUnit" || this.orderQueue[i].data.target != msg.entity) |3450|3450| continue; |3451|3451| if (i == 0) |3452| |- this.UnitFsm.ProcessMessage(this, {"type": "PickupCanceled", "data": msg}); | |3452|+ this.UnitFsm.ProcessMessage(this, { "type": "PickupCanceled", "data": msg}); |3453|3453| else |3454|3454| this.orderQueue.splice(i, 1); |3455|3455| Engine.PostMessage(this.entity, MT_UnitAIOrderDataChanged, { "to": this.GetOrderData() }); | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3449|3449| if (this.orderQueue[i].type != "PickupUnit" || this.orderQueue[i].data.target != msg.entity) |3450|3450| continue; |3451|3451| if (i == 0) |3452| |- this.UnitFsm.ProcessMessage(this, {"type": "PickupCanceled", "data": msg}); | |3452|+ this.UnitFsm.ProcessMessage(this, {"type": "PickupCanceled", "data": msg }); |3453|3453| else |3454|3454| this.orderQueue.splice(i, 1); |3455|3455| Engine.PostMessage(this.entity, MT_UnitAIOrderDataChanged, { "to": this.GetOrderData() }); | | [NORMAL] ESLintBear (spaced-comment): | | 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 |3533|3533| }; |3534|3534| |3535|3535| |3536| |-//// FSM linkage functions //// | |3536|+// // FSM linkage functions //// |3537|3537| |3538|3538| // Setting the next state to the current state will leave/re-enter the top-most substate. |3539|3539| UnitAI.prototype.SetNextState = function(state) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3703|3703| continue; |3704|3704| if (this.orderQueue[i].type == type) |3705|3705| continue; |3706| |- this.orderQueue.splice(i, 0, {"type": type, "data": data}); | |3706|+ this.orderQueue.splice(i, 0, { "type": type, "data": data}); |3707|3707| Engine.PostMessage(this.entity, MT_UnitAIOrderDataChanged, { "to": this.GetOrderData() }); |3708|3708| return; |3709|3709| } | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3703|3703| continue; |3704|3704| if (this.orderQueue[i].type == type) |3705|3705| continue; |3706| |- this.orderQueue.splice(i, 0, {"type": type, "data": data}); | |3706|+ this.orderQueue.splice(i, 0, {"type": type, "data": data }); |3707|3707| Engine.PostMessage(this.entity, MT_UnitAIOrderDataChanged, { "to": this.GetOrderData() }); |3708|3708| return; |3709|3709| } | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3874|3874| if (data.timerRepeat === undefined) |3875|3875| this.timer = undefined; |3876|3876| |3877| |- this.UnitFsm.ProcessMessage(this, {"type": "Timer", "data": data, "lateness": lateness}); | |3877|+ this.UnitFsm.ProcessMessage(this, { "type": "Timer", "data": data, "lateness": lateness}); |3878|3878| }; |3879|3879| |3880|3880| /** | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3874|3874| if (data.timerRepeat === undefined) |3875|3875| this.timer = undefined; |3876|3876| |3877| |- this.UnitFsm.ProcessMessage(this, {"type": "Timer", "data": data, "lateness": lateness}); | |3877|+ this.UnitFsm.ProcessMessage(this, {"type": "Timer", "data": data, "lateness": lateness }); |3878|3878| }; |3879|3879| |3880|3880| /** | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3919|3919| // TODO: This is a bit inefficient since every unit listens to every |3920|3920| // construction message - ideally we could scope it to only the one we're building |3921|3921| |3922| |- this.UnitFsm.ProcessMessage(this, {"type": "ConstructionFinished", "data": msg}); | |3922|+ this.UnitFsm.ProcessMessage(this, { "type": "ConstructionFinished", "data": msg}); |3923|3923| }; |3924|3924| |3925|3925| UnitAI.prototype.OnGlobalEntityRenamed = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3919|3919| // TODO: This is a bit inefficient since every unit listens to every |3920|3920| // construction message - ideally we could scope it to only the one we're building |3921|3921| |3922| |- this.UnitFsm.ProcessMessage(this, {"type": "ConstructionFinished", "data": msg}); | |3922|+ this.UnitFsm.ProcessMessage(this, {"type": "ConstructionFinished", "data": msg }); |3923|3923| }; |3924|3924| |3925|3925| UnitAI.prototype.OnGlobalEntityRenamed = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3944|3944| |3945|3945| UnitAI.prototype.OnAttacked = function(msg) |3946|3946| { |3947| |- this.UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg}); | |3947|+ this.UnitFsm.ProcessMessage(this, { "type": "Attacked", "data": msg}); |3948|3948| }; |3949|3949| |3950|3950| UnitAI.prototype.OnGuardedAttacked = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3944|3944| |3945|3945| UnitAI.prototype.OnAttacked = function(msg) |3946|3946| { |3947| |- this.UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg}); | |3947|+ this.UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg }); |3948|3948| }; |3949|3949| |3950|3950| UnitAI.prototype.OnGuardedAttacked = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3949|3949| |3950|3950| UnitAI.prototype.OnGuardedAttacked = function(msg) |3951|3951| { |3952| |- this.UnitFsm.ProcessMessage(this, {"type": "GuardedAttacked", "data": msg.data}); | |3952|+ this.UnitFsm.ProcessMessage(this, { "type": "GuardedAttacked", "data": msg.data}); |3953|3953| }; |3954|3954| |3955|3955| UnitAI.prototype.OnHealthChanged = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3949|3949| |3950|3950| UnitAI.prototype.OnGuardedAttacked = function(msg) |3951|3951| { |3952| |- this.UnitFsm.ProcessMessage(this, {"type": "GuardedAttacked", "data": msg.data}); | |3952|+ this.UnitFsm.ProcessMessage(this, {"type": "GuardedAttacked", "data": msg.data }); |3953|3953| }; |3954|3954| |3955|3955| UnitAI.prototype.OnHealthChanged = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3954|3954| |3955|3955| UnitAI.prototype.OnHealthChanged = function(msg) |3956|3956| { |3957| |- this.UnitFsm.ProcessMessage(this, {"type": "HealthChanged", "from": msg.from, "to": msg.to}); | |3957|+ this.UnitFsm.ProcessMessage(this, { "type": "HealthChanged", "from": msg.from, "to": msg.to}); |3958|3958| }; |3959|3959| |3960|3960| UnitAI.prototype.OnRangeUpdate = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3954|3954| |3955|3955| UnitAI.prototype.OnHealthChanged = function(msg) |3956|3956| { |3957| |- this.UnitFsm.ProcessMessage(this, {"type": "HealthChanged", "from": msg.from, "to": msg.to}); | |3957|+ this.UnitFsm.ProcessMessage(this, {"type": "HealthChanged", "from": msg.from, "to": msg.to }); |3958|3958| }; |3959|3959| |3960|3960| UnitAI.prototype.OnRangeUpdate = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3960|3960| UnitAI.prototype.OnRangeUpdate = function(msg) |3961|3961| { |3962|3962| if (msg.tag == this.losRangeQuery) |3963| |- this.UnitFsm.ProcessMessage(this, {"type": "LosRangeUpdate", "data": msg}); | |3963|+ this.UnitFsm.ProcessMessage(this, { "type": "LosRangeUpdate", "data": msg}); |3964|3964| else if (msg.tag == this.losHealRangeQuery) |3965|3965| this.UnitFsm.ProcessMessage(this, {"type": "LosHealRangeUpdate", "data": msg}); |3966|3966| }; | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3960|3960| UnitAI.prototype.OnRangeUpdate = function(msg) |3961|3961| { |3962|3962| if (msg.tag == this.losRangeQuery) |3963| |- this.UnitFsm.ProcessMessage(this, {"type": "LosRangeUpdate", "data": msg}); | |3963|+ this.UnitFsm.ProcessMessage(this, {"type": "LosRangeUpdate", "data": msg }); |3964|3964| else if (msg.tag == this.losHealRangeQuery) |3965|3965| this.UnitFsm.ProcessMessage(this, {"type": "LosHealRangeUpdate", "data": msg}); |3966|3966| }; | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3962|3962| if (msg.tag == this.losRangeQuery) |3963|3963| this.UnitFsm.ProcessMessage(this, {"type": "LosRangeUpdate", "data": msg}); |3964|3964| else if (msg.tag == this.losHealRangeQuery) |3965| |- this.UnitFsm.ProcessMessage(this, {"type": "LosHealRangeUpdate", "data": msg}); | |3965|+ this.UnitFsm.ProcessMessage(this, { "type": "LosHealRangeUpdate", "data": msg}); |3966|3966| }; |3967|3967| |3968|3968| UnitAI.prototype.OnPackFinished = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3962|3962| if (msg.tag == this.losRangeQuery) |3963|3963| this.UnitFsm.ProcessMessage(this, {"type": "LosRangeUpdate", "data": msg}); |3964|3964| else if (msg.tag == this.losHealRangeQuery) |3965| |- this.UnitFsm.ProcessMessage(this, {"type": "LosHealRangeUpdate", "data": msg}); | |3965|+ this.UnitFsm.ProcessMessage(this, {"type": "LosHealRangeUpdate", "data": msg }); |3966|3966| }; |3967|3967| |3968|3968| UnitAI.prototype.OnPackFinished = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3967|3967| |3968|3968| UnitAI.prototype.OnPackFinished = function(msg) |3969|3969| { |3970| |- this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed}); | |3970|+ this.UnitFsm.ProcessMessage(this, { "type": "PackFinished", "packed": msg.packed}); |3971|3971| }; |3972|3972| |3973|3973| //// Helper functions to be called by the FSM //// | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3967|3967| |3968|3968| UnitAI.prototype.OnPackFinished = function(msg) |3969|3969| { |3970| |- this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed}); | |3970|+ this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed }); |3971|3971| }; |3972|3972| |3973|3973| //// Helper functions to be called by the FSM //// | | [NORMAL] ESLintBear (spaced-comment): | | 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 |3970|3970| this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed}); |3971|3971| }; |3972|3972| |3973| |-//// Helper functions to be called by the FSM //// | |3973|+// // Helper functions to be called by the FSM //// |3974|3974| |3975|3975| UnitAI.prototype.GetWalkSpeed = function() |3976|3976| { | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |4639|4639| UnitAI.prototype.AttackEntityInZone = function(ents) |4640|4640| { |4641|4641| var target = ents.find(target => |4642| |- this.CanAttack(target) |4643| |- && this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true)) | |4642|+ this.CanAttack(target) && | |4643|+ this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true)) |4644|4644| && (this.GetStance().respondChaseBeyondVision || this.CheckTargetIsInVisionRange(target)) |4645|4645| ); |4646|4646| if (!target) | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |4640|4640| { |4641|4641| var target = ents.find(target => |4642|4642| this.CanAttack(target) |4643| |- && this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true)) |4644| |- && (this.GetStance().respondChaseBeyondVision || this.CheckTargetIsInVisionRange(target)) | |4643|+ && this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true)) && | |4644|+ (this.GetStance().respondChaseBeyondVision || this.CheckTargetIsInVisionRange(target)) |4645|4645| ); |4646|4646| if (!target) |4647|4647| return false; | | [NORMAL] ESLintBear (no-multi-spaces): | | 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 |4704|4704| // If we are guarding/escorting, don't abandon as long as the guarded unit is in target range of the attacker |4705|4705| if (this.isGuardOf) |4706|4706| { |4707| |- var cmpUnitAI = Engine.QueryInterface(target, IID_UnitAI); | |4707|+ var cmpUnitAI = Engine.QueryInterface(target, IID_UnitAI); |4708|4708| var cmpAttack = Engine.QueryInterface(target, IID_Attack); |4709|4709| if (cmpUnitAI && cmpAttack && |4710|4710| cmpAttack.GetAttackTypes().some(type => cmpUnitAI.CheckTargetAttackRange(this.isGuardOf, type))) | | [NORMAL] ESLintBear (indent): | | 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 |4708|4708| var cmpAttack = Engine.QueryInterface(target, IID_Attack); |4709|4709| if (cmpUnitAI && cmpAttack && |4710|4710| cmpAttack.GetAttackTypes().some(type => cmpUnitAI.CheckTargetAttackRange(this.isGuardOf, type))) |4711| |- return false; | |4711|+ return false; |4712|4712| } |4713|4713| |4714|4714| // Stop if we're in hold-ground mode and it's too far from the holding point | | [NORMAL] ESLintBear (no-multi-spaces): | | 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 |4746|4746| // If we are guarding/escorting, chase at least as long as the guarded unit is in target range of the attacker |4747|4747| if (this.isGuardOf) |4748|4748| { |4749| |- let cmpUnitAI = Engine.QueryInterface(target, IID_UnitAI); | |4749|+ let cmpUnitAI = Engine.QueryInterface(target, IID_UnitAI); |4750|4750| let cmpAttack = Engine.QueryInterface(target, IID_Attack); |4751|4751| if (cmpUnitAI && cmpAttack && |4752|4752| cmpAttack.GetAttackTypes().some(type => cmpUnitAI.CheckTargetAttackRange(this.isGuardOf, type))) | | [NORMAL] ESLintBear (spaced-comment): | | 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 |4759|4759| return false; |4760|4760| }; |4761|4761| |4762| |-//// External interface functions //// | |4762|+// // External interface functions //// |4763|4763| |4764|4764| UnitAI.prototype.SetFormationController = function(ent) |4765|4765| { | | [NORMAL] ESLintBear (no-else-return): | | Unnecessary 'else' after 'return'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js |4915|4915| { |4916|4916| if (this.isGuardOf == target && this.order && this.order.type == "Guard") |4917|4917| return; |4918| |- else |4919| |- this.RemoveGuard(); | |4918|+ this.RemoveGuard(); |4920|4919| } |4921|4920| |4922|4921| this.AddOrder("Guard", { "target": target, "force": false }, queued); | | [NORMAL] ESLintBear (no-trailing-spaces): | | Trailing spaces not allowed. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js |5247|5247| this.workOrders.length && this.workOrders[0].type == "Trade") |5248|5248| { |5249|5249| let cmpTrader = Engine.QueryInterface(this.entity, IID_Trader); |5250| |- if (cmpTrader.HasBothMarkets() && | |5250|+ if (cmpTrader.HasBothMarkets() && |5251|5251| (cmpTrader.GetFirstMarket() == target && cmpTrader.GetSecondMarket() == source || |5252|5252| cmpTrader.GetFirstMarket() == source && cmpTrader.GetSecondMarket() == target)) |5253|5253| { | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |5528|5528| { |5529|5529| var cmpIdentity = Engine.QueryInterface(targ, IID_Identity); |5530|5530| var targetClasses = this.order.data.targetClasses; |5531| |- if (targetClasses.attack && cmpIdentity |5532| |- && !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack)) | |5531|+ if (targetClasses.attack && cmpIdentity && | |5532|+ !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack)) |5533|5533| continue; |5534|5534| if (targetClasses.avoid && cmpIdentity |5535|5535| && MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid)) | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |5531|5531| if (targetClasses.attack && cmpIdentity |5532|5532| && !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack)) |5533|5533| continue; |5534| |- if (targetClasses.avoid && cmpIdentity |5535| |- && MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid)) | |5534|+ if (targetClasses.avoid && cmpIdentity && | |5535|+ MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid)) |5536|5536| continue; |5537|5537| // Only used by the AIs to prevent some choices of targets |5538|5538| if (targetClasses.vetoEntities && targetClasses.vetoEntities[targ]) | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |5554|5554| { |5555|5555| var cmpIdentity = Engine.QueryInterface(targ, IID_Identity); |5556|5556| var targetClasses = this.order.data.targetClasses; |5557| |- if (cmpIdentity && targetClasses.attack |5558| |- && !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack)) | |5557|+ if (cmpIdentity && targetClasses.attack && | |5558|+ !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack)) |5559|5559| continue; |5560|5560| if (cmpIdentity && targetClasses.avoid |5561|5561| && MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid)) | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |5557|5557| if (cmpIdentity && targetClasses.attack |5558|5558| && !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack)) |5559|5559| continue; |5560| |- if (cmpIdentity && targetClasses.avoid |5561| |- && MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid)) | |5560|+ if (cmpIdentity && targetClasses.avoid && | |5561|+ MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid)) |5562|5562| continue; |5563|5563| // Only used by the AIs to prevent some choices of targets |5564|5564| if (targetClasses.vetoEntities && targetClasses.vetoEntities[targ]) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |5714|5714| |5715|5715| UnitAI.prototype.SetHeldPosition = function(x, z) |5716|5716| { |5717| |- this.heldPosition = {"x": x, "z": z}; | |5717|+ this.heldPosition = { "x": x, "z": z}; |5718|5718| }; |5719|5719| |5720|5720| UnitAI.prototype.SetHeldPositionOnEntity = function(entity) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |5714|5714| |5715|5715| UnitAI.prototype.SetHeldPosition = function(x, z) |5716|5716| { |5717| |- this.heldPosition = {"x": x, "z": z}; | |5717|+ this.heldPosition = {"x": x, "z": z }; |5718|5718| }; |5719|5719| |5720|5720| UnitAI.prototype.SetHeldPositionOnEntity = function(entity) | | [NORMAL] ESLintBear (spaced-comment): | | 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 |5741|5741| return false; |5742|5742| }; |5743|5743| |5744| |-//// Helper functions //// | |5744|+// // Helper functions //// |5745|5745| |5746|5746| UnitAI.prototype.CanAttack = function(target) |5747|5747| { | | [NORMAL] ESLintBear (spaced-comment): | | 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 |5945|5945| return cmpPack && cmpPack.IsPacking(); |5946|5946| }; |5947|5947| |5948| |-//// Formation specific functions //// | |5948|+// // Formation specific functions //// |5949|5949| |5950|5950| UnitAI.prototype.IsAttackingAsFormation = function() |5951|5951| { | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |5950|5950| UnitAI.prototype.IsAttackingAsFormation = function() |5951|5951| { |5952|5952| var cmpAttack = Engine.QueryInterface(this.entity, IID_Attack); |5953| |- return cmpAttack && cmpAttack.CanAttackAsFormation() |5954| |- && this.GetCurrentState() == "FORMATIONCONTROLLER.COMBAT.ATTACKING"; | |5953|+ return cmpAttack && cmpAttack.CanAttackAsFormation() && | |5954|+ this.GetCurrentState() == "FORMATIONCONTROLLER.COMBAT.ATTACKING"; |5955|5955| }; |5956|5956| |5957|5957| //// Animal specific functions //// | | [NORMAL] ESLintBear (spaced-comment): | | 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 |5954|5954| && this.GetCurrentState() == "FORMATIONCONTROLLER.COMBAT.ATTACKING"; |5955|5955| }; |5956|5956| |5957| |-//// Animal specific functions //// | |5957|+// // Animal specific functions //// |5958|5958| |5959|5959| UnitAI.prototype.MoveRandomly = function(distance) |5960|5960| { binaries/data/mods/public/simulation/components/UnitAI.js | 331| » » » return·true; | | [NORMAL] ESLintBear (consistent-return): | | Method 'Order.WalkToTarget' expected no return value. binaries/data/mods/public/simulation/components/UnitAI.js | 917| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js | 942| » » » "enter":·function(msg)·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js | 992| » » » » » return·true; | | [NORMAL] ESLintBear (consistent-return): | | Method 'enter' expected no return value. binaries/data/mods/public/simulation/components/UnitAI.js |1055| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1091| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1123| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1283| » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1340| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1515| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1537| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1569| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1723| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1773| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1851| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2028| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2144| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2419| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2452| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2558| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2624| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2663| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2874| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |3055| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |3779| » var·isWorkType·=·type·=>·type·==·"Gather"·||·type·==·"Trade"·||·type·==·"Repair"·||·type·==·"ReturnResource"; | | [NORMAL] ESLintBear (no-shadow): | | 'type' is already declared in the upper scope. binaries/data/mods/public/simulation/components/UnitAI.js |4626| » var·target·=·ents.find(target·=>·this.CanAttack(target)); | | [NORMAL] ESLintBear (no-shadow): | | 'target' is already declared in the upper scope. binaries/data/mods/public/simulation/components/UnitAI.js |4641| » var·target·=·ents.find(target·=> | | [NORMAL] ESLintBear (no-shadow): | | 'target' is already declared in the upper scope. binaries/data/mods/public/simulation/components/UnitAI.js |4687| » var·ent·=·ents.find(ent·=>·this.CanHeal(ent)); | | [NORMAL] ESLintBear (no-shadow): | | 'ent' is already declared in the upper scope. binaries/data/mods/public/simulation/components/UnitAI.js |4710| » » ····cmpAttack.GetAttackTypes().some(type·=>·cmpUnitAI.CheckTargetAttackRange(this.isGuardOf,·type))) | | [NORMAL] ESLintBear (no-shadow): | | 'type' is already declared in the upper scope. binaries/data/mods/public/simulation/components/UnitAI.js |1983| » » » » » » &&·this.order.data.target·!=·msg.data.attacker·&&·this.GetBestAttackAgainst(msg.data.attacker,·true)·!=·"Capture") | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |3741| » » var·order·=·{·"type":·type,·"data":·data·}; | | [NORMAL] JSHintBear: | | 'order' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |3810| » for·(var·i·=·0;·i·<·this.orderQueue.length;·++i) | | [NORMAL] JSHintBear: | | 'i' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |4643| » » &&·this.CheckTargetDistanceFromHeldPosition(target,·IID_Attack,·this.GetBestAttackAgainst(target,·true)) | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |4644| » » &&·(this.GetStance().respondChaseBeyondVision·||·this.CheckTargetIsInVisionRange(target)) | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |5532| » » » » » » &&·!MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.attack)) | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |5535| » » » » » » &&·MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.avoid)) | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |5548| » var·targets·=·this.GetTargetsFromUnit(); | | [NORMAL] JSHintBear: | | 'targets' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5549| » for·(var·targ·of·targets) | | [NORMAL] JSHintBear: | | 'targ' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5555| » » » var·cmpIdentity·=·Engine.QueryInterface(targ,·IID_Identity); | | [NORMAL] JSHintBear: | | 'cmpIdentity' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5556| » » » var·targetClasses·=·this.order.data.targetClasses; | | [NORMAL] JSHintBear: | | 'targetClasses' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5558| » » » » &&·!MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.attack)) | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |5561| » » » » &&·MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.avoid)) | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |5636| » » var·cmpVision·=·Engine.QueryInterface(this.entity,·IID_Vision); | | [NORMAL] JSHintBear: | | 'cmpVision' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5639| » » var·range·=·cmpVision.GetRange(); | | [NORMAL] JSHintBear: | | 'range' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5644| » » var·cmpRanged·=·Engine.QueryInterface(this.entity,·iid); | | [NORMAL] JSHintBear: | | 'cmpRanged' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5647| » » var·range·=·iid·!==·IID_Attack·?·cmpRanged.GetRange()·:·cmpRanged.GetFullAttackRange(); | | [NORMAL] JSHintBear: | | 'range' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5648| » » var·cmpVision·=·Engine.QueryInterface(this.entity,·IID_Vision); | | [NORMAL] JSHintBear: | | 'cmpVision' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5658| » » var·cmpVision·=·Engine.QueryInterface(this.entity,·IID_Vision); | | [NORMAL] JSHintBear: | | 'cmpVision' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5661| » » var·range·=·cmpVision.GetRange(); | | [NORMAL] JSHintBear: | | 'range' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5954| » » &&·this.GetCurrentState()·==·"FORMATIONCONTROLLER.COMBAT.ATTACKING"; | | [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/928/display/redirect
Successful build - Chance fights ever on the side of the prudent.
Link to build: https://jenkins.wildfiregames.com/job/vs2015-differential/505/display/redirect
Successful build - Chance fights ever on the side of the prudent.
Linter detected issues: Executing section Source... Executing section JS... | | [NORMAL] ESLintBear (no-else-return): | | Unnecessary 'else' after 'return'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js | 762| 762| this.FinishOrder(); | 763| 763| return; | 764| 764| } | 765| |- else | 766| |- { | | 765|+ | 767| 766| this.SetNextState("GARRISON.APPROACHING"); | 768| 767| return; | 769| |- } | | 768|+ | 770| 769| } | 771| 770| | 772| 771| this.SetNextState("GARRISON.GARRISONING"); | | [NORMAL] ESLintBear (key-spacing): | | 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 |1030|1030| }, |1031|1031| }, |1032|1032| |1033| |- "GARRISON":{ | |1033|+ "GARRISON": { |1034|1034| "enter": function() { |1035|1035| // If the garrisonholder should pickup, warn it so it can take needed action |1036|1036| var cmpGarrisonHolder = Engine.QueryInterface(this.order.data.target, IID_GarrisonHolder); | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |1979|1979| |1980|1980| "Attacked": function(msg) { |1981|1981| // If we are capturing and are attacked by something that we would not capture, attack that entity instead |1982| |- if (this.order.data.attackType == "Capture" && (this.GetStance().targetAttackersAlways || !this.order.data.force) |1983| |- && this.order.data.target != msg.data.attacker && this.GetBestAttackAgainst(msg.data.attacker, true) != "Capture") | |1982|+ if (this.order.data.attackType == "Capture" && (this.GetStance().targetAttackersAlways || !this.order.data.force) && | |1983|+ this.order.data.target != msg.data.attacker && this.GetBestAttackAgainst(msg.data.attacker, true) != "Capture") |1984|1984| this.RespondToTargetedEntities([msg.data.attacker]); |1985|1985| }, |1986|1986| }, | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |2707|2707| { |2708|2708| // The building was already finished/fully repaired before we arrived; |2709|2709| // let the ConstructionFinished handler handle this. |2710| |- this.OnGlobalConstructionFinished({"entity": this.repairTarget, "newentity": this.repairTarget}); | |2710|+ this.OnGlobalConstructionFinished({ "entity": this.repairTarget, "newentity": this.repairTarget}); |2711|2711| return true; |2712|2712| } |2713|2713| | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |2707|2707| { |2708|2708| // The building was already finished/fully repaired before we arrived; |2709|2709| // let the ConstructionFinished handler handle this. |2710| |- this.OnGlobalConstructionFinished({"entity": this.repairTarget, "newentity": this.repairTarget}); | |2710|+ this.OnGlobalConstructionFinished({"entity": this.repairTarget, "newentity": this.repairTarget }); |2711|2711| return true; |2712|2712| } |2713|2713| | | [NORMAL] ESLintBear (indent): | | 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 |3220|3220| "COMBAT": "INDIVIDUAL.COMBAT", // reuse the same combat behaviour for animals |3221|3221| |3222|3222| "WALKING": "INDIVIDUAL.WALKING", // reuse the same walking behaviour for animals |3223| |- // only used for domestic animals | |3223|+ // only used for domestic animals |3224|3224| }, |3225|3225| }; |3226|3226| | | [NORMAL] ESLintBear (no-unneeded-ternary): | | 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 |3277|3277| |3278|3278| UnitAI.prototype.IsAnimal = function() |3279|3279| { |3280| |- return (this.template.NaturalBehaviour ? true : false); | |3280|+ return (!!this.template.NaturalBehaviour); |3281|3281| }; |3282|3282| |3283|3283| UnitAI.prototype.IsDangerousAnimal = function() | | [NORMAL] ESLintBear (comma-spacing): | | 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 |3393|3393| { |3394|3394| let index = this.GetCurrentState().indexOf("."); |3395|3395| if (index != -1) |3396| |- this.UnitFsm.SwitchToNextState(this, this.GetCurrentState().slice(0,index)); | |3396|+ this.UnitFsm.SwitchToNextState(this, this.GetCurrentState().slice(0, index)); |3397|3397| this.Stop(false); |3398|3398| } |3399|3399| | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3449|3449| if (this.orderQueue[i].type != "PickupUnit" || this.orderQueue[i].data.target != msg.entity) |3450|3450| continue; |3451|3451| if (i == 0) |3452| |- this.UnitFsm.ProcessMessage(this, {"type": "PickupCanceled", "data": msg}); | |3452|+ this.UnitFsm.ProcessMessage(this, { "type": "PickupCanceled", "data": msg}); |3453|3453| else |3454|3454| this.orderQueue.splice(i, 1); |3455|3455| Engine.PostMessage(this.entity, MT_UnitAIOrderDataChanged, { "to": this.GetOrderData() }); | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3449|3449| if (this.orderQueue[i].type != "PickupUnit" || this.orderQueue[i].data.target != msg.entity) |3450|3450| continue; |3451|3451| if (i == 0) |3452| |- this.UnitFsm.ProcessMessage(this, {"type": "PickupCanceled", "data": msg}); | |3452|+ this.UnitFsm.ProcessMessage(this, {"type": "PickupCanceled", "data": msg }); |3453|3453| else |3454|3454| this.orderQueue.splice(i, 1); |3455|3455| Engine.PostMessage(this.entity, MT_UnitAIOrderDataChanged, { "to": this.GetOrderData() }); | | [NORMAL] ESLintBear (spaced-comment): | | 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 |3533|3533| }; |3534|3534| |3535|3535| |3536| |-//// FSM linkage functions //// | |3536|+// // FSM linkage functions //// |3537|3537| |3538|3538| // Setting the next state to the current state will leave/re-enter the top-most substate. |3539|3539| UnitAI.prototype.SetNextState = function(state) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3703|3703| continue; |3704|3704| if (this.orderQueue[i].type == type) |3705|3705| continue; |3706| |- this.orderQueue.splice(i, 0, {"type": type, "data": data}); | |3706|+ this.orderQueue.splice(i, 0, { "type": type, "data": data}); |3707|3707| Engine.PostMessage(this.entity, MT_UnitAIOrderDataChanged, { "to": this.GetOrderData() }); |3708|3708| return; |3709|3709| } | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3703|3703| continue; |3704|3704| if (this.orderQueue[i].type == type) |3705|3705| continue; |3706| |- this.orderQueue.splice(i, 0, {"type": type, "data": data}); | |3706|+ this.orderQueue.splice(i, 0, {"type": type, "data": data }); |3707|3707| Engine.PostMessage(this.entity, MT_UnitAIOrderDataChanged, { "to": this.GetOrderData() }); |3708|3708| return; |3709|3709| } | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3874|3874| if (data.timerRepeat === undefined) |3875|3875| this.timer = undefined; |3876|3876| |3877| |- this.UnitFsm.ProcessMessage(this, {"type": "Timer", "data": data, "lateness": lateness}); | |3877|+ this.UnitFsm.ProcessMessage(this, { "type": "Timer", "data": data, "lateness": lateness}); |3878|3878| }; |3879|3879| |3880|3880| /** | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3874|3874| if (data.timerRepeat === undefined) |3875|3875| this.timer = undefined; |3876|3876| |3877| |- this.UnitFsm.ProcessMessage(this, {"type": "Timer", "data": data, "lateness": lateness}); | |3877|+ this.UnitFsm.ProcessMessage(this, {"type": "Timer", "data": data, "lateness": lateness }); |3878|3878| }; |3879|3879| |3880|3880| /** | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3919|3919| // TODO: This is a bit inefficient since every unit listens to every |3920|3920| // construction message - ideally we could scope it to only the one we're building |3921|3921| |3922| |- this.UnitFsm.ProcessMessage(this, {"type": "ConstructionFinished", "data": msg}); | |3922|+ this.UnitFsm.ProcessMessage(this, { "type": "ConstructionFinished", "data": msg}); |3923|3923| }; |3924|3924| |3925|3925| UnitAI.prototype.OnGlobalEntityRenamed = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3919|3919| // TODO: This is a bit inefficient since every unit listens to every |3920|3920| // construction message - ideally we could scope it to only the one we're building |3921|3921| |3922| |- this.UnitFsm.ProcessMessage(this, {"type": "ConstructionFinished", "data": msg}); | |3922|+ this.UnitFsm.ProcessMessage(this, {"type": "ConstructionFinished", "data": msg }); |3923|3923| }; |3924|3924| |3925|3925| UnitAI.prototype.OnGlobalEntityRenamed = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3944|3944| |3945|3945| UnitAI.prototype.OnAttacked = function(msg) |3946|3946| { |3947| |- this.UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg}); | |3947|+ this.UnitFsm.ProcessMessage(this, { "type": "Attacked", "data": msg}); |3948|3948| }; |3949|3949| |3950|3950| UnitAI.prototype.OnGuardedAttacked = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3944|3944| |3945|3945| UnitAI.prototype.OnAttacked = function(msg) |3946|3946| { |3947| |- this.UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg}); | |3947|+ this.UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg }); |3948|3948| }; |3949|3949| |3950|3950| UnitAI.prototype.OnGuardedAttacked = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3949|3949| |3950|3950| UnitAI.prototype.OnGuardedAttacked = function(msg) |3951|3951| { |3952| |- this.UnitFsm.ProcessMessage(this, {"type": "GuardedAttacked", "data": msg.data}); | |3952|+ this.UnitFsm.ProcessMessage(this, { "type": "GuardedAttacked", "data": msg.data}); |3953|3953| }; |3954|3954| |3955|3955| UnitAI.prototype.OnHealthChanged = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3949|3949| |3950|3950| UnitAI.prototype.OnGuardedAttacked = function(msg) |3951|3951| { |3952| |- this.UnitFsm.ProcessMessage(this, {"type": "GuardedAttacked", "data": msg.data}); | |3952|+ this.UnitFsm.ProcessMessage(this, {"type": "GuardedAttacked", "data": msg.data }); |3953|3953| }; |3954|3954| |3955|3955| UnitAI.prototype.OnHealthChanged = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3954|3954| |3955|3955| UnitAI.prototype.OnHealthChanged = function(msg) |3956|3956| { |3957| |- this.UnitFsm.ProcessMessage(this, {"type": "HealthChanged", "from": msg.from, "to": msg.to}); | |3957|+ this.UnitFsm.ProcessMessage(this, { "type": "HealthChanged", "from": msg.from, "to": msg.to}); |3958|3958| }; |3959|3959| |3960|3960| UnitAI.prototype.OnRangeUpdate = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3954|3954| |3955|3955| UnitAI.prototype.OnHealthChanged = function(msg) |3956|3956| { |3957| |- this.UnitFsm.ProcessMessage(this, {"type": "HealthChanged", "from": msg.from, "to": msg.to}); | |3957|+ this.UnitFsm.ProcessMessage(this, {"type": "HealthChanged", "from": msg.from, "to": msg.to }); |3958|3958| }; |3959|3959| |3960|3960| UnitAI.prototype.OnRangeUpdate = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3960|3960| UnitAI.prototype.OnRangeUpdate = function(msg) |3961|3961| { |3962|3962| if (msg.tag == this.losRangeQuery) |3963| |- this.UnitFsm.ProcessMessage(this, {"type": "LosRangeUpdate", "data": msg}); | |3963|+ this.UnitFsm.ProcessMessage(this, { "type": "LosRangeUpdate", "data": msg}); |3964|3964| else if (msg.tag == this.losHealRangeQuery) |3965|3965| this.UnitFsm.ProcessMessage(this, {"type": "LosHealRangeUpdate", "data": msg}); |3966|3966| }; | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3960|3960| UnitAI.prototype.OnRangeUpdate = function(msg) |3961|3961| { |3962|3962| if (msg.tag == this.losRangeQuery) |3963| |- this.UnitFsm.ProcessMessage(this, {"type": "LosRangeUpdate", "data": msg}); | |3963|+ this.UnitFsm.ProcessMessage(this, {"type": "LosRangeUpdate", "data": msg }); |3964|3964| else if (msg.tag == this.losHealRangeQuery) |3965|3965| this.UnitFsm.ProcessMessage(this, {"type": "LosHealRangeUpdate", "data": msg}); |3966|3966| }; | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3962|3962| if (msg.tag == this.losRangeQuery) |3963|3963| this.UnitFsm.ProcessMessage(this, {"type": "LosRangeUpdate", "data": msg}); |3964|3964| else if (msg.tag == this.losHealRangeQuery) |3965| |- this.UnitFsm.ProcessMessage(this, {"type": "LosHealRangeUpdate", "data": msg}); | |3965|+ this.UnitFsm.ProcessMessage(this, { "type": "LosHealRangeUpdate", "data": msg}); |3966|3966| }; |3967|3967| |3968|3968| UnitAI.prototype.OnPackFinished = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3962|3962| if (msg.tag == this.losRangeQuery) |3963|3963| this.UnitFsm.ProcessMessage(this, {"type": "LosRangeUpdate", "data": msg}); |3964|3964| else if (msg.tag == this.losHealRangeQuery) |3965| |- this.UnitFsm.ProcessMessage(this, {"type": "LosHealRangeUpdate", "data": msg}); | |3965|+ this.UnitFsm.ProcessMessage(this, {"type": "LosHealRangeUpdate", "data": msg }); |3966|3966| }; |3967|3967| |3968|3968| UnitAI.prototype.OnPackFinished = function(msg) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3967|3967| |3968|3968| UnitAI.prototype.OnPackFinished = function(msg) |3969|3969| { |3970| |- this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed}); | |3970|+ this.UnitFsm.ProcessMessage(this, { "type": "PackFinished", "packed": msg.packed}); |3971|3971| }; |3972|3972| |3973|3973| //// Helper functions to be called by the FSM //// | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |3967|3967| |3968|3968| UnitAI.prototype.OnPackFinished = function(msg) |3969|3969| { |3970| |- this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed}); | |3970|+ this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed }); |3971|3971| }; |3972|3972| |3973|3973| //// Helper functions to be called by the FSM //// | | [NORMAL] ESLintBear (spaced-comment): | | 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 |3970|3970| this.UnitFsm.ProcessMessage(this, {"type": "PackFinished", "packed": msg.packed}); |3971|3971| }; |3972|3972| |3973| |-//// Helper functions to be called by the FSM //// | |3973|+// // Helper functions to be called by the FSM //// |3974|3974| |3975|3975| UnitAI.prototype.GetWalkSpeed = function() |3976|3976| { | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |4639|4639| UnitAI.prototype.AttackEntityInZone = function(ents) |4640|4640| { |4641|4641| var target = ents.find(target => |4642| |- this.CanAttack(target) |4643| |- && this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true)) | |4642|+ this.CanAttack(target) && | |4643|+ this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true)) |4644|4644| && (this.GetStance().respondChaseBeyondVision || this.CheckTargetIsInVisionRange(target)) |4645|4645| ); |4646|4646| if (!target) | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |4640|4640| { |4641|4641| var target = ents.find(target => |4642|4642| this.CanAttack(target) |4643| |- && this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true)) |4644| |- && (this.GetStance().respondChaseBeyondVision || this.CheckTargetIsInVisionRange(target)) | |4643|+ && this.CheckTargetDistanceFromHeldPosition(target, IID_Attack, this.GetBestAttackAgainst(target, true)) && | |4644|+ (this.GetStance().respondChaseBeyondVision || this.CheckTargetIsInVisionRange(target)) |4645|4645| ); |4646|4646| if (!target) |4647|4647| return false; | | [NORMAL] ESLintBear (no-multi-spaces): | | 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 |4704|4704| // If we are guarding/escorting, don't abandon as long as the guarded unit is in target range of the attacker |4705|4705| if (this.isGuardOf) |4706|4706| { |4707| |- var cmpUnitAI = Engine.QueryInterface(target, IID_UnitAI); | |4707|+ var cmpUnitAI = Engine.QueryInterface(target, IID_UnitAI); |4708|4708| var cmpAttack = Engine.QueryInterface(target, IID_Attack); |4709|4709| if (cmpUnitAI && cmpAttack && |4710|4710| cmpAttack.GetAttackTypes().some(type => cmpUnitAI.CheckTargetAttackRange(this.isGuardOf, type))) | | [NORMAL] ESLintBear (indent): | | 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 |4708|4708| var cmpAttack = Engine.QueryInterface(target, IID_Attack); |4709|4709| if (cmpUnitAI && cmpAttack && |4710|4710| cmpAttack.GetAttackTypes().some(type => cmpUnitAI.CheckTargetAttackRange(this.isGuardOf, type))) |4711| |- return false; | |4711|+ return false; |4712|4712| } |4713|4713| |4714|4714| // Stop if we're in hold-ground mode and it's too far from the holding point | | [NORMAL] ESLintBear (no-multi-spaces): | | 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 |4746|4746| // If we are guarding/escorting, chase at least as long as the guarded unit is in target range of the attacker |4747|4747| if (this.isGuardOf) |4748|4748| { |4749| |- let cmpUnitAI = Engine.QueryInterface(target, IID_UnitAI); | |4749|+ let cmpUnitAI = Engine.QueryInterface(target, IID_UnitAI); |4750|4750| let cmpAttack = Engine.QueryInterface(target, IID_Attack); |4751|4751| if (cmpUnitAI && cmpAttack && |4752|4752| cmpAttack.GetAttackTypes().some(type => cmpUnitAI.CheckTargetAttackRange(this.isGuardOf, type))) | | [NORMAL] ESLintBear (spaced-comment): | | 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 |4759|4759| return false; |4760|4760| }; |4761|4761| |4762| |-//// External interface functions //// | |4762|+// // External interface functions //// |4763|4763| |4764|4764| UnitAI.prototype.SetFormationController = function(ent) |4765|4765| { | | [NORMAL] ESLintBear (no-else-return): | | Unnecessary 'else' after 'return'. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js |4915|4915| { |4916|4916| if (this.isGuardOf == target && this.order && this.order.type == "Guard") |4917|4917| return; |4918| |- else |4919| |- this.RemoveGuard(); | |4918|+ this.RemoveGuard(); |4920|4919| } |4921|4920| |4922|4921| this.AddOrder("Guard", { "target": target, "force": false }, queued); | | [NORMAL] ESLintBear (no-trailing-spaces): | | Trailing spaces not allowed. |----| | /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js | |++++| /zpool0/trunk/binaries/data/mods/public/simulation/components/UnitAI.js |5247|5247| this.workOrders.length && this.workOrders[0].type == "Trade") |5248|5248| { |5249|5249| let cmpTrader = Engine.QueryInterface(this.entity, IID_Trader); |5250| |- if (cmpTrader.HasBothMarkets() && | |5250|+ if (cmpTrader.HasBothMarkets() && |5251|5251| (cmpTrader.GetFirstMarket() == target && cmpTrader.GetSecondMarket() == source || |5252|5252| cmpTrader.GetFirstMarket() == source && cmpTrader.GetSecondMarket() == target)) |5253|5253| { | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |5528|5528| { |5529|5529| var cmpIdentity = Engine.QueryInterface(targ, IID_Identity); |5530|5530| var targetClasses = this.order.data.targetClasses; |5531| |- if (targetClasses.attack && cmpIdentity |5532| |- && !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack)) | |5531|+ if (targetClasses.attack && cmpIdentity && | |5532|+ !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack)) |5533|5533| continue; |5534|5534| if (targetClasses.avoid && cmpIdentity |5535|5535| && MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid)) | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |5531|5531| if (targetClasses.attack && cmpIdentity |5532|5532| && !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack)) |5533|5533| continue; |5534| |- if (targetClasses.avoid && cmpIdentity |5535| |- && MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid)) | |5534|+ if (targetClasses.avoid && cmpIdentity && | |5535|+ MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid)) |5536|5536| continue; |5537|5537| // Only used by the AIs to prevent some choices of targets |5538|5538| if (targetClasses.vetoEntities && targetClasses.vetoEntities[targ]) | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |5554|5554| { |5555|5555| var cmpIdentity = Engine.QueryInterface(targ, IID_Identity); |5556|5556| var targetClasses = this.order.data.targetClasses; |5557| |- if (cmpIdentity && targetClasses.attack |5558| |- && !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack)) | |5557|+ if (cmpIdentity && targetClasses.attack && | |5558|+ !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack)) |5559|5559| continue; |5560|5560| if (cmpIdentity && targetClasses.avoid |5561|5561| && MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid)) | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |5557|5557| if (cmpIdentity && targetClasses.attack |5558|5558| && !MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.attack)) |5559|5559| continue; |5560| |- if (cmpIdentity && targetClasses.avoid |5561| |- && MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid)) | |5560|+ if (cmpIdentity && targetClasses.avoid && | |5561|+ MatchesClassList(cmpIdentity.GetClassesList(), targetClasses.avoid)) |5562|5562| continue; |5563|5563| // Only used by the AIs to prevent some choices of targets |5564|5564| if (targetClasses.vetoEntities && targetClasses.vetoEntities[targ]) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |5714|5714| |5715|5715| UnitAI.prototype.SetHeldPosition = function(x, z) |5716|5716| { |5717| |- this.heldPosition = {"x": x, "z": z}; | |5717|+ this.heldPosition = { "x": x, "z": z}; |5718|5718| }; |5719|5719| |5720|5720| UnitAI.prototype.SetHeldPositionOnEntity = function(entity) | | [NORMAL] ESLintBear (object-curly-spacing): | | 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 |5714|5714| |5715|5715| UnitAI.prototype.SetHeldPosition = function(x, z) |5716|5716| { |5717| |- this.heldPosition = {"x": x, "z": z}; | |5717|+ this.heldPosition = {"x": x, "z": z }; |5718|5718| }; |5719|5719| |5720|5720| UnitAI.prototype.SetHeldPositionOnEntity = function(entity) | | [NORMAL] ESLintBear (spaced-comment): | | 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 |5741|5741| return false; |5742|5742| }; |5743|5743| |5744| |-//// Helper functions //// | |5744|+// // Helper functions //// |5745|5745| |5746|5746| UnitAI.prototype.CanAttack = function(target) |5747|5747| { | | [NORMAL] ESLintBear (spaced-comment): | | 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 |5945|5945| return cmpPack && cmpPack.IsPacking(); |5946|5946| }; |5947|5947| |5948| |-//// Formation specific functions //// | |5948|+// // Formation specific functions //// |5949|5949| |5950|5950| UnitAI.prototype.IsAttackingAsFormation = function() |5951|5951| { | | [NORMAL] ESLintBear (operator-linebreak): | | '&&' 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 |5950|5950| UnitAI.prototype.IsAttackingAsFormation = function() |5951|5951| { |5952|5952| var cmpAttack = Engine.QueryInterface(this.entity, IID_Attack); |5953| |- return cmpAttack && cmpAttack.CanAttackAsFormation() |5954| |- && this.GetCurrentState() == "FORMATIONCONTROLLER.COMBAT.ATTACKING"; | |5953|+ return cmpAttack && cmpAttack.CanAttackAsFormation() && | |5954|+ this.GetCurrentState() == "FORMATIONCONTROLLER.COMBAT.ATTACKING"; |5955|5955| }; |5956|5956| |5957|5957| //// Animal specific functions //// | | [NORMAL] ESLintBear (spaced-comment): | | 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 |5954|5954| && this.GetCurrentState() == "FORMATIONCONTROLLER.COMBAT.ATTACKING"; |5955|5955| }; |5956|5956| |5957| |-//// Animal specific functions //// | |5957|+// // Animal specific functions //// |5958|5958| |5959|5959| UnitAI.prototype.MoveRandomly = function(distance) |5960|5960| { binaries/data/mods/public/simulation/components/UnitAI.js | 331| » » » return·true; | | [NORMAL] ESLintBear (consistent-return): | | Method 'Order.WalkToTarget' expected no return value. binaries/data/mods/public/simulation/components/UnitAI.js | 917| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js | 942| » » » "enter":·function(msg)·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js | 992| » » » » » return·true; | | [NORMAL] ESLintBear (consistent-return): | | Method 'enter' expected no return value. binaries/data/mods/public/simulation/components/UnitAI.js |1055| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1091| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1123| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1283| » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1340| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1515| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1537| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1569| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1723| » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1773| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |1851| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2028| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2144| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2419| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2452| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2558| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2624| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2663| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |2874| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |3055| » » » » "enter":·function()·{ | | [NORMAL] ESLintBear (consistent-return): | | Expected to return a value at the end of method 'enter'. binaries/data/mods/public/simulation/components/UnitAI.js |3779| » var·isWorkType·=·type·=>·type·==·"Gather"·||·type·==·"Trade"·||·type·==·"Repair"·||·type·==·"ReturnResource"; | | [NORMAL] ESLintBear (no-shadow): | | 'type' is already declared in the upper scope. binaries/data/mods/public/simulation/components/UnitAI.js |4626| » var·target·=·ents.find(target·=>·this.CanAttack(target)); | | [NORMAL] ESLintBear (no-shadow): | | 'target' is already declared in the upper scope. binaries/data/mods/public/simulation/components/UnitAI.js |4641| » var·target·=·ents.find(target·=> | | [NORMAL] ESLintBear (no-shadow): | | 'target' is already declared in the upper scope. binaries/data/mods/public/simulation/components/UnitAI.js |4687| » var·ent·=·ents.find(ent·=>·this.CanHeal(ent)); | | [NORMAL] ESLintBear (no-shadow): | | 'ent' is already declared in the upper scope. binaries/data/mods/public/simulation/components/UnitAI.js |4710| » » ····cmpAttack.GetAttackTypes().some(type·=>·cmpUnitAI.CheckTargetAttackRange(this.isGuardOf,·type))) | | [NORMAL] ESLintBear (no-shadow): | | 'type' is already declared in the upper scope. binaries/data/mods/public/simulation/components/UnitAI.js |1983| » » » » » » &&·this.order.data.target·!=·msg.data.attacker·&&·this.GetBestAttackAgainst(msg.data.attacker,·true)·!=·"Capture") | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |3741| » » var·order·=·{·"type":·type,·"data":·data·}; | | [NORMAL] JSHintBear: | | 'order' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |3810| » for·(var·i·=·0;·i·<·this.orderQueue.length;·++i) | | [NORMAL] JSHintBear: | | 'i' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |4643| » » &&·this.CheckTargetDistanceFromHeldPosition(target,·IID_Attack,·this.GetBestAttackAgainst(target,·true)) | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |4644| » » &&·(this.GetStance().respondChaseBeyondVision·||·this.CheckTargetIsInVisionRange(target)) | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |5532| » » » » » » &&·!MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.attack)) | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |5535| » » » » » » &&·MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.avoid)) | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |5548| » var·targets·=·this.GetTargetsFromUnit(); | | [NORMAL] JSHintBear: | | 'targets' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5549| » for·(var·targ·of·targets) | | [NORMAL] JSHintBear: | | 'targ' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5555| » » » var·cmpIdentity·=·Engine.QueryInterface(targ,·IID_Identity); | | [NORMAL] JSHintBear: | | 'cmpIdentity' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5556| » » » var·targetClasses·=·this.order.data.targetClasses; | | [NORMAL] JSHintBear: | | 'targetClasses' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5558| » » » » &&·!MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.attack)) | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |5561| » » » » &&·MatchesClassList(cmpIdentity.GetClassesList(),·targetClasses.avoid)) | | [NORMAL] JSHintBear: | | Misleading line break before '&&'; readers may interpret this as an expression boundary. binaries/data/mods/public/simulation/components/UnitAI.js |5636| » » var·cmpVision·=·Engine.QueryInterface(this.entity,·IID_Vision); | | [NORMAL] JSHintBear: | | 'cmpVision' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5639| » » var·range·=·cmpVision.GetRange(); | | [NORMAL] JSHintBear: | | 'range' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5644| » » var·cmpRanged·=·Engine.QueryInterface(this.entity,·iid); | | [NORMAL] JSHintBear: | | 'cmpRanged' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5647| » » var·range·=·iid·!==·IID_Attack·?·cmpRanged.GetRange()·:·cmpRanged.GetFullAttackRange(); | | [NORMAL] JSHintBear: | | 'range' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5648| » » var·cmpVision·=·Engine.QueryInterface(this.entity,·IID_Vision); | | [NORMAL] JSHintBear: | | 'cmpVision' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5658| » » var·cmpVision·=·Engine.QueryInterface(this.entity,·IID_Vision); | | [NORMAL] JSHintBear: | | 'cmpVision' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5661| » » var·range·=·cmpVision.GetRange(); | | [NORMAL] JSHintBear: | | 'range' is already defined. binaries/data/mods/public/simulation/components/UnitAI.js |5954| » » &&·this.GetCurrentState()·==·"FORMATIONCONTROLLER.COMBAT.ATTACKING"; | | [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/1020/display/redirect
This is fixing issue with cheering units.
Now they correctly continue on whatever order was given.