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!

Recipe quests

wolfinden

Traveler
hey guys,
so i've been trying to build custom quests for recipe's i found this script

Code:
using System;
using System.Collections.Generic;
using System.Text;
using Server;
using Server.Engines.Craft;
using Server.Items;
 
namespace Server.Engines.MLQuests.Items
{
    public abstract class BaseCraftmansSatchel : Backpack
    {
        protected static readonly Type[] m_TalismanType = new Type[] { typeof( RandomTalisman ) };
 
        public BaseCraftmansSatchel()
        {
            Hue = Utility.RandomBrightHue();
        }
 
        protected void AddBaseLoot( params Type[][] lootSets )
        {
            Item loot = Loot.Construct( lootSets[Utility.Random( lootSets.Length )] );
 
            if ( loot == null )
                return;
 
            RewardBag.Enhance( loot );
            DropItem( loot );
        }
 
        protected void AddRecipe( CraftSystem system )
        {
            // TODO: change craftable artifact recipes to a rarer drop
            int recipeID = system.RandomRecipe();
 
            if ( recipeID != -1 )
                DropItem( new RecipeScroll( recipeID ) );
        }
 
        public BaseCraftmansSatchel( Serial serial )
            : base( serial )
        {
        }
 
        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );
 
            writer.Write( (int)0 ); // version
        }
 
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
 
            int version = reader.ReadInt();
        }
    }
 
    public class TailorSatchel : BaseCraftmansSatchel
    {
        [Constructable]
        public TailorSatchel()
        {
            AddBaseLoot( Loot.MLArmorTypes, Loot.JewelryTypes, m_TalismanType );
 
            if ( Utility.RandomDouble() < 0.50 )
                AddRecipe( DefTailoring.CraftSystem );
        }
 
        public TailorSatchel( Serial serial )
            : base( serial )
        {
        }
 
        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );
 
            writer.Write( (int)0 ); // version
        }
 
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
 
            int version = reader.ReadInt();
        }
    }
 
    public class BlacksmithSatchel : BaseCraftmansSatchel
    {
        [Constructable]
        public BlacksmithSatchel()
        {
            AddBaseLoot( Loot.MLWeaponTypes, Loot.JewelryTypes, m_TalismanType );
 
            if ( Utility.RandomDouble() < 0.50 )
                AddRecipe( DefBlacksmithy.CraftSystem );
        }
 
        public BlacksmithSatchel( Serial serial )
            : base( serial )
        {
        }
 
        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );
 
            writer.Write( (int)0 ); // version
        }
 
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
 
            int version = reader.ReadInt();
        }
    }
 
    public class TinkerSatchel : BaseCraftmansSatchel
    {
        [Constructable]
        public TinkerSatchel()
        {
            AddBaseLoot( Loot.MLArmorTypes, Loot.MLWeaponTypes, Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType );
 
            if ( Utility.RandomDouble() < 0.50 )
            {
                // TODO: Add recipe drops (drops include inscription, alchemy and drops from non-artifact recipes for tailoring, blacksmith, carpentry and fletching.
                switch ( Utility.Random( 6 ) )
                {
                    case 0: AddRecipe( DefInscription.CraftSystem ); break;
                    case 1: AddRecipe( DefAlchemy.CraftSystem ); break;
                    // TODO
                    //case 2: AddNonArtifactRecipe( DefTailoring.CraftSystem ); break;
                    //case 3: AddNonArtifactRecipe( DefBlacksmithy.CraftSystem ); break;
                    //case 4: AddNonArtifactRecipe( DefCarpentry.CraftSystem ); break;
                    //case 5: AddNonArtifactRecipe( DefBowFletching.CraftSystem ); break;
                }
            }
        }
 
        public TinkerSatchel( Serial serial )
            : base( serial )
        {
        }
 
        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );
 
            writer.Write( (int)0 ); // version
        }
 
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
 
            int version = reader.ReadInt();
        }
    }
 
    public class FletchingSatchel : BaseCraftmansSatchel
    {
        [Constructable]
        public FletchingSatchel()
        {
            AddBaseLoot( Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType );
 
            if ( Utility.RandomDouble() < 0.50 )
                AddRecipe( DefBowFletching.CraftSystem );
 
            // TODO: runic fletching kit
        }
 
        public FletchingSatchel( Serial serial )
            : base( serial )
        {
        }
 
        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );
 
            writer.Write( (int)0 ); // version
        }
 
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
 
            int version = reader.ReadInt();
        }
    }
 
    public class CarpentrySatchel : BaseCraftmansSatchel
    {
        [Constructable]
        public CarpentrySatchel()
        {
            AddBaseLoot( Loot.MLArmorTypes, Loot.MLWeaponTypes, Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType );
 
            if ( Utility.RandomDouble() < 0.50 )
                AddRecipe( DefCarpentry.CraftSystem );
 
            // TODO: Add runic dovetail saw
        }
 
        public CarpentrySatchel( Serial serial )
            : base( serial )
        {
        }
 
        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );
 
            writer.Write( (int)0 ); // version
        }
 
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
 
            int version = reader.ReadInt();
        }
    }
}

