Something that bugs me about current damage calculation

Discussion about the WoD
Post Reply
Agata
Developer
Posts: 715
Joined: Sun Sep 11, 2011 3:36 pm

Something that bugs me about current damage calculation

Post by Agata » Wed Jan 30, 2013 5:38 pm

Some of you might have noticed you do lots of 1 damage against the strong monsters, and they do lots of damage to you. It has always been like this on WoD, but veteran WoD players never noticed because old client 2.0.0b doesn't show you the damage numbers, while our new client 7.0.15.1 does. I have been reviewing this, and would like to change it. Here is how it currently works:

Code: Select all

	//Hit! Figure out how much raw damage the attack did, then modify it be tactics and strength
	var raw_damage := CalculateAttackDamage ();
	var modified_damage := CINT ((raw_damage * (GetAttribute (attacker, ATTRIBUTEID_TACTICS) + 50 + CINT (GetAttribute (attacker, ATTRIBUTEID_STRENGTH)/5)))/100);

	//Get the defender's AR rating and reduce the damage by 50-100% of that value
	var defender_ar := CINT (GetDefendersAR (defender)/2);
	if (defender_ar > 0)
		modified_damage := modified_damage - RandomInt (defender_ar) - defender_ar - 1;
	endif

	//Always do at least 1 damage
	if (modified_damage < 1)
		modified_damage := 1;
	endif

	//Now check parry, if the defender has a shield
	var shield := GetEquipmentByLayer (defender, LAYER_HAND2);
	if (shield and IsShield (shield))
		var defender_parry_skill := GetAttribute (defender, ATTRIBUTEID_PARRY);
		if (RandomInt (200) < defender_parry_skill)
			//Successful parry, reduce damage
			modified_damage := modified_damage - shield.ar;
			SendSysMessage (defender, "You parry the attack!");

			//if no damage left, quit now
			if (modified_damage <= 0)
				return 1;
			endif
		endif
	endif

	//Players take 1/2 damage
	if (defender.acctname)
		modified_damage := CINT (modified_damage/2);
	endif

	//Do the damage
	DoDamageByType (attacker, defender, modified_damage, DAMAGETYPE_PHYSICAL);

	//Check for critical hit
	if (GetAttribute (attacker, ATTRIBUTEID_ANATOMY))
		if (RandomInt (1000) < GetAttribute (attacker, ATTRIBUTEID_ANATOMY))
			SendSysMessage (attacker, "Critical hit!");
			if (CheckSkill (attacker, SKILLID_ANATOMY, 80, 0) )
				DoDamageByType (attacker, defender, modified_damage, DAMAGETYPE_PHYSICAL);
			else
				DoDamageByType (attacker, defender, CINT (modified_damage/2), DAMAGETYPE_PHYSICAL);
			endif
		endif
	endif

The CalculateAttackDamage() function determines the weapon damage based on weapon type, quality and current weapon hp. For our evaluations we will focus on a magical (exceptional, 1.2 multiplier) weapon with full hp. Lets ignore Parry and Critical Hits for now and focus on this case:

Attacker with 100 Str, 100 Tactics, and a rune blade of destruction (OLD DAMAGE before I did some changes to weapon damage (4d6+8) * 1.2 )
Defender is an Ancient Dragon (40 AR, 600 str)

Min raw damage: 14
Avg raw damage: 26
Max raw damage: 38

Min damage modified by Str and Tactics: 23
Avg damage modified by Str and Tactics: 44
Max damage modified by Str and Tactics: 64

Minimum reduction for 40 AR: 20
Average reduction for 40 AR: 30
Maximum reduction for 40 AR: 40

======
VS NPC
======
Min damage vs Maximum reduction: 1
Avg damage vs Maximum reduction: 4
Max damage vs Maximum reduction: 24

Min damage vs Average reduction: 1
Avg damage vs Average reduction: 14
Max damage vs Average reduction: 34

Min damage vs Minimum reduction: 3
Avg damage vs Minimum reduction: 24
Max damage vs Minimum reduction: 44

=========
VS PLAYER WITH 40 AR (current scripts halve damage done to players)
=========
Min damage vs Maximum reduction: 1
Avg damage vs Maximum reduction: 2
Max damage vs Maximum reduction: 12

