Skip to content

Resistances

The five resistances of the AOS era: every mobile resists physical, fire, cold, poison and energy damage by a percentage, and a blow, a spell or a poison tick of that element is lessened by it. They are off by default, as the classic ruleset has none: turn them on with resistances = true in [ultima.combat].

  • A player resists what its worn armor gives, by the graphic of each piece, from data/armor_resistances.toml (a piece that is not in the table gives none), plus the numbers it has of its own (none, unless a script sets them). The total is kept between -70 and 70. A root from before the file has no table: the server says so in a warning when the resistances are on.
  • An NPC resists the numbers of [mobile.resistances] in its template (dice in percent, unset is 0) and the same worn armor. The total is kept between -100 and 100: at 100 it takes the minimum, and below 0 it takes more.

With the switch on, a blow that has an element is d × (100 − r) / 100 (d the damage, r the resistance), at least 1.

Damage Element
a melee blow and a shot physical
a poison tick poison
a spell the element the spell declares (below)
a field, an explosion or a trap the element it declares: fire (fire field, explosion potion, explosion trap), poison (gas trap), energy (magic trap), physical (dart trap)
any other damage with no element (a special move’s extra blow, a script that does not say) none: it is not resisted
  • Melee and ranged no longer go through the roll of the armor. They use the physical resistance instead, as the AOS does; a shield’s parry still happens first. A creature with armor in its template but no [mobile.resistances] fights differently from the classic ruleset: it has no physical resistance. The piece of armor the blow lands on still wears down. Protection and Arch Protection, which add to the armor roll, do nothing against a blow while the resistances are on (they would be a resistance buff, not built).
  • Armor Ignore (a weapon special move) skips the resistance too.
  • Poison: each tick of a poisoned mobile is lessened by its poison resistance.
  • With the switch off nothing changes: the armor roll lessens a blow and the elements are not read.
Element Spells
fire Magic Arrow, Fireball, Explosion, Flame Strike, Meteor Swarm
cold Harm, Mind Blast, Wither
energy Energy Bolt, Lightning, Chain Lightning
poison Poison Strike, Strangle
physical Earthquake

Pain Spike is a direct wound with no element, as in ModernUO. The elements are those ModernUO gives each spell.

combat.harm(target, damage, attacker, kind, element) takes the element as a last, optional argument: "physical", "fire", "cold", "poison" or "energy" (an unknown name hurts nothing and returns false). The spell helpers magic.harm, magic.harm_after and magic.bolt take it as their last argument too; a new damage spell passes the element of its damage (a test keeps it from forgetting).

Resistance buffs and curses of spells (Protection, Bless of the paladin, Curse), resistances on weapons and jewelry, and the resistance of a creature’s natural armor beyond its template.

With the switch on, the status bar of a player shows the real resistances (its own and its armor’s, kept to the cap), and a client from 7.0.30 (not Kingdom Reborn) also gets the maximum of each (70) in the extended status (packet 0x11), at login and after. The bar is sent again when a piece is worn, taken off or dropped, and when the player dies or rises. With the switch off the bar is the classic one: the numbers of the mobile and the armor rating in the physical field.

Made with ❤️ by Tom

Buy me a coffee