RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

leech stamina and leech mana on monster

Scottk

Sorceror
I'm pretty new to scripting and the forums in general but was wondering if someone could give me some pointers on how to add leech stamina and leech mana onto a monster. any feedback greatly appreciated.
 

Barnicoat

Sorceror
Not sure, but what most people say is, try to find a script of a monster that already has these abilities. Succubi leech life with a sort of area effect, maybe look there for clues?
 

Iraq-

Sorceror
This is an example of an offensive attack using in Golem.cs:
Code:
public override void OnGaveMeleeAttack( Mobile defender )
        {
            base.OnGaveMeleeAttack( defender );
 
            if ( !m_Stunning && 0.3 > Utility.RandomDouble() )
            {
                m_Stunning = true;
 
                defender.Animate( 21, 6, 1, true, false, 0 );
                this.PlaySound( 0xEE );
                defender.LocalOverheadMessage( MessageType.Regular, 0x3B2, false, "You have been stunned by a colossal blow!" );
 
                BaseWeapon weapon = this.Weapon as BaseWeapon;
                if ( weapon != null )
                    weapon.OnHit( this, defender );
 
                if ( defender.Alive )
                {
                    defender.Frozen = true;
                    Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), new TimerStateCallback( Recover_Callback ), defender );
                }
            }
        }

for stamina leach or mana leach you could tweak this code to do something like:

Code:
public override void OnGaveMeleeAttack( Mobile defender )
{
base.OnGaveMeleeAttack( defender );
if( Utility.RandomDouble < 0.03 ) // 3% chance to preform a hit-leech attack
{
switch( Utility.Randon( 2 ) ) // 50%/50% for stamina leech or mana leech
{
  case 0:
  {
  if( defender.Alive )
  {
    int manaToLeech = (int)(defender.Mana*0.333); // defender loses 1/3 of their mana
    defender.Mana -= manaToLeech;
    this.Mana += (int)( manaToLeech * 0.75 ); // monster gains back 3/4 of the leeched mana.
  }
  break;
  }
  case 1:
  {
  if( defender.Alive )
  {
    int stamToLeech = (int)(defender.Stam*0.333); // defender loses 1/3 of their stamina
    defender.Stam -= stamToLeech;
    this.Stam += (int)( stamToLeech * 0.75 ); // monster gains back 3/4 of the leeched stamina.
  }
  break;
  }
}
}
}

* sorry it looks ugly... wrote it in the little dialog box.
 

Vladamir

Sorceror
Anyone who tries to use the above code will get errors, use this instead:

Code:
 public override void OnGaveMeleeAttack( Mobile defender )
        {
            base.OnGaveMeleeAttack( defender );
        if( 0.06 > Utility.RandomDouble() ) // 3% chance to preform a hit-leech attack
        {
        switch( Utility.Random( 2 ) ) // 50%/50% for stamina leech or mana leech
        {
            case 0:
            {
            if( defender.Alive )
            {
            int manaToLeech = (int)(defender.Mana*0.6); // defender loses 1/2 of their mana
            defender.Mana -= manaToLeech;
            this.Mana += (int)( manaToLeech * 0.75 ); // monster gains back 3/4 of the leeched mana.
            }
            break;
            }
            case 1:
            {
            if( defender.Alive )
            {
            int stamToLeech = (int)(defender.Stam*0.7); // defender loses 9/10 of their stamina
            defender.Stam -= stamToLeech;
            this.Stam += (int)( stamToLeech * 0.75 ); // monster gains back 3/4 of the leeched stamina.
            }
            break;
            }
        }
    }
}


*** Please note the percentage of mana/stam lost has been modified ***
 
Top