RunUo.Korean.Forum    :: RunUo Document 2.0 RC1 (Beta):: 
Statistics  Archive (html)  S-BLOG  [RSS FEED]   

 
  RunUo.Korean.Forum
ÀæÀºÁú¹®  ÀæÀºÁú¹®    °Ë»ö   °Ë»ö    ȸ¿ø¸®½ºÆ®  È¸¿ø¸®½ºÆ®   À¯Àú±×·ì  À¯Àú±×·ì   Gabbly äÆÃ¿­±â  Ã¤ÆÃ¿­±â 
 
ȸ¿ø°¡ÀÔ  ::  ·Î±×ÀÎ ÂÊÁö ÇÔ È®ÀÎ
 
RunUo.Korean.Forum ¢º Server Support ¢º RunUO 1.0 ¿¡¼­ ¿ùµå ±¸¼º ¹æ¹ý!
»õ ±ÛÀ» ÀÛ¼ºÇÕ´Ï´Ù.´äº¯±ÛÀ» ÀÛ¼ºÇÕ´Ï´Ù. Post Printing
¡Ø TOPIC : RunUO 1.0 ¿¡¼­ ¿ùµå ±¸¼º ¹æ¹ý! ÀÌÀü ±Û :: ´ÙÀ½ ±Û
±Û ¾´ÀÌ ¸Þ¼¼Áö ³»¿ë
khn84
ÀÛ¼º±ÛÁ¦¸ñ : RunUO 1.0 ¿¡¼­ ¿ùµå ±¸¼º ¹æ¹ý!   ±Û ÀÛ¼º½Ã°£ : 2004-10-30 Åä 2:59 pm ±ÛÀ» ÀοëÇÏ¿© ÀÛ¼ºÇÕ´Ï´Ù.

Second Cicle [3]
Second Cicle [3]

°¡ÀÔÀÏ: 2004³â 10¿ù 15ÀÏ
°Ô½Ã¹°: 24
ÁÖ ¼Ò: /

´ä±Û¿¡ ½áÀ־ ¸ø ¾Ë¾Æº¸½Ã´Â ºÐÀÌ °è½Ã´Â °Í °°¾Æ ´Ù¸¥ ºÐµéÀÌ ±Û ¿Ã¸®¼Ì´ø °ÍÀ» ÀçÆíÁýÇØ¼­ ¿Ã¸³´Ï´Ù.

¿ì¼±..

http://www.runuo.co.kr/forum/viewtopic.php?t=632

À̰÷¿¡¼­ XML ½ºÆ÷³Ê¸¦ ´Ù¿î ¹ÞÀ¸½Ã°í.

http://www.runuo.co.kr/forum/viewtopic.php?t=592

À» º¸°í µû¶óÇϽø鼭 xml ½ºÆ÷³Ê¸¦ ¼³Ä¡Çϼ¼¿ä.

¿©±â±îÁö ¼º°øÇϼ̴ٸé.

http://www.runuo.co.kr/forum/dload.php?action=file&id=7 ¿¡¼­..

RunUo Beta 36 (in World) À» ´Ù¿î¹ÞÀ¸¼Å¼­ ¾ÐÃàÀ» Ǫ½Å´Ù¸é,

Spawns À̶ó´Â Æú´õ°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù.

±× Æú´õ¸¦ RunUO 1.0 ÀÌ ¼³Ä¡µÈ Æú´õ¿¡ º¹»çÇØ³ÖÀ¸¼¼¿ä. (µðÆúÆ®·Î ¼³Ä¡Çϼ̴ٸé)½ºÅ©¸³Æú´õ°¡ ¾Æ´Ñ
C:\Program Files\RunUO Software Team ¿¡ º¹»çÇϼ¼¿ä.

±×´ÙÀ½..

¹×¿¡ ÀÖ´Â ¼Ò½ºÄڵ带 CreateWorld.cs ¶ó´Â ÆÄÀϸíÀ¸·Î ÀúÀåÇÏ½Ã°í ½ºÅ©¸³ Æú´õ¿¡ º¹»çÇØ ³ÖÀ¸¼¼¿ä.

¿©±â±îÁö ¿Ï¼ºÇϼÌÀ¸¸é ³¡³ª¼Ì½À´Ï´Ù.

