You need to import the functions you are using something like
import { addAnimals, addBerries, addBluffs, addDecoration, addForests, addHills, addLayeredPatches,
addMetal, addStone, addStragglerTrees, createBluffsPassages, markPlayerAvoidanceArea } from
"maps/random/rmgen2/gaia.js";
Armor penetration created a bunch of balance issues in AoE2. Armor shouldn't ever be ignored, but we do need to correct the damage reduction formula to not give so much reduction at lower levels.
I want to do something like this:
<Melee>
<AttackName>Mace</AttackName>
<Damage>
<Crush>10</Crush>
</Damage>
<IgnoreArmor>
<Multiplier>0.5</Multiplier>
<Classes>Infantry Cavalry</Classes>
</IgnoreArmor>
<MaxRange>4</MaxRange>
<PrepareTime>500</PrepareTime>
<RepeatTime>1000</RepeatTime>
<PreferredClasses datatype="tokens">Unit+!Ship</PreferredClasses>
</Melee>
So in this example 5 damage would be affected by the opponent's armor value, 5 damage goes straight through.
This functionality is then used for e.g. maces as they were often used against heavily armored foes because even though they could not penetrate the armor they could stop the wearer by brute kinetic force.