At a glance
Quick facts
- Armor slots counted
- Head, necklace, armor, legs, feet, and ring
- Defense source
- Selected shield/weapon defense, relevant skill, fight mode, and vocation multiplier
- Defense roll
- Uniform random reduction from floor(defense / 2) through defense
- Armor roll
- For armor above 3, a bounded random reduction; armor 1-3 removes one point
Total armor
The reference player implementation adds armor from six enabled inventory positions: head, necklace, body armor, legs, feet, and ring. It then multiplies the sum by the vocation armor multiplier and returns an integer. Backpacks, ammunition, and hand slots do not contribute to this armor sum unless a fork changes the code or exposes protection through another ability.
A = trunc((A_head + A_neck + A_body + A_legs + A_feet + A_ring) x M_armor)- A_slot is the armor attribute of the enabled item in that slot.
- M_armor is the vocation armor multiplier; the stock TFS 1.6 vocation data uses 1.0.
- Custom sets may also carry percentage resistance that is applied separately from armor.
When an incoming attack requests an armor check and total armor is greater than three, the engine subtracts a random integer between armor divided by two and armor minus either one or two. Odd and even totals therefore have slightly different upper bounds. If armor is one, two, or three, the reduction is exactly one.
| Total armor | Minimum reduction | Maximum reduction | Notes |
|---|---|---|---|
| 3 | 1 | 1 | Small-armor branch |
| 10 | 5 | 9 | Even total: upper bound A - 1 |
| 11 | 5 | 9 | Odd total: upper bound A - 2 |
| 30 | 15 | 29 | Average roll is near 22 |
| 45 | 22 | 43 | Vocation multiplier already included |
Defense value and shield selection
The engine first finds a weapon and the strongest shield or quiver defense in the two hand slots. With a shield, shielding skill becomes the defense skill. The shield defense value is used, and a wielded weapon can contribute its extra-defense attribute. Without a shield, weapon defense and the weapon skill are used. With neither, fist skill and a base defense value of seven apply.
DEF = trunc((S / 4 + 2.23) x V x 0.15 x F_mode x M_defense)- S is shielding skill with a shield, the weapon skill with a weapon, or fist skill when unarmed.
- V is shield defense plus weapon extra defense, weapon defense plus extra defense, or 7 when unarmed.
- F_mode is the current fight-mode defense factor.
- M_defense is the vocation defense multiplier.
| Fight mode | After a recent attack | When the attack interval has elapsed |
|---|---|---|
| Offensive | 0.50 | 1.00 |
| Balanced | 0.75 | 1.00 |
| Defensive | 1.00 | 1.00 |
For an eligible defense event, the engine subtracts a uniformly selected integer between half of DEF and DEF. If that reduction reaches or exceeds the incoming damage, the hit is marked as blocked by defense and the armor check is skipped. Defense therefore has both magnitude and event-frequency behavior; a large theoretical value does not mean every simultaneous attacker is fully checked.
Worked shield example
Take shielding skill 90, shield defense 35, no weapon extra defense, and a 1.0 vocation multiplier. In defensive mode, DEF is trunc((90 / 4 + 2.23) x 35 x 0.15), which is 129. The random defense reduction is therefore 64 through 129. In balanced mode immediately after attacking, the 0.75 factor lowers DEF to 97, producing a 48 through 97 reduction range.
DEF = trunc((90 / 4 + 2.23) x 35 x 0.15 x 1.00 x 1.00) = 129- Eligible reduction range: uniform_random(64, 129).
What Open Tibia servers commonly change
- Vocation armor and defense multipliers, especially on promoted or custom vocations.
- Shield block frequency, dual wield behavior, two-handed weapon defense, and quiver handling.
- Fight-mode factors and attack-speed interactions.
- Whether spells, runes, fields, or monster attacks request defense and armor checks.
- Upgrade systems that add armor, defense, percentage protection, reflection, dodge, or resilience.
- Custom formulas implemented in Lua callbacks after the engine has already performed its native block calculation.
Apply the guide
Find servers using this profile
Server names, protocol labels, and map labels do not guarantee matching mechanics. Use these filters to find candidates, then verify the listing, owner documentation, and deployed ruleset.
