HomeWildfire Games

Make units wait a few seconds at waypoints during Patrol.
AuditedrP24360

Description

Make units wait a few seconds at waypoints during Patrol.

This makes 'dancing' impossible with patrol, for both single units and formations.
It further makes the formation and regular patrol code more similar.

The diff harcodes an integer wait time as it relies on timer calls instead of range queries, as that was much simpler to implement.
Animations for the waypoint-waiting is also unimplemented.

Reviewed By: Freagarach

Refs #5106

Differential Revision: https://code.wildfiregames.com/D2913

Event Timeline

Stan raised a concern with this commit.EditedDec 10 2020, 12:40 PM
Stan added a subscriber: Stan.
0 A.D. (0.0.24) Main log (warnings and errors only)

ERROR: RelaxNGValidator: Validation error: gaia/fauna_chicken:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: gaia/fauna_chicken:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: gaia/fauna_chicken:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: Failed to load entity template 'gaia/fauna_chicken'

ERROR: RelaxNGValidator: Validation error: gaia/fauna_deer:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: gaia/fauna_deer:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: gaia/fauna_deer:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: RelaxNGValidator: Validation error: gaia/fauna_boar:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: gaia/fauna_boar:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: gaia/fauna_boar:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'gaia/fauna_boar'

ERROR: Failed to load entity template 'gaia/fauna_boar'

ERROR: Failed to load entity template 'gaia/fauna_boar'

ERROR: Failed to load entity template 'gaia/fauna_boar'

ERROR: Failed to load entity template 'gaia/fauna_boar'

ERROR: RelaxNGValidator: Validation error: gaia/fauna_bear_brown:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: gaia/fauna_bear_brown:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: gaia/fauna_bear_brown:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'gaia/fauna_bear_brown'

ERROR: Failed to load entity template 'gaia/fauna_bear_brown'

ERROR: RelaxNGValidator: Validation error: gaia/fauna_sheep:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: gaia/fauna_sheep:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: gaia/fauna_sheep:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_sheep'

ERROR: Failed to load entity template 'gaia/fauna_bear_brown'

ERROR: RelaxNGValidator: Validation error: gaia/fauna_wolf:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: gaia/fauna_wolf:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: gaia/fauna_wolf:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'gaia/fauna_wolf'

ERROR: Failed to load entity template 'gaia/fauna_wolf'

ERROR: Failed to load entity template 'gaia/fauna_wolf'

ERROR: Failed to load entity template 'gaia/fauna_wolf'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: Failed to load entity template 'gaia/fauna_deer'

ERROR: RelaxNGValidator: Validation error: skirmish/units/default_infantry_melee_b:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: skirmish/units/default_infantry_melee_b:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: skirmish/units/default_infantry_melee_b:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'skirmish/units/default_infantry_melee_b'

ERROR: Failed to load entity template 'skirmish/units/default_infantry_melee_b'

ERROR: Failed to load entity template 'skirmish/units/default_infantry_melee_b'

ERROR: RelaxNGValidator: Validation error: skirmish/units/default_infantry_ranged_b:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: skirmish/units/default_infantry_ranged_b:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: skirmish/units/default_infantry_ranged_b:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'skirmish/units/default_infantry_ranged_b'

ERROR: Failed to load entity template 'skirmish/units/default_infantry_ranged_b'

ERROR: Failed to load entity template 'skirmish/units/default_infantry_ranged_b'

ERROR: RelaxNGValidator: Validation error: skirmish/units/default_support_female_citizen:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: skirmish/units/default_support_female_citizen:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: skirmish/units/default_support_female_citizen:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'skirmish/units/default_support_female_citizen'

ERROR: Failed to load entity template 'skirmish/units/default_support_female_citizen'

ERROR: Failed to load entity template 'skirmish/units/default_support_female_citizen'

ERROR: Failed to load entity template 'skirmish/units/default_support_female_citizen'

ERROR: Failed to load entity template 'skirmish/units/default_support_female_citizen'

ERROR: RelaxNGValidator: Validation error: skirmish/units/default_cavalry:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: skirmish/units/default_cavalry:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: skirmish/units/default_cavalry:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'skirmish/units/default_cavalry'

ERROR: Failed to load entity template 'skirmish/units/default_cavalry'

ERROR: RelaxNGValidator: Validation error: skirmish/units/special_starting_unit:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: skirmish/units/special_starting_unit:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: skirmish/units/special_starting_unit:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'skirmish/units/special_starting_unit'

ERROR: Failed to load entity template 'skirmish/units/special_starting_unit'

