Damage increase cap.

Share your guides, how-tos, FAQs, and so forth. This is not for support -- post questions in General Discussion.
LouisCOV
Posts: 189

Damage increase cap.

Post by LouisCOV »

Is there any cap for damage increase in pvm?
Is it like that?
Tactics Damage Bonus = (120 / 1.6) + 6.25 = 81.25%

Anatomy Damage Bonus = (120 / 2) + 5 = 65%

Lumberjacking Damage Bonus = 0/5 = 0

Strength Damage Bonus = (125 * 0.3) + 5 = 42.5%

Damage Increase from Items = 100%

Total Damage Bonus = 81.25 + 65 + 0 + 42.5 + 100 = 288.75%

Uoguide source.
User avatar
Calvin
Posts: 5686
Location: UK

Re: Damage increase cap.

Post by Calvin »

sort of...

Code: Select all

			#region Damage Multipliers
			/*
			 * The following damage bonuses multiply damage by a factor.
			 * Capped at x3 (300%).
			 */
			int percentageBonus = 0;

			WeaponAbility a = WeaponAbility.GetCurrentAbility( attacker );
			SpecialMove move = SpecialMove.GetCurrentMove( attacker );

			if( a != null )
			{
				percentageBonus += (int)(a.DamageScalar * 100) - 100;
			}

			if( move != null )
			{
				percentageBonus += (int)(move.GetDamageScalar( attacker, defender ) * 100) - 100;
			}

			percentageBonus += (int)(damageBonus * 100) - 100;

			CheckSlayerResult cs = CheckSlayers( attacker, defender );

			if ( cs != CheckSlayerResult.None )
			{
				if ( cs == CheckSlayerResult.Slayer )
					defender.FixedEffect( 0x37B9, 10, 5 );

				percentageBonus += 100;
			}

			if ( !attacker.Player )
			{
				if ( defender is PlayerMobile )
				{
					PlayerMobile pm = (PlayerMobile)defender;

					if( pm.EnemyOfOneType != null && pm.EnemyOfOneType != attacker.GetType() )
					{
						percentageBonus += 100;
					}
				}
			}
			else if ( !defender.Player )
			{
				if ( attacker is PlayerMobile )
				{
					PlayerMobile pm = (PlayerMobile)attacker;

					if ( pm.WaitingForEnemy )
					{
						pm.EnemyOfOneType = defender.GetType();
						pm.WaitingForEnemy = false;
					}

					if ( pm.EnemyOfOneType == defender.GetType() )
					{
						defender.FixedEffect( 0x37B9, 10, 5, 1160, 0 );

						percentageBonus += 50;
					}
				}
			}

			int packInstinctBonus = GetPackInstinctBonus( attacker, defender );

			if( packInstinctBonus != 0 )
			{
				percentageBonus += packInstinctBonus;
			}

			if( m_InDoubleStrike )
			{
				percentageBonus -= 10;
			}

			TransformContext context = TransformationSpellHelper.GetContext( defender );

			if( (m_Slayer == SlayerName.Silver || m_Slayer2 == SlayerName.Silver) && context != null && context.Spell is NecromancerSpell && context.Type != typeof( HorrificBeastSpell ) )
			{
				// Every necromancer transformation other than horrific beast takes an additional 25% damage
				percentageBonus += 25;
			}

			if ( attacker is PlayerMobile && !(Core.ML && defender is PlayerMobile ))
			{
				PlayerMobile pmAttacker = (PlayerMobile) attacker;

				if( pmAttacker.HonorActive && pmAttacker.InRange( defender, 1 ) )
				{
					percentageBonus += 25;
				}

				if( pmAttacker.SentHonorContext != null && pmAttacker.SentHonorContext.Target == defender )
				{
					percentageBonus += pmAttacker.SentHonorContext.PerfectionDamageBonus;
				}
			}

			BaseTalisman talisman = attacker.Talisman as BaseTalisman;

			if ( talisman != null && talisman.Killer != null )
				percentageBonus += talisman.Killer.DamageBonus( defender );

			percentageBonus = Math.Min( percentageBonus, 300 );

			damage = AOS.Scale( damage, 100 + percentageBonus );
			#endregion
