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!

2 much loot

wolfinden

Traveler
hey guys so i'm using the halloween deco set from off the script release but i'm trying to make things a bit more interesting by having it placed into an npc how do i make it so there is a .01% chance that 1 of them will drop. here is the script as i have it now

Code:
using System;
using System.Collections;
using Server.Misc;
using Server.Items;
using Server.Targeting;
  using Server.Engines.MLQuests.Items;
namespace Server.Mobiles
{
    [CorpseName( "a gastly corpse" )]
    public class forsakentownsfolk : BaseCreature
    {
 
 
        [Constructable]
        public forsakentownsfolk() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
        {
            Name = "Forsaken Townsfolk";
            Body = Utility.RandomList( 261, 273 );
            Hue = 0x4001;
            BaseSoundID = 451;
 
            SetStr( 147, 215 );
            SetDex( 91, 115 );
            SetInt( 61, 85 );
 
            SetHits( 95, 123 );
 
            SetDamage( 4, 14 );
 
            SetDamageType( ResistanceType.Physical, 100 );
 
            SetResistance( ResistanceType.Physical, 25, 35 );
            SetResistance( ResistanceType.Fire, 30, 40 );
            SetResistance( ResistanceType.Cold, 20, 30 );
            SetResistance( ResistanceType.Poison, 30, 40 );
            SetResistance( ResistanceType.Energy, 30, 40 );
 
            SetSkill( SkillName.MagicResist, 70.1, 85.0 );
            SetSkill( SkillName.Swords, 60.1, 85.0 );
            SetSkill( SkillName.Tactics, 75.1, 90.0 );
            SetSkill( SkillName.Wrestling, 60.1, 85.0 );
 
            Fame = 2500;
            Karma = -2500;
 
            switch ( Utility.Random( 5 ) )
            {
                case 0: PackItem( new FullApron() );  break;
                case 1: PackItem( new Shirt() ); break;
                case 2: PackItem( new SmithHammer() ); break;
                case 3: PackItem( new LongPants() ); break;
                case 4: PackItem( new Bascinet() ); break;
            }
 
 
 
 
                                if ( 0.1 > Utility.RandomDouble() )PackItem( new BlueDiamond());
 
                  if ( 0.1 > Utility.RandomDouble() )PackItem( new GiantSpiderweb1AddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new GiantSpiderweb2AddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new SkeletonMeatEastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new SkeletonMeatSouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new SkeletonBootsEastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new SkeletonBootsSouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new SkeletonEastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new SkeletonSouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new LayingSkeletonEastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new LayingSkeletonSouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new Gravestone1EastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new Gravestone1SouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new Gravestone2EastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new Gravestone2SouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new Gravestone3EastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new Gravestone3SouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new Gravestone4EastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new Gravestone4SouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new GraveEastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new GraveSouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new MaabusCoffinEastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new MaabusCoffinSouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new BlockEastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new BlockSouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new EggCaseWebAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new GuillotineEastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new GuillotineSouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new PilloryEastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new PillorySouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new RackEastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new RackSouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new ShacklesAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new SmallWeb1AddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new SmallWeb2AddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new SmallWeb3AddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new SmallWeb4AddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new SmallWeb5AddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new SmallWeb6AddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new WebCocoonAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new WrappedBodyEastAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new WrappedBodySouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new BloodyTorsoSouthAddonDeed());
            if ( 0.1 > Utility.RandomDouble() )PackItem( new BloodyTorsoEastAddonDeed());
        }
 
    public override void GenerateLoot()
        {
            AddLoot( LootPack.Average );
            AddLoot( LootPack.Meager );
        }
 
        public override bool BleedImmune{ get{ return true; } }
 
        public forsakentownsfolk( Serial serial ) : base( serial )
        {
        }
 
        public override OppositionGroup OppositionGroup
        {
            get{ return OppositionGroup.FeyAndUndead; }
        }
 
        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );
            writer.Write( (int) 0 );
        }
 
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
            int version = reader.ReadInt();
        }
    }
}

any help would be awsome thanks in advance
 

pooka01

Sorceror
A good idea would be to look at the darkfather script for artifacts on drop, basically what you need is to dump all your items to an array that is static, public or private depending if you wish to uase it from other scripts.
if you want it on multiple monsters just make a separate file called HalloweenMonsterDrop.cs and add the array there, so you can do:
Code:
if ( 0.0001 > Utility.RandomDouble())
{
PackItem(HalloweenMonsterDrop.GetRandomLoot());
}