and am trying to add the BlacksmithSatchel to monsters, but i keep coming up with

Code:
Errors:
 + Mobiles/Monsters/Humanoid/Melee/OrcishLord.cs:
    CS0246: Line 63: The type or namespace name 'BlacksmithSatchel' could not be
 found (are you missing a using directive or an assembly reference?)

here is the script i'm working on

Code:
using System;
using System.Collections;
using Server.Misc;
using Server.Items;
using Server.Targeting;
 
namespace Server.Mobiles
{
    [CorpseName( "an orcish corpse" )]
    public class OrcishLord : BaseCreature
    {
        public override InhumanSpeech SpeechType{ get{ return InhumanSpeech.Orc; } }
 
        [Constructable]
        public OrcishLord() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
        {
            Name = "an orcish lord";
            Body = 138;
            BaseSoundID = 0x45A;
 
            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 Lockpick() );  break;
                case 1: PackItem( new MortarPestle() ); break;
                case 2: PackItem( new Bottle() ); break;
                case 3: PackItem( new RawRibs() ); break;
                case 4: PackItem( new Shovel() ); break;
            }
 
            PackItem( new RingmailChest() );
 
            if ( 0.3 > Utility.RandomDouble() )
                PackItem( Loot.RandomPossibleReagent() );
 
            if ( 0.2 > Utility.RandomDouble() )
                PackItem( new BolaBall() );
 
                                if ( 0.2 > Utility.RandomDouble() )
                PackItem( new BlacksmithSatchel() );
        }
 
        public override void GenerateLoot()
        {
            AddLoot( LootPack.Meager );
            AddLoot( LootPack.Average );
            // TODO: evil orc helm
        }
 
        public override bool CanRummageCorpses{ get{ return true; } }
        public override int TreasureMapLevel{ get{ return 1; } }
        public override int Meat{ get{ return 1; } }
 
        public override OppositionGroup OppositionGroup
        {
            get{ return OppositionGroup.SavagesAndOrcs; }
        }
 
        public override bool IsEnemy( Mobile m )
        {
            if ( m.Player && m.FindItemOnLayer( Layer.Helm ) is OrcishKinMask )
                return false;
 
            return base.IsEnemy( m );
        }
 
        public override void AggressiveAction( Mobile aggressor, bool criminal )
        {
            base.AggressiveAction( aggressor, criminal );
 
            Item item = aggressor.FindItemOnLayer( Layer.Helm );
 
            if ( item is OrcishKinMask )
            {
                AOS.Damage( aggressor, 50, 0, 100, 0, 0, 0 );
                item.Delete();
                aggressor.FixedParticles( 0x36BD, 20, 10, 5044, EffectLayer.Head );
                aggressor.PlaySound( 0x307 );
            }
        }
 
        public OrcishLord( Serial serial ) : base( serial )
        {
        }
 
        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 ideas?
 
Top