User avatar
Calvin
Posts: 5686
Location: UK

Re: Damage increase cap.

Post by Calvin »

for some reason it wont let me post the other bit
User avatar
Calvin
Posts: 5686
Location: UK

Re: Damage increase cap.

Post by Calvin »

Code: Select all

			#region Modifiers
			/*
			 * The following are damage modifiers whose effect shows on the status bar.
			 * Capped at 100% total.
			 */
			int damageBonus = AosAttributes.GetValue( attacker, AosAttribute.WeaponDamage );

			// Horrific Beast transformation gives a +25% bonus to damage.
			if( TransformationSpellHelper.UnderTransformation( attacker, typeof( HorrificBeastSpell ) ) )
				damageBonus += 25;

			// Divine Fury gives a +10% bonus to damage.
			if ( Spells.Chivalry.DivineFurySpell.UnderEffect( attacker ) )
				damageBonus += 10;

			int defenseMasteryMalus = 0;

			// Defense Mastery gives a -50%/-80% malus to damage.
			if ( Server.Items.DefenseMastery.GetMalus( attacker, ref defenseMasteryMalus ) )
				damageBonus -= defenseMasteryMalus;

			int discordanceEffect = 0;

			// Discordance gives a -2%/-48% malus to damage.
			if ( SkillHandlers.Discordance.GetEffect( attacker, ref discordanceEffect ) )
				damageBonus -= discordanceEffect * 2;

			if ( damageBonus > 100 )
				damageBonus = 100;
			#endregion

			double totalBonus = strengthBonus + anatomyBonus + tacticsBonus + lumberBonus + ((double)(GetDamageBonus() + damageBonus) / 100.0);

			return damage + (int)(damage * totalBonus);
		}
User avatar
Calvin
Posts: 5686
Location: UK

Re: Damage increase cap.

Post by Calvin »

wont let me post the other part...

it's this bit and the top post
Image
User avatar
Calvin
Posts: 5686
Location: UK

Re: Damage increase cap.

Post by Calvin »

Image
User avatar
Shallan
Posts: 1483

Re: Damage increase cap.

Post by Shallan »

Lumber suck. Tried it with 100 anat and 120 tact on Sampire with Dobule Axe demon slayer on Para Balrons , didnt see diffrence.
___________________________________

UABOF - Users against Bullshit on forum.
LouisCOV
Posts: 189

Re: Damage increase cap.

Post by LouisCOV »

Thanks Calvin but what I want to know is: the max possible with items is 100%? If I exceed 100% it doens't make difference?
Calvin likes this.
Top
Arden
Posts: 1703

Re: Damage increase cap.

Post by Arden »

LouisCOV wrote: January 24th, 2020, 1:32 pm Thanks Calvin but what I want to know is: the max possible with items is 100%? If I exceed 100% it doens't make difference?
100% is cap from items
Valkyrie
Posts: 1096

Re: Damage increase cap.

Post by Valkyrie »

Divine fury also is count as item damage incrase So can go 90di +divine fury for 100,but cant go 100+divine
Don't gain the world and lose your soul; wisdom is better than silver or gold.


Discord: Maya/FireFly#0573
Calvin likes this.
Top
User avatar
Calvin
Posts: 5686
Location: UK

Re: Damage increase cap.

Post by Calvin »

see line 2255 and 2256
User avatar
Calvin
Posts: 5686
Location: UK

Re: Damage increase cap.

Post by Calvin »

anything which is not changing the variable "damageBonus", is outside of the 100% cap.

there's also "percentageBonus" which is like your slayer and stuff.
and "damage"

"damage" is coming from your str, tactics, anatomy, and lumber...