¼­¹ö¸¦ ½ÇÇà½ÃŰ½Å´ÙÀ½¿¡ °ü¸®ÀÚ °èÁ¤À¸·Î Á¢¼ÓÇϼż­ [CreateWorld ¶ó°í ÇÏ½Ã¸é ±ÛÀÌ ÂÞ¿í ¿Ã¶ó°¡¸é¼­

¿ùµå(¸÷½ºÆ÷³Ê)¸¦ »ý¼º½Ãŵ´Ï´Ù. ¿ÏÀüÈ÷ ³¡³µ´Ù´Â ¸Þ¼¼Áö(¿µ¾î)°¡ ¶ß±â Àü±îÁö´Â °¡¸¸È÷ ³öµÎ¼¼¿ä.

//nina101´Ô°ú kjss10´ÔÀÇ ±ÛÀ» Àοë, ÀçÆí¼ºÇÏ¿©¼­ ¿Ã¸° ±ÛÀÔ´Ï´Ù. (__)..

CreateWorld.cs
ÄÚµå : 

using System;
using System.Collections;
using System.IO;
using Server;
using Server.Mobiles;
using Server.Items;
using Server.Scripts.Commands;
using Server.Network;
using Server.Gumps;

namespace Server.Scripts.Commands
{
   /// <summary>
   /// Summary description for CreateWorld.
   /// </summary>
   public class CreateWorld
   {
      public CreateWorld()
      {
      }

        public static void Initialize()
        {
            Server.Commands.Register( "CreateWorld", AccessLevel.Administrator, new CommandEventHandler( Create_OnCommand ) );
        }

        [Usage( "Creates a new world from scratch (only run this once!)" )]
        [Description( "Creates an entire world based on the commands defined." )]
        private static void Create_OnCommand( CommandEventArgs e )
        {
            // Store the mobiles current map
            Map map = e.Mobile.Map;

            // Construct the entire world based on the commands below
            if( e.Arguments.Length == 0 )
            {
                string[] Args = new string[1] { Path.Combine( Core.BaseDirectory, "items.wsc" ) };
                e = new CommandEventArgs( e.Mobile, e.Command, Args[0], Args );
            }
 
            try
            {
                e.Mobile.SendGump( new CreateWorldGump( e ) );
            }
            finally
            {
                // Place the mobile back on the original map
                e.Mobile.Map = map;
            }
        }

        internal static void LoadSpawns( CommandEventArgs e )
        {
            try
            {
                // Search the directory specified for any *.xml files
                // and load all spawners from each xml file
                string[] SpawnFiles = Directory.GetFiles( e.Arguments[0], "*.xml" );

                // Load each file
                foreach( string SpawnFile in SpawnFiles )
                {
                    e.Arguments[0] = SpawnFile;
                    XmlSpawner.Load_OnCommand( e );
                }
            }
            catch( System.Exception se )
            {
                Console.WriteLine( se.ToString() );
            }

            return;
        }
    }

    public class CreateWorldGump : Gump
    {
        private CommandEventArgs m_CommandEventArgs;
        public CreateWorldGump( CommandEventArgs e ) : base( 30,30 )
        {
            m_CommandEventArgs = e;
            Closable = true;
            Dragable = true;

            AddPage(0);

            AddBackground( 0, 0, 320, 310, 5054 );
            AddLabel( 120, 2, 200, "Create World" );
            AddImageTiled( 10, 20, 300, 132, 3004 );
            AddLabel( 30, 27, 200, "Facet" );
            AddLabel( 172, 27, 200, "Spawn" );
            AddLabel( 224, 27, 200, "Import Items" );
            AddImageTiled( 20, 45, 280, 2, 10001 );
            AddImageTiled( 20, 25, 280, 2, 10001 );
            AddImageTiled( 20, 25, 2, 122, 10003 );
            AddImageTiled( 163, 25, 2, 122, 10003 );
            AddImageTiled( 218, 25, 2, 122, 10003 );
            AddImageTiled( 300, 25, 2, 122, 10003 );
            AddImageTiled( 20, 70, 280, 2, 10001 );
            AddImageTiled( 20, 95, 280, 2, 10001 );
            AddImageTiled( 20, 120, 280, 2, 10001 );
            AddImageTiled( 20, 145, 280, 2, 10001 );
            AddLabel( 35, 51, 200, "Trammel" );
            AddLabel( 35, 76, 200, "Felucca" );
            AddLabel( 35, 101, 200, "Ilshenar" );
            AddLabel( 35, 126, 200, "Malas" );

            // Facet level options
            AddCheck( 181, 48, 210, 211, true, 101 ); // Spawn Trammel
            AddCheck( 181, 73, 210, 211, true, 102 ); // Spawn Felucca
            AddCheck( 181, 98, 210, 211, true, 103 ); // Spawn Ilshenar
            AddCheck( 181, 123, 210, 211, true, 104 );// Spawn Malas
         AddCheck( 230, 60, 210, 211, true, 200 ); // Decorate Britania
            AddCheck( 265, 48, 210, 211, true, 201 ); // Decorate Trammel
            AddCheck( 265, 73, 210, 211, true, 202 ); // Decorate Felucca
         AddCheck( 250, 98, 210, 211, true, 203 ); // Decorate Ilshenar
            AddCheck( 250, 123, 210, 211, true, 204 ); // Decorate Malas
         
         //AddLabel( 248, 48, 200, "N/A" );
         //AddLabel( 248, 73, 200, "N/A" );
            //AddLabel( 248, 101, 200, "N/A" );
            //AddLabel( 248, 127, 200, "N/A" );

            // World level options
            AddCheck( 20, 155, 210, 211, true, 11 );
            AddLabel( 40, 158, 200, "Decorate World - [Decorate");
            AddCheck( 20, 180, 210, 211, true, 12 );
            AddLabel( 40, 183, 200, "Moongates - [MoonGen");
            AddCheck( 20, 205, 210, 211, true, 13 );
            AddLabel( 40, 208, 200, "Teleporters - [TelGen");
            AddCheck( 20, 230, 210, 211, true, 14 );
            AddLabel( 40, 233, 200, "Signs - [SignGen");
            AddCheck( 20, 255, 210, 211, true, 15 );
            AddLabel( 40, 258, 200, "Doors - [DoorGen");
           
            AddButton( 170, 280, 247, 249, 1, GumpButtonType.Reply, 0 );
            AddButton( 245, 280, 241, 243, 0, GumpButtonType.Reply, 0 );
        }

        public override void OnResponse( NetState state, RelayInfo info )
        {
            Mobile from = state.Mobile;

            switch( info.ButtonID )
            {
                case 0: // Closed or Cancel
                {
                    return;
                }

                default:
                {
                    // Make sure that the OK, button was pressed
                    if( info.ButtonID == 1 )
                    {
                        // Get the array of switches selected
                        ArrayList Selections = new ArrayList( info.Switches );

                        // Decorate the world
                        if( Selections.Contains( 11 ) == true )
                        {
                            from.SendMessage( "Generating world decoration, please wait." );

                            Decorate.Generate( "Data/Decoration/Britannia", Map.Trammel, Map.Felucca );
                     Decorate.Generate( "Data/Decoration/Trammel", Map.Trammel );
                     Decorate.Generate( "Data/Decoration/Felucca", Map.Felucca );
                     Decorate.Generate( "Data/Decoration/Ilshenar", Map.Ilshenar );
                     Decorate.Generate( "Data/Decoration/Malas", Map.Malas );

                     from.SendMessage( "World generating complete.");
                        }

                        // Decorate
                  if( Selections.Contains( 200 ) == true )
                        {
                     from.Say( "Decorating Britannia..." );
                            Decorate.Generate( "Data/Decoration/Britannia", Map.Trammel, Map.Felucca );
                        }

                        if( Selections.Contains( 201 ) == true )
                        {
                     from.Say( "Decorating Trammel..." );
                     Decorate.Generate( "Data/Decoration/Trammel", Map.Trammel );
                        }

                        if( Selections.Contains( 202 ) == true )
                        {
                     from.Say( "Decorating Felucca..." );
                     Decorate.Generate( "Data/Decoration/Felucca", Map.Felucca );
                        }

                        if( Selections.Contains( 203 ) == true )
                        {
                     from.Say( "Decorating Ilshenar..." );
                     Decorate.Generate( "Data/Decoration/Ilshenar", Map.Ilshenar );
                        }

                        if( Selections.Contains( 204 ) == true )
                        {
                     from.Say( "Decorating Malas..." );
                     Decorate.Generate( "Data/Decoration/Malas", Map.Malas );
                        }

                        // Generate all of the world moongates
                        if( Selections.Contains( 12 ) == true )
                        {
                            from.Say( "Generating Moongates..." );
                            PublicMoongate.MoonGen_OnCommand( m_CommandEventArgs );
                        }
           
                        // Generate all of the world teleporters
                        if( Selections.Contains( 13 ) == true )
                        {
                            from.Say( "Generating Teleporters..." );
                            GenTeleporter.GenTeleporter_OnCommand( m_CommandEventArgs );
                        }
           
                        // Generate all of the world signs
                        if( Selections.Contains( 14 ) == true )
                        {
                            from.Say( "Generating Signs..." );
                            SignParser.SignGen_OnCommand( m_CommandEventArgs );
                        }
           
                        // Generate all of the world doors
                        if( Selections.Contains( 15 ) == true )
                        {
                            from.Say( "Generating Doors..." );
                            DoorGenerator.DoorGen_OnCommand( m_CommandEventArgs );
                        }

                        // Now spawn any selected facets
                        if( Selections.Contains( 101 ) == true )
                        {
                            from.Say( "Spawning Trammel..." );
                            m_CommandEventArgs.Arguments[0] = "Spawns\\Trammel\\";
                            CreateWorld.LoadSpawns( m_CommandEventArgs );
                            from.Say( "Done Spawning Trammel." );
                        }

                        if( Selections.Contains( 102 ) == true )
                        {
                            from.Say( "Spawning Felucca..." );
                            m_CommandEventArgs.Arguments[0] = "Spawns\\Felucca\\";
                            CreateWorld.LoadSpawns( m_CommandEventArgs );
                            from.Say( "Done Spawning Felucca." );
                        }

                        if( Selections.Contains( 103 ) == true )
                        {
                            from.Say( "Spawning Ilshenar..." );
                            m_CommandEventArgs.Arguments[0] = "Spawns\\Ilshenar\\";
                            CreateWorld.LoadSpawns( m_CommandEventArgs );
                            from.Say( "Done Spawning Ilshenar." );
                        }

                        if( Selections.Contains( 104 ) == true )
                        {
                            from.Say( "Spawning Malas..." );
                            m_CommandEventArgs.Arguments[0] = "Spawns\\Malas\\";
                            CreateWorld.LoadSpawns( m_CommandEventArgs);
                            from.Say( "Done Spawning Malas." );
                        }
                    }

                    from.Say( "World Creation Completed!" );

                    break;
                }
            }
        }
    }
}
¡è ¸Ç À§·Î °¡±â ¡è
ȸ¿ø ÇÁ·ÎÇÊ º¸±â ÂÊÁö º¸³»±â
kjss10
ÀÛ¼º±ÛÁ¦¸ñ : ÀÌ°É Çϸé...   ±Û ÀÛ¼º½Ã°£ : 2004-10-31 ÀÏ 9:48 am ±ÛÀ» ÀοëÇÏ¿© ÀÛ¼ºÇÕ´Ï´Ù.

Eighth Cicle [3]
Eighth Cicle [3]

°¡ÀÔÀÏ: 2004³â 01¿ù 19ÀÏ
°Ô½Ã¹°: 211
ÁÖ ¼Ò: ¼­¿ï °­µ¿±¸ °í´ö1µ¿/560¹øÁö ÁöÃþ101È£

½ºÆùÆú´õÀÇ ½ºÆùÆÄÀÏµé ¸î¸î°³¸¦ ¼öÁ¤ÇØÁÖÁö ¾ÊÀ¸¸é ½ºÆùµÇÁö ¾Ê´Â¸÷µéÀÌ ¸î ÀÖ½À´Ï´Ù.
¡è ¸Ç À§·Î °¡±â ¡è
ȸ¿ø ÇÁ·ÎÇÊ º¸±â ÂÊÁö º¸³»±â E-Mail º¸³»±â MSN ¸Þ½ÅÀú
yuminsu
ÀÛ¼º±ÛÁ¦¸ñ : 1.0¿¡¼­ ½ºÆù±îÁö ÆÐÄ¡ ¿Ï·áÇߴµ¥¿ä ÀºÇà¿¡ ¾ÆÀÌÅÛ ¹«Áö ¸·ÁöÇÏ   ±Û ÀÛ¼º½Ã°£ : 2004-10-31 ÀÏ 10:57 am ±ÛÀ» ÀοëÇÏ¿© ÀÛ¼ºÇÕ´Ï´Ù.

First Cicle [6]
First Cicle [6]

°¡ÀÔÀÏ: 2004³â 10¿ù 22ÀÏ
°Ô½Ã¹°: 13
ÁÖ ¼Ò: ¼­¿ï ¾çõ±¸ ½Å¿ù3µ¿/40¡­49¹øÁö

CharacterCreation <- È­ÀÏ ¼öÁ¤Çߴµ¥

ºñ±³ Çß¼­ ¼öÁ¤ÇغÁ´Âµ¥

¼öÁ¤ÀÌ ¾È됍´Ï´Ù.

¾Æ¸¶ ½ºÆùÈ­À϶§¹®ÀΰŠ°°Àºµ¥¿ä..

¹®Á¦°¡ ÇØ°áÀÌ ¾ÈµÅ³×¿ä..

ÁÁÀº ¹æ¹ý ¾øÀ»±î¿ä??
¡è ¸Ç À§·Î °¡±â ¡è
ȸ¿ø ÇÁ·ÎÇÊ º¸±â ÂÊÁö º¸³»±â
khn84
ÀÛ¼º±ÛÁ¦¸ñ : kiss10 ´Ô Âü°í °¨»çÇÕ´Ï´Ù. (__) ±×¸®°í À¯¹Î¼ö´Ô   ±Û ÀÛ¼º½Ã°£ : 2004-10-31 ÀÏ 1:08 pm ±ÛÀ» ÀοëÇÏ¿© ÀÛ¼ºÇÕ´Ï´Ù.

Second Cicle [3]
Second Cicle [3]

°¡ÀÔÀÏ: 2004³â 10¿ù 15ÀÏ
°Ô½Ã¹°: 24
ÁÖ ¼Ò: /

Á¦°¡ »ç¿ëÇϰí ÀÖ´Â CaracterCreation.cs ¸¦ ½áºÙ¿©³õ°Ú½À´Ï´Ù.

Âü°í°¡ µÇ¾úÀ¸¸é ÁÁ°Ú³×¿ä.. ^^

ps. ¹Ø¿¡ ¿Ã·ÁÁ® ÀÖ´Â °ÍÀº óÀ½ Äɸ¯À» ¸¸µé¾úÀ»¶§ ÀºÇà¿¡ ¾Æ¹«°Íµµ ¾ø´Â °ÍÀÔ´Ï´Ù.

// º¸½Ã¸é..
private static void FillBankAOS( Mobile m )
private static void FillBankbox( Mobile m )
private static void AddPowerScrolls( BankBox bank )
ºÎºÐµéÀÌ ÁÖ¼®Ã³¸®µÇÀÖ´Â °ÍÀ» º¸½Ç¼ö ÀÖ½À´Ï´Ù.
°Ô´Ù°¡ ÀÌ ÇÔ¼öµéÀÌ ÀÖ´Â ºÎºÐÀ» ÀÚ¼¼È÷ »ìÆìº¸½Ã¸é °øÅëÀûÀ¸·Î bank. À¸·Î ½ÃÀ۵ȴٴ °ÍÀ» ¶Ç º¸½Ç¼ö ÀÖ½À´Ï´Ù.
ÀÌ ºÎºÐµéÀ» Çѹø¾¿ ´õ »ìÆìº¸½Å´Ù¸é ´Ù¸¥ ¼Ò½º¸¦ »ìÆìº¸½Ã´Âµ¥¿¡ Á¶±ÝÀÌ¶óµµ Á»´õ µµ¿òÀÌ µÇ½Ç²¨¶ó°í ¹Ï½À´Ï´Ù. (__)

ÄÚµå : 

using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Network;
using Server.Accounting;

namespace Server.Misc
{
   public class CharacterCreation
   {
      public static void Initialize()
      {
         // Register our event handler
         EventSink.CharacterCreated += new CharacterCreatedEventHandler( EventSink_CharacterCreated );
      }

      private static void AddBackpack( Mobile m )
      {
         Container pack = m.Backpack;

         if ( pack == null )
         {
            pack = new Backpack();
            pack.Movable = false;

            m.AddItem( pack );
         }

         PackItem( new RedBook( "a book", m.Name, 20, true ) );
         PackItem( new Gold( 1000 ) ); // Starting gold can be customized here
         PackItem( new Dagger() );
         PackItem( new Candle() );
      }

      private static Item MakeNewbie( Item item )
      {
         if ( !Core.AOS )
            item.LootType = LootType.Newbied;

         return item;
      }

      private static void PlaceItemIn( Container parent, int x, int y, Item item )
      {
         parent.AddItem( item );
         item.Location = new Point3D( x, y, 0 );
      }

      private static Item MakePotionKeg( PotionEffect type, int hue )
      {
         PotionKeg keg = new PotionKeg();

         keg.Held = 100;
         keg.Type = type;
         keg.Hue = hue;

         return MakeNewbie( keg );
      }

      private static void FillBankAOS( Mobile m )
      {
         /*
         BankBox bank = m.BankBox;

         if ( bank == null )
            return;

         // The new AOS bankboxes don't have powerscrolls, they are automatically 'applied':

         for ( int i = 0; i < PowerScroll.Skills.Length; ++i )
            m.Skills[PowerScroll.Skills[i]].Cap = 120.0;

         m.StatCap = 250;


         Container cont;


         // Begin box of money
         cont = new WoodenBox();
         cont.ItemID = 0xE7D;
         cont.Hue = 0x489;

         PlaceItemIn( cont, 16, 51, new BankCheck( 500000 ) );
         PlaceItemIn( cont, 28, 51, new BankCheck( 250000 ) );
         PlaceItemIn( cont, 40, 51, new BankCheck( 100000 ) );
         PlaceItemIn( cont, 52, 51, new BankCheck( 100000 ) );
         PlaceItemIn( cont, 64, 51, new BankCheck(  50000 ) );

         PlaceItemIn( cont, 34, 115, MakeNewbie( new Gold( 60000 ) ) );

         PlaceItemIn( bank, 18, 169, cont );
         // End box of money


         // Begin bag of potion kegs
         cont = new Backpack();
         cont.Name = "Various Potion Kegs";

         PlaceItemIn( cont,  45, 149, MakePotionKeg( PotionEffect.CureGreater, 0x2D ) );
         PlaceItemIn( cont,  69, 149, MakePotionKeg( PotionEffect.HealGreater, 0x499 ) );
         PlaceItemIn( cont,  93, 149, MakePotionKeg( PotionEffect.PoisonDeadly, 0x46 ) );
         PlaceItemIn( cont, 117, 149, MakePotionKeg( PotionEffect.RefreshTotal, 0x21 ) );
         PlaceItemIn( cont, 141, 149, MakePotionKeg( PotionEffect.ExplosionGreater, 0x74 ) );

         PlaceItemIn( cont, 93, 82, MakeNewbie( new Bottle( 1000 ) ) );

         PlaceItemIn( bank, 53, 169, cont );
         // End bag of potion kegs


         // Begin bag of tools
         cont = new Bag();
         cont.Name = "Tool Bag";

         PlaceItemIn( cont, 30,  35, MakeNewbie( new TinkerTools( 1000 ) ) );
         PlaceItemIn( cont, 60,  35, new HousePlacementTool() );
         PlaceItemIn( cont, 90,  35, MakeNewbie( new DovetailSaw( 1000 ) ) );
         PlaceItemIn( cont, 30,  68, MakeNewbie( new Scissors() ) );
         PlaceItemIn( cont, 45,  68, MakeNewbie( new MortarPestle( 1000 ) ) );
         PlaceItemIn( cont, 75,  68, MakeNewbie( new ScribesPen( 1000 ) ) );
         PlaceItemIn( cont, 90,  68, MakeNewbie( new SmithHammer( 1000 ) ) );
         PlaceItemIn( cont, 30, 118, MakeNewbie( new TwoHandedAxe() ) );
         PlaceItemIn( cont, 60, 118, MakeNewbie( new FletcherTools( 1000 ) ) );
         PlaceItemIn( cont, 90, 118, MakeNewbie( new SewingKit( 1000 ) ) );

         PlaceItemIn( bank, 118, 169, cont );
         // End bag of tools


         // Begin bag of archery ammo
         cont = new Bag();
         cont.Name = "Bag Of Archery Ammo";

         PlaceItemIn( cont, 48, 76, MakeNewbie( new Arrow( 5000 ) ) );
         PlaceItemIn( cont, 72, 76, MakeNewbie( new Bolt( 5000 ) ) );

         PlaceItemIn( bank, 118, 124, cont );
         // End bag of archery ammo


         // Begin bag of treasure maps
         cont = new Bag();
         cont.Name = "Bag Of Treasure Maps";

         PlaceItemIn( cont, 30, 35, MakeNewbie( new TreasureMap( 1, Map.Trammel ) ) );
         PlaceItemIn( cont, 45, 35, MakeNewbie( new TreasureMap( 2, Map.Trammel ) ) );
         PlaceItemIn( cont, 60, 35, MakeNewbie( new TreasureMap( 3, Map.Trammel ) ) );
         PlaceItemIn( cont, 75, 35, MakeNewbie( new TreasureMap( 4, Map.Trammel ) ) );
         PlaceItemIn( cont, 90, 35, MakeNewbie( new TreasureMap( 5, Map.Trammel ) ) );

         PlaceItemIn( cont, 30, 50, MakeNewbie( new TreasureMap( 1, Map.Trammel ) ) );
         PlaceItemIn( cont, 45, 50, MakeNewbie( new TreasureMap( 2, Map.Trammel ) ) );
         PlaceItemIn( cont, 60, 50, MakeNewbie( new TreasureMap( 3, Map.Trammel ) ) );
         PlaceItemIn( cont, 75, 50, MakeNewbie( new TreasureMap( 4, Map.Trammel ) ) );
         PlaceItemIn( cont, 90, 50, MakeNewbie( new TreasureMap( 5, Map.Trammel ) ) );

         PlaceItemIn( cont, 55, 100, MakeNewbie( new Lockpick( 30 ) ) );
         PlaceItemIn( cont, 60, 100, MakeNewbie( new Pickaxe() ) );

         PlaceItemIn( bank, 98, 124, cont );
         // End bag of treasure maps


         // Begin bag of raw materials
         cont = new Bag();
         cont.Hue = 0x835;
         cont.Name = "Raw Materials Bag";

         PlaceItemIn( cont, 92, 60, MakeNewbie( new BarbedLeather( 5000 ) ) );
         PlaceItemIn( cont, 92, 68, MakeNewbie( new HornedLeather( 5000 ) ) );
         PlaceItemIn( cont, 92, 76, MakeNewbie( new SpinedLeather( 5000 ) ) );
         PlaceItemIn( cont, 92, 84, MakeNewbie( new Leather( 5000 ) ) );

         PlaceItemIn( cont, 30, 118, MakeNewbie( new Cloth( 5000 ) ) );
         PlaceItemIn( cont, 30,  84, MakeNewbie( new Board( 5000 ) ) );
         PlaceItemIn( cont, 57,  80, MakeNewbie( new BlankScroll( 500 ) ) );

         PlaceItemIn( cont, 30,  35, MakeNewbie( new DullCopperIngot( 5000 ) ) );
         PlaceItemIn( cont, 37,  35, MakeNewbie( new ShadowIronIngot( 5000 ) ) );
         PlaceItemIn( cont, 44,  35, MakeNewbie( new CopperIngot( 5000 ) ) );
         PlaceItemIn( cont, 51,  35, MakeNewbie( new BronzeIngot( 5000 ) ) );
         PlaceItemIn( cont, 58,  35, MakeNewbie( new GoldIngot( 5000 ) ) );
         PlaceItemIn( cont, 65,  35, MakeNewbie( new AgapiteIngot( 5000 ) ) );
         PlaceItemIn( cont, 72,  35, MakeNewbie( new VeriteIngot( 5000 ) ) );
         PlaceItemIn( cont, 79,  35, MakeNewbie( new ValoriteIngot( 5000 ) ) );
         PlaceItemIn( cont, 86,  35, MakeNewbie( new IronIngot( 5000 ) ) );

         PlaceItemIn( cont, 30,  59, MakeNewbie( new RedScales( 5000 ) ) );
         PlaceItemIn( cont, 36,  59, MakeNewbie( new YellowScales( 5000 ) ) );
         PlaceItemIn( cont, 42,  59, MakeNewbie( new BlackScales( 5000 ) ) );
         PlaceItemIn( cont, 48,  59, MakeNewbie( new GreenScales( 5000 ) ) );
         PlaceItemIn( cont, 54,  59, MakeNewbie( new WhiteScales( 5000 ) ) );
         PlaceItemIn( cont, 60,  59, MakeNewbie( new BlueScales( 5000 ) ) );

         PlaceItemIn( bank, 98, 169, cont );
         // End bag of raw materials


         // Begin bag of spell casting stuff
         cont = new Backpack();
         cont.Hue = 0x480;
         cont.Name = "Spell Casting Stuff";

         PlaceItemIn( cont, 45, 105, new Spellbook( UInt64.MaxValue ) );
         PlaceItemIn( cont, 65, 105, new NecromancerSpellbook( (UInt64)0xFFFF ) );
         PlaceItemIn( cont, 85, 105, new BookOfChivalry( (UInt64)0x3FF ) );

         Runebook runebook = new Runebook( 10 );
         runebook.CurCharges = runebook.MaxCharges;
         PlaceItemIn( cont, 105, 105, runebook );

         Item toHue = new BagOfReagents( 150 );
         toHue.Hue = 0x2D;
         PlaceItemIn( cont, 45, 150, toHue );

         toHue = new BagOfNecroReagents( 150 );
         toHue.Hue = 0x488;
         PlaceItemIn( cont, 65, 150, toHue );

         PlaceItemIn( cont, 140, 150, new BagOfAllReagents( 500 ) );

         for ( int i = 0; i < 9; ++i )
            PlaceItemIn( cont, 45 + (i * 10), 75, MakeNewbie( new RecallRune() ) );

         PlaceItemIn( bank, 78, 169, cont );
         // End bag of spell casting stuff
         */
      }

      private static void FillBankbox( Mobile m )
      {
/*
         if ( Core.AOS )
         {
            FillBankAOS( m );
            return;
         }

         BankBox bank = m.BankBox;

         if ( bank != null )
         {
            bank.DropItem( new BankCheck( 1000000 ) );

            // Full spellbook
            Spellbook book = new Spellbook();

            book.Content = ulong.MaxValue;

            bank.DropItem( book );

            Bag bag = new Bag();

            for ( int i = 0; i < 5; ++i )
               bag.DropItem( new Moonstone( MoonstoneType.Felucca ) );

            // Felucca moonstones
            bank.DropItem( bag );

            bag = new Bag();

            for ( int i = 0; i < 5; ++i )
               bag.DropItem( new Moonstone( MoonstoneType.Trammel ) );

            // Trammel moonstones
            bank.DropItem( bag );

            // Treasure maps
            bank.DropItem( new TreasureMap( 1, Map.Trammel ) );
            bank.DropItem( new TreasureMap( 2, Map.Trammel ) );
            bank.DropItem( new TreasureMap( 3, Map.Trammel ) );
            bank.DropItem( new TreasureMap( 4, Map.Trammel ) );
            bank.DropItem( new TreasureMap( 5, Map.Trammel ) );

            // Bag containing 50 of each reagent
            bank.DropItem( new BagOfReagents( 50 ) );

            // Craft tools
            bank.DropItem( MakeNewbie( new Scissors() ) );
            bank.DropItem( MakeNewbie( new SewingKit( 1000 ) ) );
            bank.DropItem( MakeNewbie( new SmithHammer( 1000 ) ) );
            bank.DropItem( MakeNewbie( new FletcherTools( 1000 ) ) );
            bank.DropItem( MakeNewbie( new DovetailSaw( 1000 ) ) );
            bank.DropItem( MakeNewbie( new MortarPestle( 1000 ) ) );
            bank.DropItem( MakeNewbie( new ScribesPen( 1000 ) ) );
            bank.DropItem( MakeNewbie( new TinkerTools( 1000 ) ) );

            // A few dye tubs
            bank.DropItem( new Dyes() );
            bank.DropItem( new DyeTub() );
            bank.DropItem( new DyeTub() );
            bank.DropItem( new BlackDyeTub() );

            DyeTub darkRedTub = new DyeTub();

            darkRedTub.DyedHue = 0x485;
            darkRedTub.Redyable = false;

            bank.DropItem( darkRedTub );

            // Some food
            bank.DropItem( MakeNewbie( new Apple( 1000 ) ) );

            // Resources
            bank.DropItem( MakeNewbie( new Feather( 1000 ) ) );
            bank.DropItem( MakeNewbie( new BoltOfCloth( 1000 ) ) );
            bank.DropItem( MakeNewbie( new BlankScroll( 1000 ) ) );
            bank.DropItem( MakeNewbie( new Hides( 1000 ) ) );
            bank.DropItem( MakeNewbie( new Bandage( 1000 ) ) );
            bank.DropItem( MakeNewbie( new Bottle( 1000 ) ) );
            bank.DropItem( MakeNewbie( new Log( 1000 ) ) );

            bank.DropItem( MakeNewbie( new IronIngot( 5000 ) ) );
            bank.DropItem( MakeNewbie( new DullCopperIngot( 5000 ) ) );
            bank.DropItem( MakeNewbie( new ShadowIronIngot( 5000 ) ) );
            bank.DropItem( MakeNewbie( new CopperIngot( 5000 ) ) );
            bank.DropItem( MakeNewbie( new BronzeIngot( 5000 ) ) );
            bank.DropItem( MakeNewbie( new GoldIngot( 5000 ) ) );
            bank.DropItem( MakeNewbie( new AgapiteIngot( 5000 ) ) );
            bank.DropItem( MakeNewbie( new VeriteIngot( 5000 ) ) );
            bank.DropItem( MakeNewbie( new ValoriteIngot( 5000 ) ) );

            // Reagents
            bank.DropItem( MakeNewbie( new BlackPearl( 1000 ) ) );
            bank.DropItem( MakeNewbie( new Bloodmoss( 1000 ) ) );
            bank.DropItem( MakeNewbie( new Garlic( 1000 ) ) );
            bank.DropItem( MakeNewbie( new Ginseng( 1000 ) ) );
            bank.DropItem( MakeNewbie( new MandrakeRoot( 1000 ) ) );
            bank.DropItem( MakeNewbie( new Nightshade( 1000 ) ) );
            bank.DropItem( MakeNewbie( new SulfurousAsh( 1000 ) ) );
            bank.DropItem( MakeNewbie( new SpidersSilk( 1000 ) ) );

            // Some extra starting gold
            bank.DropItem( MakeNewbie( new Gold( 9000 ) ) );

            // 5 blank recall runes
            for ( int i = 0; i < 5; ++i )
               bank.DropItem( MakeNewbie( new RecallRune() ) );

            AddPowerScrolls( bank );
         }
*/
      }
/*
      private static void AddPowerScrolls( BankBox bank )
      {
         Bag bag = new Bag();

         for ( int i = 0; i < PowerScroll.Skills.Length; ++i )
            bag.DropItem( new PowerScroll( PowerScroll.Skills[i], 120.0 ) );

         bag.DropItem( new StatCapScroll( 250 ) );

         bank.DropItem( bag );
      }
*/
      private static void AddShirt( Mobile m, int shirtHue )
      {
         int hue = Utility.ClipDyedHue( shirtHue & 0x3FFF );

         switch ( Utility.Random( 3 ) )
         {
            case 0: EquipItem( new Shirt( hue ), true ); break;
            case 1: EquipItem( new FancyShirt( hue ), true ); break;
            case 2: EquipItem( new Doublet( hue ), true ); break;
         }
      }

      private static void AddPants( Mobile m, int pantsHue )
      {
         int hue = Utility.ClipDyedHue( pantsHue & 0x3FFF );

         if ( m.Female )
         {
            switch ( Utility.Random( 2 ) )
            {
               case 0: EquipItem( new Skirt( hue ), true ); break;
               case 1: EquipItem( new Kilt( hue ), true ); break;
            }
         }
         else
         {
            switch ( Utility.Random( 2 ) )
            {
               case 0: EquipItem( new LongPants( hue ), true ); break;
               case 1: EquipItem( new ShortPants( hue ), true ); break;
            }
         }
      }

      private static void AddShoes( Mobile m )
      {
         EquipItem( new Shoes( Utility.RandomYellowHue() ), true );
      }

      private static void AddHair( Mobile m, int itemID, int hue )
      {
         Item item;

         switch ( itemID & 0x3FFF )
         {
            case 0x2044: item = new Mohawk( hue ); break;
            case 0x2045: item = new PageboyHair( hue ); break;
            case 0x2046: item = new BunsHair( hue ); break;
            case 0x2047: item = new Afro( hue ); break;
            case 0x2048: item = new ReceedingHair( hue ); break;
            case 0x2049: item = new TwoPigTails( hue ); break;
            case 0x204A: item = new KrisnaHair( hue ); break;
            case 0x203B: item = new ShortHair( hue ); break;
            case 0x203C: item = new LongHair( hue ); break;
            case 0x203D: item = new PonyTail( hue ); break;
            default: return;
         }

         m.AddItem( item );
      }

      private static void AddBeard( Mobile m, int itemID, int hue )
      {
         if ( m.Female )
            return;

         Item item;

         switch ( itemID & 0x3FFF )
         {
            case 0x203E: item = new LongBeard( hue ); break;
            case 0x203F: item = new ShortBeard( hue ); break;
            case 0x2040: item = new Goatee( hue ); break;
            case 0x2041: item = new Mustache( hue ); break;
            case 0x204B: item = new MediumShortBeard( hue ); break;
            case 0x204C: item = new MediumLongBeard( hue ); break;
            case 0x204D: item = new Vandyke( hue ); break;
            default: return;
         }

         m.AddItem( item );
      }

      private static Mobile CreateMobile( Account a )
      {
         for ( int i = 0; i < 5; ++i )
            if ( a[i] == null )
               return (a[i] = new PlayerMobile());

         return null;
      }

      private static void EventSink_CharacterCreated( CharacterCreatedEventArgs args )
      {
         Mobile newChar = CreateMobile( args.Account as Account );

         if ( newChar == null )
         {
            Console.WriteLine( "Login: {0}: Character creation failed, account full", args.State );
            return;
         }

         args.Mobile = newChar;
         m_Mobile = newChar;

         newChar.Player = true;
         newChar.AccessLevel = ((Account)args.Account).AccessLevel;
         newChar.Female = args.Female;
         newChar.Body = newChar.Female ? 0x191 : 0x190;
         newChar.Hue = Utility.ClipSkinHue( args.Hue & 0x3FFF ) | 0x8000;
         newChar.Hunger = 20;

         if ( newChar is PlayerMobile )
            ((PlayerMobile)newChar).Profession = args.Profession;

         SetName( newChar, args.Name );

         AddBackpack( newChar );

         SetStats( newChar, args.Str, args.Dex, args.Int );
         SetSkills( newChar, args.Skills, args.Profession );

         AddHair( newChar, args.HairID, Utility.ClipHairHue( args.HairHue & 0x3FFF ) );
         AddBeard( newChar, args.BeardID, Utility.ClipHairHue( args.BeardHue & 0x3FFF ) );

         if ( !Core.AOS || (args.Profession != 4 && args.Profession != 5) )
         {
            AddShirt( newChar, args.ShirtHue );
            AddPants( newChar, args.PantsHue );
            AddShoes( newChar );
         }

         FillBankbox( newChar );

         //CityInfo city = args.City;
         CityInfo city = new CityInfo( "Britain", "Sweet Dreams Inn", 1496, 1628, 10 );

         newChar.MoveToWorld( city.Location, Map.Felucca );

         Console.WriteLine( "Login: {0}: New character being created (account={1})", args.State, ((Account)args.Account).Username );
         Console.WriteLine( " - Character: {0} (serial={1})", newChar.Name, newChar.Serial );
         Console.WriteLine( " - Started: {0} {1}", city.City, city.Location );

         new WelcomeTimer( newChar ).Start();
      }

      private static void FixStats( ref int str, ref int dex, ref int intel )
      {
         int vStr = str - 10;
         int vDex = dex - 10;
         int vInt = intel - 10;

         if ( vStr < 0 )
            vStr = 0;

         if ( vDex < 0 )
            vDex = 0;

         if ( vInt < 0 )
            vInt = 0;

         int total = vStr + vDex + vInt;

         if ( total == 0 || total == 50 )
            return;

         double scalar = 50 / (double)total;

         vStr = (int)(vStr * scalar);
         vDex = (int)(vDex * scalar);
         vInt = (int)(vInt * scalar);

         FixStat( ref vStr, (vStr + vDex + vInt) - 50 );
         FixStat( ref vDex, (vStr + vDex + vInt) - 50 );
         FixStat( ref vInt, (vStr + vDex + vInt) - 50 );

         str = vStr + 10;
         dex = vDex + 10;
         intel = vInt + 10;
      }

      private static void FixStat( ref int stat, int diff )
      {
         stat += diff;

         if ( stat < 0 )
            stat = 0;
         else if ( stat > 50 )
            stat = 50;
      }

      private static void SetStats( Mobile m, int str, int dex, int intel )
      {
         FixStats( ref str, ref dex, ref intel );

         if ( str < 10 || str > 60 || dex < 10 || dex > 60 || intel < 10 || intel > 60 || (str + dex + intel) != 80 )
         {
            str = 10;
            dex = 10;
            intel = 10;
         }

         m.InitStats( str, dex, intel );
      }

      private static void SetName( Mobile m, string name )
      {
         name = name.Trim();

         if ( !NameVerification.Validate( name, 2, 16, true, true, true, 1, NameVerification.SpaceDashPeriodQuote ) )
            name = "Generic Player";

         m.Name = name;
      }

      private static bool ValidSkills( SkillNameValue[] skills )
      {
         int total = 0;

         for ( int i = 0; i < skills.Length; ++i )
         {
            if ( skills[i].Value < 0 || skills[i].Value > 50 )
               return false;

            total += skills[i].Value;

            for ( int j = i + 1; j < skills.Length; ++j )
            {
               if ( skills[j].Value > 0 && skills[j].Name == skills[i].Name )
                  return false;
            }
         }

         return ( total == 100 );
      }

      private static Mobile m_Mobile;

      private static void SetSkills( Mobile m, SkillNameValue[] skills, int prof )
      {
         switch ( prof )
         {
            case 1: // Warrior
            {
               skills = new SkillNameValue[]
                  {
                     new SkillNameValue( SkillName.Anatomy, 30 ),
                     new SkillNameValue( SkillName.Healing, 45 ),
                     new SkillNameValue( SkillName.Swords, 35 ),
                     new SkillNameValue( SkillName.Tactics, 50 )
                  };

               break;
            }
            case 2: // Magician
            {
               skills = new SkillNameValue[]
                  {
                     new SkillNameValue( SkillName.EvalInt, 30 ),
                     new SkillNameValue( SkillName.Wrestling, 30 ),
                     new SkillNameValue( SkillName.Magery, 50 ),
                     new SkillNameValue( SkillName.Meditation, 50 )
                  };

               break;
            }
            case 3: // Blacksmith
            {
               skills = new SkillNameValue[]
                  {
                     new SkillNameValue( SkillName.Mining, 30 ),
                     new SkillNameValue( SkillName.ArmsLore, 30 ),
                     new SkillNameValue( SkillName.Blacksmith, 50 ),
                     new SkillNameValue( SkillName.Tinkering, 50 )
                  };

               break;
            }
            case 4: // Necromancer
            {
               if ( !Core.AOS )
                  goto default;

               skills = new SkillNameValue[]
                  {
                     new SkillNameValue( SkillName.Necromancy, 50 ),
                     new SkillNameValue( SkillName.Focus, 30 ),
                     new SkillNameValue( SkillName.SpiritSpeak, 30 ),
                     new SkillNameValue( SkillName.Swords, 30 ),
                     new SkillNameValue( SkillName.Tactics, 20 )
                  };

               break;
            }
            case 5: // Paladin
            {
               if ( !Core.AOS )
                  goto default;

               skills = new SkillNameValue[]
                  {
                     new SkillNameValue( SkillName.Chivalry, 51 ),
                     new SkillNameValue( SkillName.Swords, 49 ),
                     new SkillNameValue( SkillName.Focus, 30 ),
                     new SkillNameValue( SkillName.Tactics, 30 )
                  };

               break;
            }
            default:
            {
               if ( !ValidSkills( skills ) )
                  return;

               break;
            }
         }

         bool addSkillItems = true;

         switch ( prof )
         {
            case 1: // Warrior
            {
               EquipItem( new LeatherChest() );
               break;
            }
            case 4: // Necromancer
            {
               Container regs = new BagOfNecroReagents( 50 );

               if ( !Core.AOS )
               {
                  foreach ( Item item in regs.Items )
                     item.LootType = LootType.Newbied;
               }

               PackItem( regs );

               regs.LootType = LootType.Regular;

               EquipItem( new BoneHarvester() );
               EquipItem( new BoneHelm() );

               EquipItem( NecroHue( new LeatherChest() ) );
               EquipItem( NecroHue( new LeatherArms() ) );
               EquipItem( NecroHue( new LeatherGloves() ) );
               EquipItem( NecroHue( new LeatherGorget() ) );
               EquipItem( NecroHue( new LeatherLegs() ) );
               EquipItem( NecroHue( new Skirt() ) );
               EquipItem( new Sandals( 0x8FD ) );

               Spellbook book = new NecromancerSpellbook( (ulong)0x8981 ); // animate dead, evil omen, pain spike, summon familiar, wraith form

               PackItem( book );

               book.LootType = LootType.Blessed;

               addSkillItems = false;

               break;
            }
            case 5: // Paladin
            {
               EquipItem( new Broadsword() );
               EquipItem( new Helmet() );
               EquipItem( new PlateGorget() );
               EquipItem( new RingmailArms() );
               EquipItem( new RingmailChest() );
               EquipItem( new RingmailLegs() );
               EquipItem( new ThighBoots( 0x748 ) );
               EquipItem( new Cloak( 0xCF ) );
               EquipItem( new BodySash( 0xCF ) );

               Spellbook book = new BookOfChivalry( (ulong)0x3FF );

               PackItem( book );

               book.LootType = LootType.Blessed;

               break;
            }
         }

         for ( int i = 0; i < skills.Length; ++i )
         {
            SkillNameValue snv = skills[i];

            if ( snv.Value > 0 && snv.Name != SkillName.Stealth && snv.Name != SkillName.RemoveTrap )
            {
               Skill skill = m.Skills[snv.Name];

               if ( skill != null )
               {
                  skill.BaseFixedPoint = snv.Value * 10;

                  if ( addSkillItems )
                     AddSkillItems( snv.Name );
               }
            }
         }
      }

      private static void EquipItem( Item item )
      {
         EquipItem( item, false );
      }

      private static void EquipItem( Item item, bool mustEquip )
      {
         if ( !Core.AOS )
            item.LootType = LootType.Newbied;

         if ( m_Mobile != null && m_Mobile.EquipItem( item ) )
            return;

         Container pack = m_Mobile.Backpack;

         if ( !mustEquip && pack != null )
            pack.DropItem( item );
         else
            item.Delete();
      }

      private static void PackItem( Item item )
      {
         if ( !Core.AOS )
            item.LootType = LootType.Newbied;

         Container pack = m_Mobile.Backpack;

         if ( pack != null )
            pack.DropItem( item );
         else
            item.Delete();
      }

      private static void PackInstrument()
      {
         switch ( Utility.Random( 6 ) )
         {
            case 0: PackItem( new Drums() ); break;
            case 1: PackItem( new Harp() ); break;
            case 2: PackItem( new LapHarp() ); break;
            case 3: PackItem( new Lute() ); break;
            case 4: PackItem( new Tambourine() ); break;
            case 5: PackItem( new TambourineTassel() ); break;
         }
      }

      private static void PackScroll( int circle )
      {
         switch ( Utility.Random( 8 ) * (circle * 8) )
         {
            case  0: PackItem( new ClumsyScroll() ); break;
            case  1: PackItem( new CreateFoodScroll() ); break;
            case  2: PackItem( new FeeblemindScroll() ); break;
            case  3: PackItem( new HealScroll() ); break;
            case  4: PackItem( new MagicArrowScroll() ); break;
            case  5: PackItem( new NightSightScroll() ); break;
            case  6: PackItem( new ReactiveArmorScroll() ); break;
            case  7: PackItem( new WeakenScroll() ); break;
            case  8: PackItem( new AgilityScroll() ); break;
            case  9: PackItem( new CunningScroll() ); break;
            case 10: PackItem( new CureScroll() ); break;
            case 11: PackItem( new HarmScroll() ); break;
            case 12: PackItem( new MagicTrapScroll() ); break;
            case 13: PackItem( new MagicUnTrapScroll() ); break;
            case 14: PackItem( new ProtectionScroll() ); break;
            case 15: PackItem( new StrengthScroll() ); break;
            case 16: PackItem( new BlessScroll() ); break;
            case 17: PackItem( new FireballScroll() ); break;
            case 18: PackItem( new MagicLockScroll() ); break;
            case 19: PackItem( new PoisonScroll() ); break;
            case 20: PackItem( new TelekinisisScroll() ); break;
            case 21: PackItem( new TeleportScroll() ); break;
            case 22: PackItem( new UnlockScroll() ); break;
            case 23: PackItem( new WallOfStoneScroll() ); break;
         }
      }

      private static Item NecroHue( Item item )
      {
         item.Hue = 0x2C3;

         return item;
      }

      private static void AddSkillItems( SkillName skill )
      {
         switch ( skill )
         {
            case SkillName.Alchemy:
            {
               PackItem( new Bottle( 4 ) );
               PackItem( new MortarPestle() );
               EquipItem( new Robe( Utility.RandomPinkHue() ) );
               break;
            }
            case SkillName.Anatomy:
            {
               PackItem( new Bandage( 3 ) );
               EquipItem( new Robe( Utility.RandomYellowHue() ) );
               break;
            }
            case SkillName.AnimalLore:
            {
               EquipItem( new ShepherdsCrook() );
               EquipItem( new Robe( Utility.RandomBlueHue() ) );
               break;
            }
            case SkillName.Archery:
            {
               PackItem( new Arrow( 25 ) );
               EquipItem( new Bow() );
               break;
            }
            case SkillName.ArmsLore:
            {
               switch ( Utility.Random( 3 ) )
               {
                  case 0: EquipItem( new Kryss() ); break;
                  case 1: EquipItem( new Katana() ); break;
                  case 2: EquipItem( new Club() ); break;
               }

               break;
            }
            case SkillName.Begging:
            {
               EquipItem( new GnarledStaff() );
               break;
            }
            case SkillName.Blacksmith:
            {
               PackItem( new Tongs() );
               PackItem( new Pickaxe() );
               PackItem( new Pickaxe() );
               PackItem( new IronIngot( 50 ) );
               EquipItem( new HalfApron( Utility.RandomYellowHue() ) );
               break;
            }
            case SkillName.Fletching:
            {
               PackItem( new Board( 14 ) );
               PackItem( new Feather( 5 ) );
               PackItem( new Shaft( 5 ) );
               break;
            }
            case SkillName.Camping:
            {
               // TODO: Bedroll
               PackItem( new Kindling( 5 ) );
               break;
            }
            case SkillName.Carpentry:
            {
               PackItem( new Board( 10 ) );
               PackItem( new Saw() );
               EquipItem( new HalfApron( Utility.RandomYellowHue() ) );
               break;
            }
            case SkillName.Cartography:
            {
               PackItem( new BlankMap() );
               PackItem( new BlankMap() );
               PackItem( new BlankMap() );
               PackItem( new BlankMap() );
               PackItem( new Sextant() );
               break;
            }
            case SkillName.Cooking:
            {
               PackItem( new Kindling( 2 ) );
               PackItem( new RawLambLeg() );
               PackItem( new RawChickenLeg() );
               PackItem( new RawFishSteak() );
               PackItem( new SackFlour() );
               PackItem( new Pitcher( BeverageType.Water ) );
               break;
            }
            case SkillName.DetectHidden:
            {
               EquipItem( new Cloak( 0x455 ) );
               break;
            }
            case SkillName.Discordance:
            {
               PackInstrument();
               break;
            }
            case SkillName.Fencing:
            {
               EquipItem( new Kryss() );
               break;
            }
            case SkillName.Fishing:
            {
               EquipItem( new FishingPole() );
               EquipItem( new FloppyHat( Utility.RandomYellowHue() ) );
               break;
            }
            case SkillName.Healing:
            {
               PackItem( new Bandage( 50 ) );
               PackItem( new Scissors() );
               break;
            }
            case SkillName.Herding:
            {
               EquipItem( new ShepherdsCrook() );
               break;
            }
            case SkillName.Hiding:
            {
               EquipItem( new Cloak( 0x455 ) );
               break;
            }
            case SkillName.Inscribe:
            {
               PackItem( new BlankScroll( 2 ) );
               PackItem( new BlueBook() );
               break;
            }
            case SkillName.ItemID:
            {
               EquipItem( new GnarledStaff() );
               break;
            }
            case SkillName.Lockpicking:
            {
               PackItem( new Lockpick( 20 ) );
               break;
            }
            case SkillName.Lumberjacking:
            {
               EquipItem( new Hatchet() );
               break;
            }
            case SkillName.Macing:
            {
               EquipItem( new Club() );
               break;
            }
            case SkillName.Magery:
            {
               BagOfReagents regs = new BagOfReagents( 30 );

               if ( !Core.AOS )
               {
                  foreach ( Item item in regs.Items )
                     item.LootType = LootType.Newbied;
               }

               PackItem( regs );

               regs.LootType = LootType.Regular;

               PackScroll( 0 );
               PackScroll( 1 );
               PackScroll( 2 );

               Spellbook book = new Spellbook( (ulong)0x382A8C38 );

               EquipItem( book );

               book.LootType = LootType.Blessed;

               EquipItem( new Robe( Utility.RandomBlueHue() ) );
               EquipItem( new WizardsHat() );

               break;
            }
            case SkillName.Mining:
            {
               PackItem( new Pickaxe() );
               break;
            }
            case SkillName.Musicianship:
            {
               PackInstrument();
               break;
            }
            case SkillName.Parry:
            {
               EquipItem( new WoodenShield() );
               break;
            }
            case SkillName.Peacemaking:
            {
               PackInstrument();
               break;
            }
            case SkillName.Poisoning:
            {
               PackItem( new LesserPoisonPotion() );
               PackItem( new LesserPoisonPotion() );
               break;
            }
            case SkillName.Provocation:
            {
               PackInstrument();
               break;
            }
            case SkillName.Snooping:
            {
               PackItem( new Lockpick( 20 ) );
               break;
            }
            case SkillName.SpiritSpeak:
            {
               EquipItem( new Cloak( 0x455 ) );
               break;
            }
            case SkillName.Stealing:
            {
               PackItem( new Lockpick( 20 ) );
               break;
            }
            case SkillName.Swords:
            {
               EquipItem( new Katana() );
               break;
            }
            case SkillName.Tactics:
            {
               EquipItem( new Katana() );
               break;
            }
            case SkillName.Tailoring:
            {
               PackItem( new BoltOfCloth() );
               PackItem( new SewingKit() );
               break;
            }
            case SkillName.Tracking:
            {
               if ( m_Mobile != null )
               {
                  Item shoes = m_Mobile.FindItemOnLayer( Layer.Shoes );

                  if ( shoes != null )
                     shoes.Delete();
               }

               EquipItem( new Boots( Utility.RandomYellowHue() ) );
               EquipItem( new SkinningKnife() );
               break;
            }
            case SkillName.Veterinary:
            {
               PackItem( new Bandage( 5 ) );
               PackItem( new Scissors() );
               break;
            }
            case SkillName.Wrestling:
            {
               EquipItem( new LeatherGloves() );
               break;
            }
         }
      }
   }
}
¡è ¸Ç À§·Î °¡±â ¡è
ȸ¿ø ÇÁ·ÎÇÊ º¸±â ÂÊÁö º¸³»±â
ÀÌÀü °Ô½Ã¹°º¸±â :
»õ ±ÛÀ» ÀÛ¼ºÇÕ´Ï´Ù.´äº¯±ÛÀ» ÀÛ¼ºÇÕ´Ï´Ù. ÇöÀçÆäÀÌÁö : 1/1

RunUo.Korean.Forum ¢º Server Support ¢º RunUO 1.0 ¿¡¼­ ¿ùµå ±¸¼º ¹æ¹ý!
¹Ù·Î°¡±â:


°Ô½Ã¹° ÀÛ¼º : (X)
´äº¯±Û ÀÛ¼º : (X)
°Ô½Ã¹° ¼öÁ¤ : (X)
°Ô½Ã¹° »èÁ¦ : (X)
ÅõÇ¥ Çϱâ : (X)
ÆÄÀÏ ¾÷·Îµå : (X)
ÆÄÀÏ ´Ù¿î·Îµå : (0)



DAJ Glass (1.0.5) template by Dustin Baccetti // template edit by GangPung
EQ graphic based off of a design from www.freeclipart.nu
Powered by phpBB 2001, 2002 phpBB Group, Translated by zzangga

DNS Powered by DNSEver.com