Poisoning Success Rates?

Discussion in 'Renaissance Discussion' started by Supra, Oct 17, 2014.

  1. Supra

    Supra Active Member

    Joined:
    Sep 5, 2014
    Messages:
    115
    Likes Received:
    54
    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.
  2. Blaise

    Blaise Well-Known Member
    UO:R Subscriber

    Joined:
    Jul 14, 2012
    Messages:
    7,706
    Likes Received:
    3,632
    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.
  3. Mes

    Mes Well-Known Member

    Joined:
    Mar 17, 2013
    Messages:
    2,402
    Likes Received:
    2,946
    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?
  4. Supra

    Supra Active Member

    Joined:
    Sep 5, 2014
    Messages:
    115
    Likes Received:
    54
    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).
  5. Supra

    Supra Active Member

    Joined:
    Sep 5, 2014
    Messages:
    115
    Likes Received:
    54
    ^bumpydumby^
  6. Blaise

    Blaise Well-Known Member
    UO:R Subscriber

    Joined:
    Jul 14, 2012
    Messages:
    7,706
    Likes Received:
    3,632
    ////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
    }
    }
    }
    }
    }
    }
    }
    }
    }
  7. Dalavar

    Dalavar Well-Known Member
    UO:R Subscriber

    Joined:
    Aug 11, 2013
    Messages:
    3,336
    Likes Received:
    1,915
    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.
  8. Supra

    Supra Active Member

    Joined:
    Sep 5, 2014
    Messages:
    115
    Likes Received:
    54
    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.
  9. Blaise

    Blaise Well-Known Member
    UO:R Subscriber

    Joined:
    Jul 14, 2012
    Messages:
    7,706
    Likes Received:
    3,632
    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%
    Last edited: Oct 25, 2014
  10. Supra

    Supra Active Member

    Joined:
    Sep 5, 2014
    Messages:
    115
    Likes Received:
    54
    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.
  11. Var

    Var Active Member

    Joined:
    Mar 1, 2013
    Messages:
    195
    Likes Received:
    142
    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)
  12. Blaise

    Blaise Well-Known Member
    UO:R Subscriber

    Joined:
    Jul 14, 2012
    Messages:
    7,706
    Likes Received:
    3,632
    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.
  13. Var

    Var Active Member

    Joined:
    Mar 1, 2013
    Messages:
    195
    Likes Received:
    142
    Thanks! I might have to start dipping my weapons in Xeguggs grimey-ness!

Share This Page