it says tactics gives -50% at zero, base wep damage at 50, and +50% at GM...
lumber and anatomy give 1% per 5 points, and a 10% bonus for GM
str gives 1% bonus for every 5 str.

but these are the annotations, so it's what it should be doing... i assume it's tested and does actually do that.

if you look at the code tho, it all works in a bit of a weird way. see they didn't replace the old code, just sort of fitted an adaptor to make it all into AOS.. but because of that it's kinda messy and there's a lot of redundant code

oh ffs it's not letting me post the code again and i just lost the reply...


im gonna use a naming convention for variables to explain this, so when it's m_ that means it's a variable, ie. a number that changes.

m_damage is derived from your tactics and the weapon you are using.
m_damage is then changed by m_modifiers.
m_modifiers is set by your str, anat, and lumber.
m_damage then gets passed to the next part where it's effected by m_damageBonus.
m_damageBonus is the number you can see in your profile and is capped at 100%. <this is the only number that is physically capped
m_damage has now been changed by m_modifiers, and m_damageBonus.
it is then passed to m_percentageBonus which is like honour, slayer, talisman.


i have no idea what VirtualDamageBonus is, or why it's looking at the quality of the weapon... assuming this is some old code
User avatar
Calvin
Posts: 5686
Location: UK

Re: Damage increase cap.

Post by Calvin »

i might be looking at the pre-aos code for the "modifiers" and "damage" variables... im not sure tbh, there's also this:

Code: Select all

			#region Physical bonuses
			/*
			 * These are the bonuses given by the physical characteristics of the mobile.
			 * No caps apply.
			 */
			double strengthBonus = GetBonus( attacker.Str,										0.300, 100.0,  5.00 );
			double  anatomyBonus = GetBonus( attacker.Skills[SkillName.Anatomy].Value,			0.500, 100.0,  5.00 );
			double  tacticsBonus = GetBonus( attacker.Skills[SkillName.Tactics].Value,			0.625, 100.0,  6.25 );
			double   lumberBonus = GetBonus( attacker.Skills[SkillName.Lumberjacking].Value,	0.200, 100.0, 10.00 );

			if ( Type != WeaponType.Axe )
				lumberBonus = 0.0;
			#endregion
which is possibly more recent code and does it in a totally different way...

the damageBonus, and percentageBonus ones are really simple tho.
if all you're asking is what is the cap on damageBonus, then yeah it's 100. hence the line which says if it's over 100, set it to 100
User avatar
Calvin
Posts: 5686
Location: UK

Re: Damage increase cap.

Post by Calvin »

Code: Select all

		public virtual double GetBonus ( double value, double scalar, double threshold, double offset )
			double bonus = value * scalar;
			i----f  ( value >= threshold )
				bonus += offset;
			return bonus / 100;
wow it's the if statement that is crashing the page on post... mental

your guess as good as mine on that one tho... i think the scaler is like the conversion from pre-aos, but not sure at all

basically the last 2 multipliers are easy, but what goes on before that with your stats/skills, to get the number to be modified, is a bit of a mystery.. not rly my language this tbh, i just looked it up and double just means you're declaring a more precise variable than a float, so with more decimal places.. you'd think 7 would be enough... but i suppose if you're mathing it then it should be accurate for the calculations

Code: Select all

			if ( Core.AOS ) return damage;

			/* Apply damage level offset
			 * : Regular : 0
			 * : Ruin    : 1
			 * : Might   : 3
			 * : Force   : 5
			 * : Power   : 7
			 * : Vanq    : 9
			 */
			if ( m_DamageLevel != WeaponDamageLevel.Regular )
				damage += (2 * (int)m_DamageLevel) - 1;

			return damage;
or maybe this is the old code....
Last edited by Calvin on January 27th, 2020, 6:30 am, edited 1 time in total.
Arden
Posts: 1703

Re: Damage increase cap.

Post by Arden »

Dont post these messages if you cant read the code.....
Last edited by Arden on January 27th, 2020, 6:31 am, edited 1 time in total.
Post Reply