@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.
@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 );
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.
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.
"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.
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.
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!
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?
Yeah, I haven't noticed any problems there. The RA is usually gone in a couple swings from most any valorite weaponry.
So at this point there is no difference between agapite and verite because tactics over 100 doesn't mean anything?
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.
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.