Min damage vs Average reduction: 1
Avg damage vs Average reduction: 7
Max damage vs Average reduction: 17

Min damage vs Minimum reduction: 1
Avg damage vs Minimum reduction: 12
Max damage vs Minimum reduction: 22
=============
Now lets think of an ancient dragon...
600 str, 100 tactics, damage 7d6+12

Min raw damage: 19
Avg raw damage: 36
Max raw damage: 54

Min damage modified by Str and Tactics: 51
Avg damage modified by Str and Tactics: 97
Max damage modified by Str and Tactics: 145

======
VS NPC
======
Min damage vs Maximum reduction: 11
Avg damage vs Maximum reduction: 57
Max damage vs Maximum reduction: 105

Min damage vs Average reduction: 21
Avg damage vs Average reduction: 67
Max damage vs Average reduction: 115

Min damage vs Minimum reduction: 31
Avg damage vs Minimum reduction: 77
Max damage vs Minimum reduction: 125

=========
VS PLAYER WITH 40 AR (current scripts halve damage done to players)
=========
Min damage vs Maximum reduction: 5
Avg damage vs Maximum reduction: 28
Max damage vs Maximum reduction: 52

Min damage vs Average reduction: 10
Avg damage vs Average reduction: 33
Max damage vs Average reduction: 57

Min damage vs Minimum reduction: 15
Avg damage vs Minimum reduction: 38
Max damage vs Minimum reduction: 62


=============================================
The problem with this formula is: It doesn't scale. so strong monsters deal lots of damage and the armor absorption becomes insignificant.

I have been exploring a new proposal and will be posting it here later today.
I'm familiar with the acacia. I know how immortality is achieved.

Agata
Developer
Posts: 715
Joined: Sun Sep 11, 2011 3:36 pm

Re: Something that bugs me about current damage calculation

Post by Agata » Wed Jan 30, 2013 8:48 pm

The new proposal is to change the Armor Protection to Percentual. First I would change the Armor Ratings to the following:

Type, Normal AR, Exceptional AR, Invulnerability AR
Leather, 30, 36, 46
Studded, 35, 42, 52
Bone, 38, 45, 55
Ringmail, 40, 48, 58
Chainmail, 45, 54, 64
Platemail, 50, 60, 70

Now with this percentual protection, the reduction is fixed, and the only random thing is the damage. Against the same Ancient Dragon from the old post, we get the following (assuming we don't change the dragon's AR)

Player with 100 Str and 100 Tactics and (4d6+8)*1.2 damage weapon
Min damage modified by Str and Tactics: 23
Avg damage modified by Str and Tactics: 44
Max damage modified by Str and Tactics: 64

======
VS 40 AR
======
Min damage: 13
Avg damage: 26
Max damage: 38

=========
VS 70 AR (platemail of invulnerability) without halving the damage
=========
Min damage: 6
Avg damage: 13
Max damage: 19
==================================
Now lets think of an ancient dragon...
600 str, 100 tactics, damage 7d6+12
Min damage modified by Str and Tactics: 51
Avg damage modified by Str and Tactics: 97
Max damage modified by Str and Tactics: 145

======
VS 40 AR
======
Min damage: 30
Avg damage: 58
Max damage: 87

=========
VS 70 AR (platemail of invulnerability) without halving the damage
=========
Min damage: 15
Avg damage: 29
Max damage: 43
========================
This gives us a more decent armor rating. Please note that in these calculations, I am NOT halving the damage for players. Think of your henchmen having armor this good, they will survive. I think it wouldn't be necessary to halve the damage done to players anymore, as the armor ratings now scale.

Even if the damage from the ancient dragon vs 40 AR seems high, remember that is most likely to be a newbie character, the mages fighting ancients will usually have studded or bone armor of protection at least (48 and 51 AR respectively), and there are buff spells like Protection, which can raise your AR by around 15, plus Polymorph and Liche giving an additional 6-8 AR.

As for the limits on how much total AR a player can have, I plan it to be 75, just to make sure the magical buffs don't overpower anyone.

===

As for weapon damage, I already raised it a bit, and made the damage less random. I haven't updated the WoD Manual with the data because I don't want to change it over and over, but you can test the new higher weapon damages right now. The max damage is the same as in the manual, the only difference is the min damage, which is considerably higher.
I'm familiar with the acacia. I know how immortality is achieved.

