Age of Mythology: Extended Edition

Age of Mythology: Extended Edition

Not enough ratings
Proto & Anim Action & Logic Lists
By Callistonian and 1 collaborators
This is a complete reference list of all actions (events) used in the proto2.5.xml file. More actions that aren't included in this list are defined in the EXE but may not function properly or at all (many do not appear to have linked anim events). Proto actions control what units, buildings, and all other objects do and are capable of doing and are therefore of great use to data modders. It is impossible to define new actions without editing the EXE, therefore, this list contains all actions accessible to modders. Along with each action is a brief descriptive note. Most of them have names that are fairly straight forward or can be inferred in the context of the objects where they appear. As a disclaimer, I have not tested all of these actions so the properties I discuss in the notes may not be exhaustive. Furthermore, it is known that some actions will not function or function poorly if paired with the wrong flags or if the anim file for the object does not link to some model animation. For example, using HandAttack for a tree object will probably result in the tree turning invisible during the action since there is no model referenced in the anim. However, no action requires a unique animation to function. For example, the idle animation for a tree can be used for the HandAttack action, it just has to be specified in the anim that you want to use the idle animation for HandAttack. The fishing boat does exactly this when using the idle animation with the Build action for building an Obelisk.

I have also published a list of anim actions (events). The list was completed using EmjeR's EXE tags list which is a very useful tool and can be downloaded here[aom.heavengames.com]. Anim actions are sometimes clearly verbally linked to proto actions and tags, sometimes not. Some anim actions refer to proto tags instead of actions such as birth, walk, death, etc. Unlike proto actions which control what the unit is actually doing with respect to other objects, resources, terrain, etc. etc., anim actions are mostly aesthetic in nature and simlpy reference model animations which are made using various 3D modeling programs. However, anim tags can affect proto data in a limited sense (they can change attack rates, for example).

Lastly, there is a brief list of logical variation types used by the anim.

I will be happy to answer questions concerning the implementation of various actions through the stages of proto, anim, and models. I have not made lists of flags, unittypes, or other proto variables as their names are fairly accurate and descriptive. When designing new units, I reference these lists all the time and thought they would be of some use to the community.
   
Award
Favorite
Favorited
Unfavorite
Proto Actions List
AreaAttack – just what it sounds like, causes splash damage within a specified radius, can be used instead of HandAttack to give units splash damage

AutoConvert – used by Osiris Piece Box (Great Box Cart), Plenty Vault, etc. to convert the object between players based on which player has the most units within the specified radius

AutoGather – used by Atlantean villagers, Egyptian Monuments, Norse military units (to generate favor), Plenty Vault, etc. to generate resources for the player without having to drop them at a dropsite, this action is also used by herdable animals to accumulate food for themselves using the AddResourcesToInventory param

AutoLOS - used by the Atlantean Oracle/Hero to automatically increase LOS, continuously if the persistent param is used

Boost – this is used by the Einherjar, Arkantos, Chinese General, etc. to temporarily increase attack actions for allied units within the specified radius, the Fenris Wolf also uses a boost action with a target param specifying only other Fenris Wolves, there seems to be a lot of creative potential with the application of various params to this action

BuckAttack – usually used as a charged attack by units such as the Battle Boar, it’s basically multiple Gore actions in sequence that affect all enemy units within the specified radius instead of just one

Build – building types have to be specified in the params, I'm not sure what happens if you give a unit a train line for a building but don't include the building's type in the build action params

ChargedRangedAttack – same as a regular range attack but with a recharge time specified in the unit’s <rechargetime> line

Convert – used by the priest to convert animals of Set, also used by Chinese Immortal to convert other units, lots of creative potential with this action

ConvertAttack – used by the Mummy (for minions) and the Lampades as a special attack

DiveBomb – suicide attack, used by the Olympus Shade, etc.

DropOff – used by hero units (or any other unit) to deposit relics (or any other object type) in temples (or anywhere with the specified type)

Eat – used only by the Colossus to “eat” wood and gold and thereby recover HP, there is huge untapped potential here

Empower – used by the Pharaoh, Priest, etc. to boost other actions' stats and increase research/train rates, there is definitely untapped potential with this action, can only target a single object

Enter – used by some SFX objects, Towers, and Fort buildings, I'm not sure exactly what this action does

FreezeAttack – used by the Frost Giant/Folstag to freeze units and Medusa/Argus/Perseus to turn units to stone, ice vs. stone is distinguished by the rate param

