I have been working on a T2A shard for a very long time, and I'm very advanced, however there's a thing I have never been able to put my finger on, because it's a complete mystery.

I've solved the "1 damage" thing when it comes to PvP, but it's when it comes to monsters that I'm having trouble. They are using Virtual Armors, and I have no idea how to make it era accurate...

When I compare my scripts to UO : Rebirth, this is what I realize :

- All monsters have half Virtual Armor of what mine have. Example : Liches on Rebirth have 25 virtual armors, while the basic RunUO one has 50... And it's like this for all monsters.
- The RunUO Basic formula for Virtual armor in BaseWeapon is :

Code:
			int virtualArmor = defender.VirtualArmor + defender.VirtualArmorMod;

			if ( virtualArmor > 0 )
			{
				double scalar;

				if ( chance < 0.14 )
					scalar = 0.07;
				else if ( chance < 0.28 )
					scalar = 0.14;
				else if ( chance < 0.42 )
					scalar = 0.15;
				else if ( chance < 0.56 )
					scalar = 0.22;
				else
					scalar = 0.35;

				int from = (int)(virtualArmor * scalar) / 2;
				int to = (int)(virtualArmor * scalar);

				damage -= Utility.Random( from, (to - from) + 1 );
			}

			return damage;

The one of Rebirth is :

Code:
			int virtualArmor = ( defender.VirtualArmor + defender.VirtualArmorMod );
			if ( virtualArmor > 0 )
				damage -= Utility.RandomMinMax( virtualArmor / 2, virtualArmor ) / 2;

			return damage;

It seems to be VERY simplified! Anyone old enough to tell me what would be accurate for T2A? I was way too young when I used to play the original one so I have no idea what it was like even if I was testing them myself!

Also :
- I had found a waybackmachine page that lists all the T2a weapon damages and speeds, but there exists no page (or at least that I can find) that would list the virtual armors of all monsters back in T2A.

Thanks for your help if I can get any :)
 
They are using data from the demo.

VirtualArmors real name in the demo is naturalac and is short for Natrual Armor Class.

A Orc Captain looks like this:
[article]
# orc captain Difficulty 6
<type NORMAL ORC_CAP>
<frequency 95>
<region { ORCCAPSMALL 0 ORCCAPMEDIUM 0 ORCCAPLARGE 0 FORESTNOTNEARTOWN 0 DARKFOREST 0 DARKERFOREST 0 ORCCAMP 0 ORC 0 } >
<regionlimit { ORCCAPSMALL 3 ORCCAPMEDIUM 8 ORCCAPLARGE 18 FORESTNOTNEARTOWN 5 DARKFOREST 15 DARKERFOREST 25 ORCCAMP 15 ORC 2 } >
<sex OTHER>
<name 538>
<corpsename Orcish>
<alignment EVIL>
<notoriety -125>
<objvar int spellCastersLevel 1d3+1>
<objvar int nonHuman 0>
<script nonhuman>
<script nonhumaneq>
<script loot>
<sfxnotice monster_orc1>
<sfxidle monster_orc2>
<sfxhit monster_orc3>
<sfxwashit monster_orc4>
<sfxdie monster_orc5>
<strength 1d35+110>
<intelligence 1d25+85>
<dexterity 1d35+100>
<hp 1d35+110>
<mana 1d25+85>
<stamina 1d35+100>
<sk skill_melee 1d150+850>
<sk skill_magic_defense 1d150+700>
<sk skill_battle_defense 1d250+700>
<sk skill_magic 1d250+600>
<sk skill_weapon_slashing 1d250+700>
<naturalwc 2d9>
<naturalac 17>
<eq { rich_backpack 3 filthyrich_backpack 1 } 0 0 1>
<eq thigh_boots 0 0 1 SELFCONTAINED>
<eq { random_jewel 1 0 1 } 0 0 1 SELFCONTAINED>
<friends { 538 0 602 0 603 0 542 0 }>
<resource food 15 3 MEAT>
<resource shelter 576 1 CAVES>
<resource shelter 576 1 DUNGEONS>
<resource shelter 64 1 ORCCAMP>
<resource production 9 0 CARNIVOREMEAT>
<resource production 16 1 ORCCAMP>
<resource desire 1 -3 DANGER>
<resource desire 5 1 SELF>
<@@@ END @@@>
[/article]

Here are some links added.
[article]
Demo info collector script for OSI developers.
https://github.com/Grimoric/UODEMO/blob/master/scripts.uosl/info.uosl.q

The datafile with all monsters and NPCs
https://github.com/Grimoric/UODEMO/blob/master/bank/templatestable.dat.q
[/article]

Here is a Bardiche with all old stats
[article]
weapon.1:Name: Bardiche
weapon.1-Weapon Class: 4d8+3
weapon.1-Armor Class: 0
weapon.1-Hit Points: 30+1d70
weapon.1-Speed: 30
weapon.1-Range: 1
weapon.1-Min Range: 0
weapon.1-Type: Slashing
weapon.1-Handedness: Twohanded
weapon.1-Strength Needed: 40
weapon.1-Ammo Type: 0
weapon.1-Bow: 0
weapon.1-HitFx: 566
weapon.1-MissFx: 569

All data can be found here:
https://github.com/Grimoric/UODEMO/blob/master/weapons/stats.q
[/article]
- Grim
 
Last edited:
Wow those links are a lot of help I did not know these sources!

Okay RIGHT so practically :

1. From what I'm noticing, there's a pattern in which NaturalAC is being half of what Virtual Armors are in the RunUO Scripts. So if I lower all of these VirtualArmors by 50%, then it should be the equivalent.

2. But as for the formula in BaseWeapon... any idea in what script I'm going to find how the damages were calculated? or I have to go through all 2000 scripts named with a number? xD If it doesn't exist anywhere might as well tell me now or I'mm waste a whole week hahaha
 
Some of the code is functions inside the exe file. The only call we have is attack(mob_attacker, mob_target) and we can't see the calculations in a internal function. The demo have to be run with IDA dissembler to see what is happen in the internal function.
 
According to stratics in 1999, damage absorbed by armor was equal to between half to 100% of the base AR rating of the hit location.

In pre AOS RunUO, there is a major problem with this calculation when it is done for VirtualArmor. The problem with RunUO's interpretation of it is that it simulates a "hit location" and then scales armor based off that. This is incorrect since monsters do not have individual pieces of armor - they have a flat base armor rating.

Rebirth has it almost right. Take a look at: http://web.archive.org/web/20000306053659/http://uo.stratics.com/combat.htm#8

Note that
  • 5 base armor rating = 3-5 damage reduction
  • 10 base armor rating = 5-10 damage reduction
Using the Rebirth formula you get:
  • 5 base armor rating = 2-5 damage reduction (integers!)
  • 10 base armor rating = 5-10 damage reduction
The odd thing is that damage reduction is once again halved in the Rebirth script, which I'm not entirely sure about. It's either a mistake or they found something in the demo suggesting this. This makes the final Rebirth values:
  • 5 base armor rating = 1-2 damage reduction
  • 10 base armor rating = 2-5 damage reduction
 
Back