User avatar
Sei Ryu
Admirable
Admirable
Posts: 135
Joined: Wed Jul 13, 2011 5:52 am

Re: Something that bugs me about current damage calculation

Post by Sei Ryu » Wed Jan 30, 2013 10:52 pm

Go for it. That will definitely make things better, and less confusing :)
Gradilla Dragon
-=={UDIC}==-
Chars: Sighard Kharada, Taliaali Kharada, Walja Kharada, Zebey Kharada, Sarinder Kharada, Maedhros Kharada

Jon Leir
Prominent
Prominent
Posts: 21
Joined: Mon Jan 21, 2013 9:38 pm

Re: Something that bugs me about current damage calculation

Post by Jon Leir » Thu Jan 31, 2013 6:26 am

I agree, go for it. With the percentage scaling it will allow for future development of new mobs and armors. I have not been to the new lands yet but I believe this change will help smooth out game play, making the damage less random and more natural feeling. If I'm fighting a Giant Ancient Dragon it shouldn't hit me for 1 damage, it has big mean teeth ;).

Plus this allows for henchmen to be useful, they felt as if they got in the way the other night while I was hunting and not a needed part of my hunt. as they could not hold their own even for a few seconds against the trolls I was fighting

My 2 cents
Jon Leir

Lancelot
Prominent
Prominent
Posts: 10
Joined: Tue Apr 03, 2012 9:22 pm

Re: Something that bugs me about current damage calculation

Post by Lancelot » Thu Jan 31, 2013 6:30 am

40 AR is kind of low though. I usually have around 58-65 when buffed, no shield. I killed a couple Ancient Dragons the other day with my brother when we cleared Despise and sure, they hit hard, but it wasn't unmanageable. My brother could pretty much just sit there and tank with a shield on. We still had to kite them a little though.

Ancient Dragons feel like they are in a good place challange wise. I do see how all this could become a problem though in the harder area. If only there was an easy way to have two different sets of rules, one for each area.

Agata
Developer
Posts: 715
Joined: Sun Sep 11, 2011 3:36 pm

Re: Something that bugs me about current damage calculation

Post by Agata » Thu Jan 31, 2013 7:10 am

It's fine for players, since the combat scripts multiply the players' defense chance by 1.2 and divides the damage they receive by 2, but a henchman is very easy to hit by an Ancient Dragon (they have 150 Wrestling), and they are a 1-hit kill to them even while fully buffed.
I'm familiar with the acacia. I know how immortality is achieved.

Agata
Developer
Posts: 715
Joined: Sun Sep 11, 2011 3:36 pm

Re: Something that bugs me about current damage calculation

Post by Agata » Thu Jan 31, 2013 5:03 pm

Okay, the changes are up for everyone to try, and the player AR cap is 85. It is definitely necessary against the new strong monsters with their stats updated.

I made a new character named Amanda for testing. So far the graveyard is fine, just the skeleton archers that hit HARD. It's advised to new characters to have at least 60 parry and a shield.

In the following days I will be updating the enemies' Armor Rating, so in the meantime some of them might seem about right and others might seem too weak.

Monsters in Tokuno already have their AR updated.
I'm familiar with the acacia. I know how immortality is achieved.

User avatar
Sei Ryu
Admirable
Admirable
Posts: 135
Joined: Wed Jul 13, 2011 5:52 am

Re: Something that bugs me about current damage calculation

Post by Sei Ryu » Thu Jan 31, 2013 5:22 pm

Tested in Tokuno, the hiryu is tough but manageable. The oni is very tough as well, but I could kill it. So far seems good.
Gradilla Dragon
-=={UDIC}==-
Chars: Sighard Kharada, Taliaali Kharada, Walja Kharada, Zebey Kharada, Sarinder Kharada, Maedhros Kharada

Agata
Developer
Posts: 715
Joined: Sun Sep 11, 2011 3:36 pm

Re: Something that bugs me about current damage calculation

Post by Agata » Fri Feb 01, 2013 7:29 pm

All monsters and NPCs had their AR updated.
I'm familiar with the acacia. I know how immortality is achieved.

Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot] and 1 guest