Hi, I am curious about the success rates for different poisoning values. I searched the compendium and the forum but couldnt find the relevant formula anywhere. Can somebody provide that information for UO:R? Thx.
I don't think that's posted here anywhere, or if anyone knows it off hand. I can dig around in the RunUO files and see if I can find anything though.
Supra can you clarify if your question is regarding the chance to apply a poison to a blade or your chance to envenom the target with your blade?
The chance to envenom is 50% per succesful hit. My question is about success rates to apply poison to a blade. What I have read e.g. @ Stratics is not applied here (probably due to other era rules).
////BELOW IS POISONING.CS FROM DEFAULT RUNUO DISTRO///// I don't know how to read this very well. I can see an obvious %5 chance to poison self on failure and if I'm guessing right, I see an %80 chance of success to apply, if you have the skill to use that level of poison. If one of the coding/math nerds around here could translate it better, that would help. using System; using Server.Targeting; using Server.Items; using Server.Network; namespace Server.SkillHandlers { public class Poisoning { public static void Initialize() { SkillInfo.Table[(int)SkillName.Poisoning].Callback = new SkillUseCallback( OnUse ); } public static TimeSpan OnUse( Mobile m ) { m.Target = new InternalTargetPoison(); m.SendLocalizedMessage( 502137 ); // Select the poison you wish to use return TimeSpan.FromSeconds( 10.0 ); // 10 second delay before beign able to re-use a skill } private class InternalTargetPoison : Target { public InternalTargetPoison() : base ( 2, false, TargetFlags.None ) { } protected override void OnTarget( Mobile from, object targeted ) { if ( targeted is BasePoisonPotion ) { from.SendLocalizedMessage( 502142 ); // To what do you wish to apply the poison? from.Target = new InternalTarget( (BasePoisonPotion)targeted ); } else // Not a Poison Potion { from.SendLocalizedMessage( 502139 ); // That is not a poison potion. } } private class InternalTarget : Target { private BasePoisonPotion m_Potion; public InternalTarget( BasePoisonPotion potion ) : base ( 2, false, TargetFlags.None ) { m_Potion = potion; } protected override void OnTarget( Mobile from, object targeted ) { if ( m_Potion.Deleted ) return; bool startTimer = false; if ( targeted is Food || targeted is FukiyaDarts || targeted is Shuriken ) { startTimer = true; } else if ( targeted is BaseWeapon ) { BaseWeapon weapon = (BaseWeapon)targeted; if ( Core.AOS ) { startTimer = ( weapon.PrimaryAbility == WeaponAbility.InfectiousStrike || weapon.SecondaryAbility == WeaponAbility.InfectiousStrike ); } else if ( weapon.Layer == Layer.OneHanded ) { // Only Bladed or Piercing weapon can be poisoned startTimer = ( weapon.Type == WeaponType.Slashing || weapon.Type == WeaponType.Piercing ); } } if ( startTimer ) { new InternalTimer( from, (Item)targeted, m_Potion ).Start(); from.PlaySound( 0x4F ); if ( !Engines.ConPVP.DuelContext.IsFreeConsume( from ) ) { m_Potion.Consume(); from.AddToBackpack( new Bottle() ); } } else // Target can't be poisoned { if ( Core.AOS ) from.SendLocalizedMessage( 1060204 ); // You cannot poison that! You can only poison infectious weapons, food or drink. else from.SendLocalizedMessage( 502145 ); // You cannot poison that! You can only poison bladed or piercing weapons, food or drink. } } private class InternalTimer : Timer { private Mobile m_From; private Item m_Target; private Poison m_Poison; private double m_MinSkill, m_MaxSkill; public InternalTimer( Mobile from, Item target, BasePoisonPotion potion ) : base( TimeSpan.FromSeconds( 2.0 ) ) { m_From = from; m_Target = target; m_Poison = potion.Poison; m_MinSkill = potion.MinPoisoningSkill; m_MaxSkill = potion.MaxPoisoningSkill; Priority = TimerPriority.TwoFiftyMS; } protected override void OnTick() { if ( m_From.CheckTargetSkill( SkillName.Poisoning, m_Target, m_MinSkill, m_MaxSkill ) ) { if ( m_Target is Food ) { ((Food)m_Target).Poison = m_Poison; } else if ( m_Target is BaseWeapon ) { ((BaseWeapon)m_Target).Poison = m_Poison; ((BaseWeapon)m_Target).PoisonCharges = 18 - (m_Poison.Level * 2); } else if ( m_Target is FukiyaDarts ) { ((FukiyaDarts)m_Target).Poison = m_Poison; ((FukiyaDarts)m_Target).PoisonCharges = Math.Min( 18 - (m_Poison.Level * 2), ((FukiyaDarts)m_Target).UsesRemaining ); } else if ( m_Target is Shuriken ) { ((Shuriken)m_Target).Poison = m_Poison; ((Shuriken)m_Target).PoisonCharges = Math.Min( 18 - (m_Poison.Level * 2), ((Shuriken)m_Target).UsesRemaining ); } m_From.SendLocalizedMessage( 1010517 ); // You apply the poison Misc.Titles.AwardKarma( m_From, -20, true ); } else // Failed { // 5% of chance of getting poisoned if failed if ( m_From.Skills[SkillName.Poisoning].Base < 80.0 && Utility.Random( 20 ) == 0 ) { m_From.SendLocalizedMessage( 502148 ); // You make a grave mistake while applying the poison. m_From.ApplyPoison( m_From, m_Poison ); } else { if ( m_Target is BaseWeapon ) { BaseWeapon weapon = (BaseWeapon)m_Target; if ( weapon.Type == WeaponType.Slashing ) m_From.SendLocalizedMessage( 1010516 ); // You fail to apply a sufficient dose of poison on the blade else m_From.SendLocalizedMessage( 1010518 ); // You fail to apply a sufficient dose of poison } else { m_From.SendLocalizedMessage( 1010518 ); // You fail to apply a sufficient dose of poison } } } } } } } } }
I think it's a 5% chance to poison yourself if your skill is less than 80. Beyond that, it looks like your chance to poison something is buried in CheckTargetSkill, and I for one have no idea how that works.
Thanks for that code and first analysis. Its the first time I look @ UO code. To be precise, there is a 5% chance to poison yourself if you fail to poison the weapon (dont know what that chance is however) and have below 80 skill. I'd love to check that later. Also there are shurikens and infectious strike mentioned, which means that this code may be not applied in UO:R.
The default RunUO code incorporates many of the newer features implemented after Renaissance. It can be enabled/disabled through various means, not always directly in the code you see. I just found this scrap near the bottom of the Stratics page, though not sure if accurate to RunUO/Era: I was asked, at what skill could I apply different levels of poison to a blade? To test this, I used this method: - Skills increases started at 20 and increased by 10 to GM. - 10 poison potions were used on food. - The % was the success number VS. number of to attempts. - If there was no success at a level of poison, the next higher level was not attempted. Note: This method wasn’t very scientific. RNG could have played a large part in the lower percentages. It is interesting that at 80 skill, everything jumps to 100% chance of success. SKILL LP P GP DP 20 60% 0 NA NA 30 60% 20% 0 NA 40 70% 40% 0 NA 50 100% 50% 0 NA 60 100% 60% 10% 10% 70 100% 80% 30% 20% 80 100% 100% 100% 100% 90 100% 100% 100% 100% 100 100% 100% 100% 100%
I found that too, but can definitely say that this table is not applicable for UO:R. I know from experience that GP is not 100% succesfully applied up to 90+ skill.
A little off topic but does poison have the percentage of your poison skill to inflict the next level of poison here? Also is pot curing out of DP almost 100 percent success rate? (Rumor mill)
Skill does not impact application beyond applying it to the weapon. There is no bonus on hit for level. DP is not 100% curable by a single greater cure potion. Occasionally it can take upwards of 4-5 cure potions to get over it.