Gate – used by gates, Gate of Troy, etc. to allow units within a specified range to pass through the object

Gather – used mostly by civilian units such as villagers, fishing ships, the raft, etc. to gather resources from other objects that have the specified resource unittype

Gore – usually a charged attack (doesn’t have to be) used by the minotaur, mountain giant (for dwarfs), etc. to toss a single enemy unit that is a valid target

HandAttack – used for melee attacks, has a specified range but unlike the RangedAttack action, I haven’t seen it used with any probabilistic params so every attack is a guaranteed hit, I’m not sure if adding probabilistic params is allowed or what the effects would be

Heal – does exactly what it says, can be used on whatever unit type is specified

Hunting – used by civilians to hunt

JumpAttack – a special type of charged attack used by the Anubite, Amanra, etc. to jump over terrain and attack an enemy, it is a combination of 1) temporarily turning the land movementype unit into a flying unit and 2) charge attack, the min range tags prevent units with this action from using it like a normal charged attack, otherwise they would be jumping in the air in the middle of combat

Light – used by Fire Giant, doesn't do anything when applied to other objects, possibly a cut feature

LightningAttack – used by Osiris, Son of Osiris, Circe, etc.

Move – used by Hawks, Harpies, etc. to move the object linearly across the map, usually paired with flags that make the object not selectable, not shown on mini-map, etc.

MoveByGroup – used by Recognizer

PickUp – used by hero units (or any other unit type) to carry relics (or any other specified object type)

RangedAttack – similar to HandAttack but always has some probabilistic params such as Accuracy, SpreadFactor, AccuracyReductionFactor, AimBonus, etc. so that not every action is a hit, RangedAttack is also used by civilians for hunting with the param <param name="Rate" type="Huntable" value1="1.0"></param> which limits the target to objects with the hunt unittype

Regenerate – does exactly what it sounds like, the rate is very sensitive

Repair – similar to heal but without a range and specific to building types

Swallow - unused action, similar to PickUp but the target object is deleted instead of thrown when the action is completed

Teleport – unused action, only appears in the proto for the Chinese Earth Dragon where it has been commented out, the Egyptian Sphynx also has an animation called "teleport", the action does work in conjunction with the TeleportIn/Out anim actions

Throw – used by Cyclops, etc. to pick up and throw other units which are valid throw targets

Trade – used by caravan units to generate money by moving between an object with unittype TradeableFrom to an object with unittype TradeableTo, you will notice that you can specify the max and min rates which are based on the distances the caravan unit travels (you have to experiment with these to get it just right, it’s very sensitive) as well as the rate for different From and To objects, there is actually a lot of untapped creative potential with the Trade action that the devs never used

Wander – used by huntable animals and the tornado and some other objects to wander randomly within a predefined area (can’t be set), usually paired with flags such as NotCommandable

WhirlwindAttack – a charged attack usually used with a regular attack animation to just do extra damage, unlike Jump, Gore, Throw, etc. it usually isn’t used in conjunction with a unique animation but just an unnoticeable extra powerful regular attack, adding the "Poison" param will turn this action into the Scorpion Man's special attack
Anim Actions List
It is possible to change the duration of an animation in the anim using the command "length" after the visual within the version, for example: Visual ModelName length 1.6 - which would increase the duration of the model animation by 60% (making it appear slower). Likewise, the point during the animation at which the proto action, footstep, sound, or other tangible action is performed can be easily edited using tag lines such as: tag action 0.50 true - which would perform some action at the 50% mark of the animation's run time. Common tags include: Attack, GenericSound, SpecificSoundSet, FootstepLeft, FootstepRight.

Attack – linked to the HandAttack proto action

Birth – used when training in-game or placing in the editor

Bored – when the unit has been standing still for a few seconds

Build – linked to the Build proto action

Carry – linked to the PickUp proto action

CastAttack - used by some campaign heroes for special attacks

Charging – used for most generic charged attacks

Cinematic – used to play specific animations for scenarios usually with models that have special HD textures

Closed/Closing - used by gates

Convert – linked to the Convert and ConvertAttack proto actions

Death – when the unit or building dies

Decay - used when the unit or building dies

Dormant - unused as far as I can tell, defined in the exe

Eat - linked to the eat proto action, again only used by the Colossus

Empower – linked to the Empower proto action

Flail – almost all units have this, it’s used when the unit is thrown, bucked, gored, picked up by a tornado, etc.

