weapon damage

Discussion in 'Bug Reports' started by Erlkonig, Jan 21, 2016.

  1. Erlkonig

    Erlkonig Well-Known Member
    UO:R Subscriber

    Joined:
    Jun 14, 2015
    Messages:
    1,131
    Likes Received:
    1,165
    get your shit together uor. go delete baseweapons.cs and start over. weapon damage is 1 giant bug
    Last edited: Jan 21, 2016
  2. Keza

    Keza Renaissance Staff
    Renaissance Staff

    Joined:
    Jan 6, 2015
    Messages:
    2,194
    Likes Received:
    4,236
    @Erlkonig I just use this, its based on all the same math used in-game.

    Link removed as it led to an extremely offensive image.

    Sorry, didnt know that link lead to anything besides the basic spread sheet.
    Last edited: Jan 23, 2016
  3. Erlkonig

    Erlkonig Well-Known Member
    UO:R Subscriber

    Joined:
    Jun 14, 2015
    Messages:
    1,131
    Likes Received:
    1,165
    @Keza, i made that spreadsheet and have an updated version that is more accurate.

    the issue is that on test CA has a minimum of 40% regardless of stats and skills
    furthermore at 100 anatomy 0 tactics 100 str CA is still being displayed as 40%
    the additional 10% CA gained from 100 anatomy is not being added in to make 50% (20% from str 30 % from anatomy). this does not effect many people but for the few people that would run 0 tactics 100 anatomy 100 weapon skills it does matter a bit

    secondly, the most major recent issue that i tested for 8 hours swapping in a new +25 katana every 2 min resulted in a min/max of 5/26 when in reality it should of been 6/31. why on earth would it not matter if tactics was over 100? It is a funamental damage modifier that has worked since the beggining of UO and even through AOS. Hell RUO..

    Code:
    damage += ( damage * ( ( attacker.Skills[SkillName.Tactics].Value - 50.0 ) / 100.0 ) );
    
    damage += ( damage * modifiers );
    
    Last edited: Jan 22, 2016
  4. Gideon Jura

    Gideon Jura Well-Known Member
    UO:R Donor

    Joined:
    Sep 8, 2012
    Messages:
    6,364
    Likes Received:
    5,579
    .
    Last edited: Dec 29, 2018
    Bamilus, PaddyOBrien, wylwrk and 2 others like this.
  5. Erlkonig

    Erlkonig Well-Known Member
    UO:R Subscriber

    Joined:
    Jun 14, 2015
    Messages:
    1,131
    Likes Received:
    1,165
    upload_2016-1-22_9-53-48.png
  6. Gideon Jura

    Gideon Jura Well-Known Member
    UO:R Donor

    Joined:
    Sep 8, 2012
    Messages:
    6,364
    Likes Received:
    5,579
    .
    Last edited: Dec 29, 2018
  7. Erlkonig

    Erlkonig Well-Known Member
    UO:R Subscriber

    Joined:
    Jun 14, 2015
    Messages:
    1,131
    Likes Received:
    1,165
    Please elaborate...
  8. Bogugh

    Bogugh Well-Known Member

    Joined:
    Jan 27, 2013
    Messages:
    605
    Likes Received:
    517
    Well lets see...

    0 tactics - 49 = -49
    100 anat = 30
    100 str = 20
    20 + 30 - 49 = 1
    This is below and thus would be floored at 40.

    Seems to be "working" based on my understanding of the formula, unless something has changed since I did my testing.
    (This is quite possible. I hardly ever play here anymore and wouldn't have noticed.)
    Also, it does matter if tactics is over 100. What doesn't matter is if CA is over 100.

    If there is a file that needs to be deleted, it is fists.cs.
    A custom combat formula was applied to an already convoluted default runuo stun punch code thus creating the most nonsensical matrix of possible wrestling outcomes that I have ever seen.
    Last edited: Jan 22, 2016
    Iago likes this.
  9. Chris

    Chris Renaissance Staff
    Renaissance Staff

    Joined:
    May 14, 2012
    Messages:
    3,385
    Likes Received:
    6,195
    Code:
    public virtual double ScaleDamageOld( Mobile attacker, double damage, bool checkSkills )
    		{
    			if ( checkSkills )
    			{
    				attacker.CheckSkill( SkillName.Tactics, 0.0, attacker.Skills[SkillName.Tactics].Cap ); // Passively check tactics for gain
    				attacker.CheckSkill( SkillName.Anatomy, 0.0, attacker.Skills[SkillName.Anatomy].Cap ); // Passively check Anatomy for gain
    
    				if ( Type == WeaponType.Axe )
    					attacker.CheckSkill( SkillName.Lumberjacking, 0.0, 100.0 ); // Passively check Lumberjacking for gain
    			}
    
    			/* Compute tactics modifier
    			 * :   0.0 = 50% loss
    			 * :  50.0 = unchanged
    			 * : 100.0 = 50% bonus
    			 */
    			double tacticsBonus = (attacker.Skills[SkillName.Tactics].Value - 50.0) / 100.0;
    
    			/* Compute strength modifier
    			 * : 1% bonus for every 5 strength
    			 */
    			double strBonus = (attacker.Str / 5.0) / 100.0;
    
    			/* Compute anatomy modifier
    			 * : 1% bonus for every 5 points of anatomy
    			 * : +10% bonus at Grandmaster or higher
    			 */
    			double anatomyValue = attacker.Skills[SkillName.Anatomy].Value;
    			double anatomyBonus = (anatomyValue / 5.0) / 100.0;
    
    			if ( anatomyValue >= 100.0 )
    				anatomyBonus += 0.1;
    
    			/* Compute lumberjacking bonus
    			 * : 1% bonus for every 5 points of lumberjacking
    			 * : +10% bonus at Grandmaster or higher
    			 */
    			double lumberBonus;
    
    			if ( Type == WeaponType.Axe )
    			{
    				double lumberValue = attacker.Skills[SkillName.Lumberjacking].Value;
    
    				lumberBonus = (lumberValue / 5.0) / 100.0;
    
    				if ( lumberValue >= 100.0 )
    					lumberBonus += 0.1;
    			}
    			else
    			{
    				lumberBonus = 0.0;
    			}
    
    			// New quality bonus:
    			double qualityBonus = ((int)m_Quality - 1) * 0.2;
    
    			// Apply bonuses
    			damage += (damage * tacticsBonus) + (damage * strBonus) + (damage * anatomyBonus) + (damage * lumberBonus) + (damage * qualityBonus) + ((damage * VirtualDamageBonus) / 100);
    
    			// Old quality bonus:
    #if false
    			/* Apply quality offset
    			 * : Low         : -4
    			 * : Regular     :  0
    			 * : Exceptional : +4
    			 */
    			damage += ((int)m_Quality - 1) * 4.0;
    #endif
    
    			/* Apply damage level offset
    			 * : Regular : 0
    			 * : Ruin    : 1
    			 * : Might   : 3
    			 * : Force   : 5
    			 * : Power   : 7
    			 * : Vanq    : 9
    			 */
    			if ( m_DamageLevel != WeaponDamageLevel.Regular )
    				damage += (2.0 * (int)m_DamageLevel) - 1.0;
    
    			// Halve the computed damage and return
    			damage /= 2.0;
    
    			return ScaleDamageByDurability( (int)damage );
    		}
    
    Above is the default RunUO 2.2 combat code

    The key part of the code from RunUO is the following line.

    damage += (damage * tacticsBonus) + (damage * strBonus) + (damage * anatomyBonus) + (damage * lumberBonus) + (damage * qualityBonus) + ((damage * VirtualDamageBonus) / 100);

    Followed by

    damage /= 2.0;

    If you read the code closely you will find out that RunUO only used skills to affect roughly half of the damage roll.

    So if you rolled a 35. The result would be 35 + 35(Factored by Skills) /2. Meaning that tactics, lumberjacking, magical bonuses, etc would only have a minimal impact on the end result.

    Our combat mechanics are similar but they are based on a much more simple fact. If a weapon was designed by OSI to generate a damage range to a target of 8-32 damage our combat system will achieve that. With factors like magical bonuses, lumberjacking, durability being factored into the final result.

    The only way a weapon can do 1 damage (Current Renaissance Codebase) is if the target you are hitting has armor, in the spot that you hit, that resulted in an amount of absorption that negate the damage. Even so there is a cap on this effect as it cannot reduce the damage below 1/2 the lowest base value of damage the weapon can inflict. A weapon with 8 base damage, would only be lowered to 4 damage if armor is factored in.

    All that aside, there are currently some mechanics that are being overridden when duels are involved. Players have reported some odd results with wrestling and that is currently being looked at as it differs from overworld mechanics.

    If there is a specific problem you wish to submit as a bug report then please do so. "The combat here is broken, do it over" Is not a bug report.

    Note: Fists.cs contains almost zero combat applicable data other than the damagemin/damagemax (1/8) and the code for the special attacks. Which have not been changed.

    Wrestling is one of the few combat skills that can be reduced to a 1 damage hit as its lowest possible roll is 1 damage. Long ago under our old absorption code this was reduced to a possible .5 damage which was considered a hit, but did no damage to the target. This was resolved 9-12 months ago.
    Last edited: Jan 23, 2016
    Iago likes this.
  10. Bogugh

    Bogugh Well-Known Member

    Joined:
    Jan 27, 2013
    Messages:
    605
    Likes Received:
    517
    "Note: Fists.cs contains almost zero combat applicable data other than the damagemin/damagemax (1/8) and the code for the special attacks. Which have not been changed."

    @Chris

    Damage aside, the main problem (as I see it, anyway) with the default runuo fists.cs is that it runs the stun check onswing which results in stuns having zero correlation to whether or not the punch lands. I know I'm not alone in this thinking because other shards have rewritten this code for this reason.

    Maybe you know this already. I have no idea.
    Last edited: Jan 24, 2016
    Iago likes this.
  11. Chris

    Chris Renaissance Staff
    Renaissance Staff

    Joined:
    May 14, 2012
    Messages:
    3,385
    Likes Received:
    6,195
    That could be something we need to look into then. Based on my notes very little has ever been changed in that script from the default RunUO 2.2 version. I think this is the first time someone has mentioned that issue.
    Iago likes this.
  12. Isabel

    Isabel Active Member

    Joined:
    Apr 11, 2015
    Messages:
    99
    Likes Received:
    105
  13. Erlkonig

    Erlkonig Well-Known Member
    UO:R Subscriber

    Joined:
    Jun 14, 2015
    Messages:
    1,131
    Likes Received:
    1,165
    The point is... Why mess with a system that already dealt the correct amount of damage for each weapon? The only thing this CA system does is penalize players more than the old system. This limits a whole class of templates that are gimped anyways. You constantly change things or do things a certain way because it helps unburden the system. Doesn't this CA system add a unnecessary burden & confuse vets/players with what they know to be right? It is a bug because it is not working as most of us expect it should. Oh yea, I would like to add the ridiculous rate at which items break. Holy hell.. I know we have fort powder and it is a booming industry but man, cant even go hunting without constant repairs.

    Old System (Katana)
    GM Anat, GM Tact, 100 Str

    Min 6
    Tact: 6 * 1.5 = 9
    Str 6*.2 = 1.2
    Anat 6*.3 = 1.8
    9+1.2+1.8 = 12
    12/2 = 6

    Max 26
    Tact: 26 * 1.5 = 39
    Str 26*.2 = 5.2
    Anat 26*.3 = 7.8
    39+5.2+7.8 = 52
    52/2 = 26

    GM Anat, 0 Tact, 100 Str (Expected result = 1/2 damage)
    Min 6
    Tact: 6 * .5 = 3
    Str 6*.2 = 1.2
    Anat 6*.3 = 1.8
    .5+1.2+1.8 = 6
    6/2 = 3

    Max 26
    Tact: 26 * .5 = 13
    Str 26*.2 = 5.2
    Anat 26*.3 = 7.8
    13+5.2+7.8 = 26
    26/2 = 13

    Current System (Katana)
    GM Anat, GM Tact, 100 Str

    Min 6
    6


    Max 26
    26


    GM Anat, 0 Tact, 100 Str (Expected result = 1/2 damage, also would expect 50% CA but in reality due to programming its 40%)
    @40% CA
    Min 6
    1


    Max 26
    5



    and all I was asking for was tactics to not go negative giving 50% CA resulting in....
    Min 6
    1


    Max 26
    7


    2 point of potential damage on the max. Compared to the old system that is not much to ask as we are being robbed 6 points of damage at 50% CA and 8 points at the current 40% CA.




    and for shits and giggles (old system)... katana @ 125 tact, gm anat, 100 str... which doesn't do anything under the new system
    min 6
    6.75


    max 26
    29.25


    its not implemented because of 3 extra damage? or CA system cant handle over 100% CA?

    current spreadsheet : https://docs.google.com/spreadsheets/d/1ojtDHRtjWtlNvzA2U111tYYoKrhmJLzfE7dNbuuR0PA/edit?usp=sharing
    w/ old system calc on the bottom right

    btw.. i see that combat log books were removed from test

    Wooooo! All the colors!
    Last edited: Jan 24, 2016
  14. ebola

    ebola Well-Known Member

    Joined:
    Jul 1, 2013
    Messages:
    446
    Likes Received:
    319
    I have found that using(for example) a gm valorite Runic weapon against a mage with 0 scribe with reactive armor the damage is nullified. I believe this is a huge disadvantage to dexers in general. A weapon that strong should have a better affect then what it currently has.case in point I believe there is a problem whether it's with RA being either to strong or the damage base is off.
    Anyone else noticed this?
  15. Kane

    Kane Well-Known Member
    UO:R Subscriber

    Joined:
    Sep 20, 2014
    Messages:
    2,044
    Likes Received:
    1,053
    RA without inscription nullifies 50 dmg. 100 with scribe. This is how it has always been afaik
  16. Blaise

    Blaise Well-Known Member
    UO:R Subscriber

    Joined:
    Jul 14, 2012
    Messages:
    7,706
    Likes Received:
    3,632
    Yeah, I haven't noticed any problems there. The RA is usually gone in a couple swings from most any valorite weaponry.
  17. DiscoD

    DiscoD Active Member

    Joined:
    Feb 25, 2015
    Messages:
    114
    Likes Received:
    83
    So at this point there is no difference between agapite and verite because tactics over 100 doesn't mean anything?
  18. Bogugh

    Bogugh Well-Known Member

    Joined:
    Jan 27, 2013
    Messages:
    605
    Likes Received:
    517
    Fixed ^

    Yes, (unless you don't have 100 ca already. perhaps no anatomy, as on my tamer dexer)
    ... and I've been saying this forever.

    Maybe verite should be +8.
  19. Erlkonig

    Erlkonig Well-Known Member
    UO:R Subscriber

    Joined:
    Jun 14, 2015
    Messages:
    1,131
    Likes Received:
    1,165
    I would also like to add that archery really gets screwed by this as tactic mods for archery benefit the archery skill not tactics. Archers have no choice but to have anatomy to be effective.

Share This Page