ERROR: Failed to load entity template 'skirmish/units/special_starting_unit'

ERROR: Failed to load entity template 'skirmish/units/default_cavalry'

ERROR: Failed to load entity template 'skirmish/units/default_infantry_melee_b'

ERROR: Failed to load entity template 'skirmish/units/default_infantry_melee_b'

ERROR: Failed to load entity template 'skirmish/units/default_infantry_ranged_b'

ERROR: Failed to load entity template 'skirmish/units/default_infantry_ranged_b'

ERROR: Failed to load entity template 'skirmish/units/default_support_female_citizen'

ERROR: Failed to load entity template 'skirmish/units/default_support_female_citizen'

ERROR: Failed to load entity template 'skirmish/units/default_support_female_citizen'

ERROR: Failed to load entity template 'skirmish/units/default_support_female_citizen'

ERROR: RelaxNGValidator: Validation error: units/kush/support_female_citizen:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: units/kush/support_female_citizen:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: units/kush/support_female_citizen:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'units/kush/support_female_citizen'

ERROR: RelaxNGValidator: Validation error: units/kush/infantry_spearman_b:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: units/kush/infantry_spearman_b:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: units/kush/infantry_spearman_b:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'units/kush/infantry_spearman_b'

ERROR: RelaxNGValidator: Validation error: units/kush/infantry_archer_b:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: units/kush/infantry_archer_b:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: units/kush/infantry_archer_b:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'units/kush/infantry_archer_b'

ERROR: RelaxNGValidator: Validation error: units/kush/cavalry_javelineer_b:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: units/kush/cavalry_javelineer_b:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: units/kush/cavalry_javelineer_b:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'units/kush/cavalry_javelineer_b'

ERROR: RelaxNGValidator: Validation error: units/rome/support_female_citizen:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: units/rome/support_female_citizen:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: units/rome/support_female_citizen:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'units/rome/support_female_citizen'

ERROR: RelaxNGValidator: Validation error: units/rome/infantry_swordsman_b:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: units/rome/infantry_swordsman_b:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: units/rome/infantry_swordsman_b:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'units/rome/infantry_swordsman_b'

ERROR: RelaxNGValidator: Validation error: units/rome/infantry_javelineer_b:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: units/rome/infantry_javelineer_b:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: units/rome/infantry_javelineer_b:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'units/rome/infantry_javelineer_b'

ERROR: RelaxNGValidator: Validation error: units/rome/cavalry_spearman_b:1: Expecting an element PatrolWaitTime, got nothing

ERROR: RelaxNGValidator: Validation error: units/rome/cavalry_spearman_b:1: Invalid sequence in interleave

ERROR: RelaxNGValidator: Validation error: units/rome/cavalry_spearman_b:1: Element UnitAI failed to validate content

ERROR: RelaxNGValidator: Validation failed for '(null)'

ERROR: Failed to validate entity template 'units/rome/cavalry_spearman_b'

ERROR: JavaScript error: simulation/helpers/Commands.js line 284 template is undefined train@simulation/helpers/Commands.js:284:7 ProcessCommand@simulation/helpers/Commands.js:48:23

ERROR: Failed to call ProcessCommand() global script function

ERROR: JavaScript error: simulation/helpers/Commands.js line 284 template is undefined train@simulation/helpers/Commands.js:284:7 ProcessCommand@simulation/helpers/Commands.js:48:23

ERROR: Failed to call ProcessCommand() global script function
This commit now has outstanding concerns.Dec 10 2020, 12:40 PM
Stan removed an auditor: Stan.Dec 10 2020, 1:45 PM

I had a mod on, sorry;

This commit no longer requires audit.Dec 10 2020, 1:45 PM
Freagarach raised a concern with this commit.Jun 17 2021, 6:40 AM
Freagarach added a subscriber: Freagarach.
Freagarach added inline comments.
/ps/trunk/binaries/data/mods/public/simulation/components/UnitAI.js
1049–1050

Causes: https://wildfiregames.com/forum/topic/41264-alpha-25-pre-releaserelease-candidate-build-testing/page/4/?tab=comments#comment-435709
(Finding a walk and fight target and quiting the state, but doing ++this.stopSurveying which results in NaN.)

1706–1707

Idem.

This commit now has outstanding concerns.Jun 17 2021, 6:40 AM
Freagarach accepted this commit.Jun 20 2021, 8:20 AM

My concern was fixed in rP25804.

All concerns with this commit have now been addressed.Jun 20 2021, 8:20 AM