Success rate for applying poisons

Discussion in 'Renaissance Discussion' started by Cheapsuit, Oct 19, 2017.

  1. Cheapsuit

    Cheapsuit Well-Known Member
    UO:R Donor

    Joined:
    Jun 12, 2013
    Messages:
    787
    Likes Received:
    264
    Does anyone have a chart that shows the success rate of applying each lvl of poison (not magery application) based on skill level?
  2. wylwrk

    wylwrk Well-Known Member

    Joined:
    Jun 18, 2015
    Messages:
    5,473
    Likes Received:
    8,963
    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
    }
  3. Cheapsuit

    Cheapsuit Well-Known Member
    UO:R Donor

    Joined:
    Jun 12, 2013
    Messages:
    787
    Likes Received:
    264
    Umm is there a layman's version?
  4. Black Tortoise

    Black Tortoise Active Member

    Joined:
    May 31, 2016
    Messages:
    253
    Likes Received:
    163
    even if you dont know Java or C# or whatever that is, you can take a crack at deciphering some information, as code is intended to be read by other humans.

    For example, calculations are likely what youre looking for, like this:

    Code:
     18 - (m_Poison.Level * 2)
    If @wylwrk would be so kind as to wrap his class definition in code blocks, and have proper indentation, I might have enough cognitive bandwidth left after a day of coding to read through it and figure out the formulas more precisely :).

    Im 1 beer away from my Balmer Peak though, betta hurry!
    Last edited: Oct 19, 2017
  5. Cheapsuit

    Cheapsuit Well-Known Member
    UO:R Donor

    Joined:
    Jun 12, 2013
    Messages:
    787
    Likes Received:
    264
    I just want to know at what skills lvl (show real), will I not fail to apply each lvl of posion to a weapon.
  6. El Horno

    El Horno Well-Known Member
    UO:R Subscriber

    Joined:
    Aug 4, 2014
    Messages:
    3,612
    Likes Received:
    4,899
    why show real?
  7. Hollywood

    Hollywood Well-Known Member
    UO:R Subscriber

    Joined:
    Apr 14, 2017
    Messages:
    3,650
    Likes Received:
    3,752
    I'm guessing no one here has cared enough to research percentages towards applying poisons with the ability to spam cures, so this might be as close as you're gonna get to the information you asked for. I present to you with very little research and basic knowledge of google search engine:


    Juliet_10-19_19.08.jpg
    Cheapsuit likes this.
  8. Cheapsuit

    Cheapsuit Well-Known Member
    UO:R Donor

    Joined:
    Jun 12, 2013
    Messages:
    787
    Likes Received:
    264

    Thank you. I'm a little disappointed to learn that I need 50 points in poison to never fail at applying lesser poison.
    @El Horno because it's for a pvp template, so I figured show real would give a mistake free answer.
  9. El Horno

    El Horno Well-Known Member
    UO:R Subscriber

    Joined:
    Aug 4, 2014
    Messages:
    3,612
    Likes Received:
    4,899
    when in doubt, use shown skill.
  10. wylwrk

    wylwrk Well-Known Member

    Joined:
    Jun 18, 2015
    Messages:
    5,473
    Likes Received:
    8,963
    30
    Cheapsuit likes this.
  11. Cheapsuit

    Cheapsuit Well-Known Member
    UO:R Donor

    Joined:
    Jun 12, 2013
    Messages:
    787
    Likes Received:
    264
    I was actually hoping to hear that something like 30 poison would be good enough, that way I could run with 70 magery and 30 poison.
  12. Cheapsuit

    Cheapsuit Well-Known Member
    UO:R Donor

    Joined:
    Jun 12, 2013
    Messages:
    787
    Likes Received:
    264

    Are you for real or f**king with me? I'm praying you're being serious.
  13. wylwrk

    wylwrk Well-Known Member

    Joined:
    Jun 18, 2015
    Messages:
    5,473
    Likes Received:
    8,963
    I'm serious. 30 for LP is gr8.


    Granted you might fail once in a blue moon but make if you macro it

    (the language below is for example and is not to be copied/pasted)
    use skill poisoning
    pause 300
    target by type ((kryss or w/e) or insert a pause significant enough to manual target on the fly))
    if sys message = "you failed to... blah blah w/e"
    whisper " - "
    play macro "name of your poisoning macro"
    end if
    whisper " + "
    Last edited: Oct 19, 2017
    Cheapsuit likes this.

Share This Page