GatherBush - standing gathering, usually holding a basket, linked to the Gather proto action

GatherChop - the action needed to cut down trees, linked to the Gather proto action

GatherFarm - the action needed to farm, linked to the Gather proto action

GatherFish - used by fishing ships, linked to gather fish proto action

GatherHunt - slicing motion kneeling on the ground, linked to the Hunt proto action

GatherMine - the action needed for overhead swing used in minding and choping trees once they're down, linked to the Gather proto action

FreezeAttack - linked to the freeze attack proto action

Heal – linked to the Heal proto action

Idle – when the unit or building is standing still, also used by most objects that simply exist such as SFX, embellishments, and projectiles

JumpFly – linked to the JumpAttack proto action

JumpTakeoff – linked to the JumpAttack proto action

JumpLand – linked to the JumpAttack proto action

Kill - unused as far as I can tell, defined in the exe

Left/Right/BehindAttack - unused as far as I can tell, defined in the exe

MaxLOS - linked to the AutoLOS proto action used by Atlantean Oracles

None - same as idle, commonly used for embellishment objects

Opening/Opened - used by gates

Pickup - used by transport units

PivotRight/Left - unused as far as I can tell, defined in the exe

Pray - used by villagers

RangedAttack – linked to the RangedAttack proto action

RangedWalkAttack - an unused action, common to civilian units, usually commented out

Recover – I believe this is linked to the HeroDeath flag

Run – an unused action that is surprisingly ubiquitous especially among hunt animals, it may have been planned originally as an alternative to Walk, see discussion under That AoM Guy’s (a.k.a. aom expert’s) list of unused animations[aom.heavengames.com]. AoE3 does make use of run animations.

Swallow - unused action, used in conjunction with the swallow proto action

Talk - unused as far as I can tell, defined in the exe

TeleportIn/Out - unused action only used by Sphynx, works when linked with teleport proto action

Throw - linked to throw proto action

Walk – moves the unit by walking, rolling, sailing, flying, etc.

walkAttack – an unused action that is common among ships, it may have been an attempt at a historically accurate ramming attack for ships that was somehow different from the regular Attack action

Whirlwindattack – linked to the Whirlwindattack proto action
Anim Logic Test List
Note: I have included format examples for enteries where appropriate, for all others, assume the format of "first model when A, second model when B". Numerical logics such as damageLogic do not have to strictly follow the format example listed - for example: damageLogic 0 10 20 30 40 70 85 92 is perfectly acceptable. Unless otherwise specified, binary logic tests are of the format first=false, second=true.

AmphibiousLogic - used by the War Salamander unit to change appearence based on if the unit is on land or water, I assume these are the only allowed arguments

CarryTypeLogic - changes the model of the thing being carried, format example: CarryTypeLogic grain/meat/fish/wood/gold

CinematicLogic - first model = false, second model = true

CivilizationLogic - used exclusively by animals when converted by Set, format example: civilizationLogic none/set, lots of untapped potential with this logic

ConstructionLogic – different models used for different percentages of complete construction, used for buildings, format example: ConstructionLogic 0 33 66 99

ContainLogic – different models for if the unit is holding a relic or carrying other units such as a transport unit

CultureLogic - different models for different cultures, remember that cultures in AoM are Greek, Egyptian, etc., not to be confused with "civs" which are major gods, format example: CultureLogic Egyptian/Greek/Norse/Atlantean/Chinese

damageLogic – different models used for different percentage amounts of HP, only used for buildings as far as I know but can also be used for units, format example: damageLogic 0 25 50 75

EditorModeLogic - used by cinematic blocks, etc. to show different models depending on whether or not editor is active, first model = no editor, second model = editor

EmpowerLogic - first model = not empowered, second model = empowered

ExperienceLogic – used by Hydra and Scylla to use different models based on how many units (of a certain unit class) they’ve killed, format example: ExperienceLogic 0 25 50 75 100, this logic is probably connected to the ExperienceUnit tag in the proto

InventoryLogic - used by villagers & caravans to hold resources using the first format below and by herd animals to get fatter using the second format, format #1: InventoryLogic 0 1, format #2: InventoryLogic 25 75, the stone mine (cut object) also used this logic in a similar way to ResourceLogic, I suspect this logic predates ResourceLogic but may still work for gold mines, etc.

ResourceLogic - used by gold mines to implement different models for different levels of resource depletion, format example: ResourceLogic 100 75 50 25