reference to the darkfather or artifact dropper monster:
Code:
private static Type[] m_ArtifactRarity11 = new Type[]
   {
    typeof( LegacyOfTheDreadLord ),
    typeof( TheDragonSlayer ),
    typeof( ArmorOfFortune ),
    typeof( GauntletsOfNobility ),
    typeof( HelmOfInsight ),
    typeof( HolyKnightsBreastplate ),
    typeof( JackalsCollar ),
    typeof( LeggingsOfBane ),
    typeof( MidnightBracers ),
    typeof( OrnateCrownOfTheHarrower ),
    typeof( ShadowDancerLeggings ),
    typeof( TunicOfFire ),
    typeof( VoiceOfTheFallenKing ),
    typeof( BraceletOfHealth ),
    typeof( OrnamentOfTheMagician ),
    typeof( RingOfTheElements ),
    typeof( RingOfTheVile ),
    typeof( Aegis ),
    typeof( ArcaneShield ),
    typeof( AxeOfTheHeavens ),
    typeof( BladeOfInsanity ),
    typeof( BoneCrusher ),
    typeof( BreathOfTheDead ),
    typeof( Frostbringer ),
    typeof( SerpentsFang ),
    typeof( StaffOfTheMagi ),
    typeof( TheBeserkersMaul ),
    typeof( TheDryadBow ),
    typeof( DivineCountenance ),
    typeof( HatOfTheMagi ),
    typeof( HuntersHeaddress ),
    typeof( SpiritOfTheTotem )
   };
  public static Item CreateRandomArtifact()
  {
   if ( !Core.AOS )
    return null;
   int count = ( m_ArtifactRarity10.Length * 5 ) + ( m_ArtifactRarity11.Length * 4 );
   int random = Utility.Random( count );
   Type type;
   if ( random < ( m_ArtifactRarity10.Length * 5 ) )
   {
    type = m_ArtifactRarity10[random / 5];
   }
   else
   {
    random -= m_ArtifactRarity10.Length * 5;
    type = m_ArtifactRarity11[random / 4];
   }
   return Loot.Construct( type );
  }

so you just have:
HalloweenMonsterDrop.cs
with
Code:
private static Type[] m_HalloweenDrops = new Type[] { yourstuff };
and
Code:
public static Item GetRandomLoot()
{
   int count = m_HalloweenDrops.Length;
   int random = Utility.Random( count );
   Type type = m_HalloweenDrops[random];
   return Loot.Construct( type );
}
in it

//ps- 0.0001 = 0.01%, 0.1 = 10% :p
 

Kouri

Squire
I have added special items to specific mobs by adding the items to the Loot.cs then I have a random loot entry on the mobile.

Code:
private static Type[] m_HalloweenDropTypes = new Type[]
{
typeof( GiantSpiderweb1AddonDeed ),typeof( GiantSpiderweb2AddonDeed ),typeof( SkeletonMeatEastAddonDeed ),
typeof( SkeletonMeatSouthAddonDeed ),typeof( SkeletonBootsEastAddonDeed ),typeof( SkeletonBootsSouthAddonDeed ),
typeof( SkeletonEastAddonDeed ),typeof( SkeletonSouthAddonDeed ),typeof( LayingSkeletonEastAddonDeed ),
typeof( LayingSkeletonSouthAddonDeed ),  typeof( Gravestone1EastAddonDeed ),    typeof( Gravestone1SouthAddonDeed ),
typeof( Gravestone2EastAddonDeed ),      typeof( Gravestone2SouthAddonDeed ),    typeof( Gravestone3EastAddonDeed ),
typeof( Gravestone3SouthAddonDeed ),    typeof( Gravestone4EastAddonDeed ),    typeof( Gravestone4SouthAddonDeed ),
typeof( GraveEastAddonDeed ),            typeof( GraveSouthAddonDeed ),          typeof( MaabusCoffinEastAddonDeed ),
typeof( BlockEastAddonDeed ),            typeof( BlockSouthAddonDeed ),          typeof( EggCaseWebAddonDeed ),
                        typeof( MaabusCoffinSouthAddonDeed ),    typeof( GuillotineEastAddonDeed ),      typeof( GuillotineSouthAddonDeed ),
                        typeof( PilloryEastAddonDeed ),          typeof( PillorySouthAddonDeed ),        typeof( RackEastAddonDeed ),
                        typeof( RackSouthAddonDeed ),            typeof( ShacklesAddonDeed ),            typeof( SmallWeb1AddonDeed ),
                        typeof( SmallWeb2AddonDeed ),            typeof( SmallWeb3AddonDeed ),          typeof( SmallWeb4AddonDeed ),
                        typeof( SmallWeb5AddonDeed ),            typeof( SmallWeb6AddonDeed ),          typeof( WebCocoonAddonDeed ),
                        typeof( WrappedBodyEastAddonDeed ),      typeof( WrappedBodySouthAddonDeed ),    typeof( BloodyTorsoSouthAddonDeed ),
                        typeof( BloodyTorsoEastAddonDeed )
};
 
              public static Type[] HalloweenDropTypes{ get{ return m_HalloweenDropTypes; } }

This goes at the bottom part of the Loot.cs

Code:
public static Item RandomHalloweenDrop()
{
      return Construct( m_HalloweenDropTypes ) ;
}
This is what I put on the mobile right after the VirtualArmor
Code:
VirtualArmor = 50;
 
if ( 1 > Utility.Random( 5 ) )
PackItem( Loot.RandomHalloweenDrop() );
 
Top