TargetLogic – used for projectiles to change the model based on what the target proto unit or class is, example: Targetlogic none/mythunit

TechLogic – different models used for different active techs, format example: TechLogic none/Age 1/Age2/Age 3/Age 4

VariationLogic – random variations, for units, separating models with SetSelector brackets causes them to choose one model or the other (randomly) and continue using that model until the action is finished (for example, until retasked or the enemy unit is dead), separating only with set hotspot brackets make the choice of model random as the action is being completed (for example, the hoplite switches randomly between attack A and B animations because it doesn’t use variationlogic).

workedonLogic – different models for whether or not other units are working on the unit, for example, fish have an animation with a buoy when fishing boats are gathering from them

UpgradeLogic - used only by the town center to go from "settlement" socket to "settlement level 1" building, format example: UpgradeLogic 0 50

Unused Anim Logics: LastItemLogic, UsedLogic, ItemLogic, PowerLogic, SpriteLogic (used only by cut object palm 2x2 in an unclear manner), FrozenLogic, AgeLogic
Snds Logic List
Note: The snds files are basically the audio equivalent of the anim file in that they coordinate proto data and audio (.mp3 or .wav) assets. The snds file is only allowed to call "sets" of audio files from the soundsets-xpack.xml file. All sets consist of any number of audio files. Audio files may not be called directly in the snds file. Although similar to an anim file, the snds file lacks the same range of logic tests as you can see in the brief list below.

CultureLogic - same as anim

DamageTypeLogic - almost every object in the game has this for soundtype Hit, the choice is based on the attacking unit's soundvariant in the proto

TargetLogic - same as anim, typically used for soundtype Acknowledge

VariationLogic - same as anim
20 Comments
Callistonian  [author] Feb 23, 2023 @ 9:36pm 
Iirc, there is no tag for that, you just define which units can be garrisoned on separate lines.
QuietWarlock Feb 20, 2023 @ 1:48pm 
Is there a proto-command for the garrison function, so to give units/buildings the ability to garrison other units like the transport ship or tc? Thanks for this list :)
Venlesh  [author] Oct 2, 2021 @ 5:27pm 
As far as I'm aware, containlogic is fairly limited in what you can define. As far as I'm aware actual amounts are not affected by the anim, I believe the game only checks if there's anything contained at all. You're still free to prove me wrong on this however. :Lucca_e::Lucca_e::Lucca_e:
Stygian Emperor Oct 2, 2021 @ 1:57am 
Does ContainLogic have the ability to distinguish between amounts contained? I was thinking that a tower with more units in it could fire more times per-animation, etc. I suppose I could guess and check.
Callistonian  [author] Aug 8, 2021 @ 2:57am 
The damage per second is the proto value. The amount done per attack action changes to accommodate that. There are exceptions to this (where the type or frequency of attack actions can change dps) but I don't remember how to induce them. See my campaign titans mod for examples.
Stygian Emperor Aug 7, 2021 @ 1:19pm 
Is damage supposed to be damage per attack or damage per second? I just realized I made an assumption that it was per hit without checking first.
Stygian Emperor Aug 5, 2021 @ 3:57pm 
from this guide
"Unused Anim Logics: LastItemLogic, UsedLogic, ItemLogic, PowerLogic, SpriteLogic (used only by cut object palm 2x2 in an unclear manner), FrozenLogic, AgeLogic"

Maybe it's like, for when a certain god power is in effect?
Callistonian  [author] Aug 4, 2021 @ 5:50pm 
Is "PowerLogic" something that's missing from the list or did you just make that up?

It seems like it should be possible to change the projectile used for different attack actions in the proto, but I seem to recall that each proto object can only have one projectile object attached to it which is used for all attacks. I will see if Venlesh knows of a way to have different projectiles.
Stygian Emperor Aug 4, 2021 @ 2:24am 
Any idea what PowerLogic's format is? I would love it if there was a logic to detect whether the unit who shot a projectile was using a charge ability or a normal attack; though I suspect if there was a logic for that it would be called "ChargeLogic" or something.

Is there another way to have a unit use a different projectile for different ranged attacks? I'm basically trying to make the Shennong fire lance use a flamethrower (like the Chimera breath) as a charge ability.
XLightningStormL Sep 26, 2020 @ 9:47am 
ItemLogic might've been used for the relics in the beta to change their model depending on the type of relic it is, could be wrong.

I might try experimenting with walkattack in the proto, if it works, could be useful as a proper alt trample damage to areaattack.