Ejemplo n.º 1
0
 private static void SetFlag(PilferFlags flag, PilferFlags inFlags, bool value)
 {
     if (value)
     {
         inFlags |= flag;
     }
     else
     {
         inFlags &= ~flag;
     }
 }
Ejemplo n.º 2
0
        private static PilferFlags ProcessDisplayCase(StaticTile[] tiles)
        {
            PilferFlags flags = PilferFlags.None;

            for (int i = 0; i < tiles.Length; ++i)
            {
                int tileID = tiles[i].ID;
                tileID &= 0x3FFF;
                flags  |= PilferTileItem(tileID);
            }

            if (Core.Debug)
            {
                Console.WriteLine("TEST: Processed {0} tiles in the display case.", tiles.Length.ToString());
            }

            return(flags);
        }
Ejemplo n.º 3
0
 private static bool GetFlag(PilferFlags flag, PilferFlags inFlags)
 {
     return((inFlags & flag) != 0);
 }
Ejemplo n.º 4
0
            protected override void OnTarget(Mobile from, object targeted)
            {
                if (targeted is StaticTarget)
                {
                    StaticTarget target = targeted as StaticTarget;
                    if (target.Location.CompareTo(from.Location) > 2)
                    {
                        from.SendMessage("You are too far away to do that.");
                        return;
                    }
                    PilferFlags flags = PilferTarget(target, from);

                    if (flags != PilferFlags.None)
                    {
                        if (Core.Debug)
                        {
                            from.SendMessage("TEST: pilfering target: {0}.", flags.ToString());
                        }
                        List <PilferFlags> list = new List <PilferFlags>();
                        foreach (PilferFlags flag in Enum.GetValues(typeof(PilferFlags)))
                        {
                            if (flag != PilferFlags.None && GetFlag(flag, flags))
                            {
                                list.Add(flag);
                            }
                        }

                        if (list.Count > 0)
                        {
                            PilferFlags pilfer = PilferFlags.None;
                            if (list.Count > 1)
                            {
                                pilfer = list[Utility.Random(list.Count)];
                            }
                            else
                            {
                                pilfer = list[0];
                            }

                            ///TEST FOR SUCCESSRATING
                            /// ---------------------

                            LokaiSkill    lokaiSkill = (LokaiSkillUtilities.XMLGetSkills(from)).Pilfering;
                            SuccessRating rating     = LokaiSkillUtilities.CheckLokaiSkill(from, lokaiSkill, 0.0, 100.0);

                            ///IF SUCCESSFUL
                            /// ------------

                            if (rating >= SuccessRating.PartialSuccess)
                            {
                                CreateItem(pilfer, rating, from);
                            }
                            else
                            {
                                from.SendMessage("You fail to pilfer anything.");
                            }
                        }
                        else
                        {
                            from.SendMessage("There is nothing to pilfer there.");
                        }
                    }
                    else
                    {
                        from.SendMessage("There is nothing to pilfer there.");
                    }
                }
            }
Ejemplo n.º 5
0
        private static PilferFlags PilferTileItem(int itemID)
        {
            PilferFlags res = PilferFlags.None;

            ItemData id    = TileData.ItemTable[itemID];
            TileFlag flags = id.Flags;

            if ((flags & TileFlag.Wearable) != 0)
            {
                if (IsClothes(itemID))
                {
                    res |= PilferFlags.Clothes;
                }
                else if (IsArmor(itemID))
                {
                    res |= PilferFlags.Armor;
                }
                else if (IsMetalWeapon(itemID))
                {
                    res |= PilferFlags.MetalWeapon;
                }
                else if (IsArcheryWeapon(itemID))
                {
                    res |= PilferFlags.ArcheryWeapon;
                }
            }

            if (IsFood(itemID))
            {
                res |= PilferFlags.Food;
            }

            if ((itemID >= 0xF0F && itemID <= 0xF30) ||
                (itemID >= 0x1F05 && itemID <= 0x1F0A))
            {
                res |= PilferFlags.Jewel;
            }

            if (itemID >= 0xEFB && itemID <= 0xF0E)
            {
                res |= PilferFlags.Potion;
            }

            if (itemID >= 0xF78 && itemID <= 0xF91)
            {
                res |= PilferFlags.Reagent;
            }

            if ((itemID >= 0xE34 && itemID <= 0xE3A) ||
                (itemID >= 0xEF3 && itemID <= 0xEF9) ||
                (itemID >= 0x1F2D && itemID <= 0x1F72) ||
                (itemID >= 0x2260 && itemID <= 0x227C) ||
                (itemID >= 0x2D51 && itemID <= 0x2D60))
            {
                res |= PilferFlags.Scroll;
            }

            if (itemID == 0xE38 || itemID == 0xEFA ||
                (itemID >= 0x2252 && itemID <= 0x2254) ||
                itemID == 0x238C || itemID == 0x23A0 || itemID == 0x2D50)
            {
                res |= PilferFlags.Spellbook;
            }

            if (itemID >= 0xDF0 && itemID <= 0xDF5)
            {
                res |= PilferFlags.Wand;
            }

            return(res);
        }
Ejemplo n.º 6
0
        private static void CreateItem(PilferFlags pilfer, SuccessRating rating, Mobile from)
        {
            switch (pilfer)
            {
            case PilferFlags.ArcheryWeapon:
            {
                Item item = Loot.RandomRangedWeapon();
                if (item == null || !from.AddToBackpack(item))
                {
                    from.SendMessage("Unable to add item to backpack.");
                }
                else
                {
                    from.SendMessage("You pilfer {0} {1}.", StartsWithVowel(item.DefaultName) ? "an" : "a", item.DefaultName);
                }
                break;
            }

            case PilferFlags.Armor:
            {
                Item item = Loot.RandomArmorOrHat();
                if (item == null || !from.AddToBackpack(item))
                {
                    from.SendMessage("Unable to add item to backpack.");
                }
                else
                {
                    from.SendMessage("You pilfer {0} {1}.", StartsWithVowel(item.DefaultName) ? "an" : "a", item.DefaultName);
                }
                break;
            }

            case PilferFlags.Clothes:
            {
                Item item = Loot.RandomClothing(from.Map == Map.Tokuno, true);
                if (item == null || !from.AddToBackpack(item))
                {
                    from.SendMessage("Unable to add item to backpack.");
                }
                else
                {
                    from.SendMessage("You pilfer {0} {1}.", StartsWithVowel(item.DefaultName) ? "an" : "a", item.DefaultName);
                }
                break;
            }

            case PilferFlags.Food:
            {
                Item item = RandomFood();
                if (item == null || !from.AddToBackpack(item))
                {
                    from.SendMessage("Unable to add item to backpack.");
                }
                else
                {
                    from.SendMessage("You pilfer {0} {1}.", StartsWithVowel(item.DefaultName) ? "an" : "a", item.DefaultName);
                }
                break;
            }

            case PilferFlags.Jewel:
            {
                Item item = Loot.RandomJewelry();
                if (item == null || !from.AddToBackpack(item))
                {
                    from.SendMessage("Unable to add item to backpack.");
                }
                else
                {
                    from.SendMessage("You pilfer {0} {1}.", StartsWithVowel(item.DefaultName) ? "an" : "a", item.DefaultName);
                }
                break;
            }

            case PilferFlags.MetalWeapon:
            {
                Item item = Loot.RandomWeapon();
                if (item == null || !from.AddToBackpack(item))
                {
                    from.SendMessage("Unable to add item to backpack.");
                }
                else
                {
                    from.SendMessage("You pilfer {0} {1}.", StartsWithVowel(item.DefaultName) ? "an" : "a", item.DefaultName);
                }
                break;
            }

            case PilferFlags.Potion:
            {
                Item item = Loot.RandomPotion();
                if (item == null || !from.AddToBackpack(item))
                {
                    from.SendMessage("Unable to add item to backpack.");
                }
                else
                {
                    from.SendMessage("You pilfer {0} {1}.", StartsWithVowel(item.DefaultName) ? "an" : "a", item.DefaultName);
                }
                break;
            }

            case PilferFlags.Reagent:
            {
                Item item = Loot.RandomPossibleReagent();
                if (item == null || !from.AddToBackpack(item))
                {
                    from.SendMessage("Unable to add item to backpack.");
                }
                else
                {
                    from.SendMessage("You pilfer {0} {1}.", StartsWithVowel(item.DefaultName) ? "an" : "a", item.DefaultName);
                }
                break;
            }

            case PilferFlags.Scroll:
            {
                int           max  = 0;
                SpellbookType book = (SpellbookType)Utility.Random(2);
                if (book == SpellbookType.Regular)
                {
                    max = Loot.RegularScrollTypes.Length;
                    switch (rating)
                    {
                    case SuccessRating.PartialSuccess: { max /= 8; break; }

                    case SuccessRating.Success: { max /= 4; break; }

                    case SuccessRating.CompleteSuccess: { max /= 2; break; }

                    case SuccessRating.ExceptionalSuccess: { break; }
                    }
                }
                if (book == SpellbookType.Necromancer)
                {
                    max = Loot.SENecromancyScrollTypes.Length;
                }
                Item item = Loot.RandomScroll(0, max, book);
                if (item == null || !from.AddToBackpack(item))
                {
                    from.SendMessage("Unable to add item to backpack.");
                }
                else
                {
                    from.SendMessage("You pilfer {0} {1}.", StartsWithVowel(item.DefaultName) ? "an" : "a", item.DefaultName);
                }
                break;
            }

            case PilferFlags.Spellbook:
            {
                Item item = RandomSpellbook(rating);
                if (item == null || !from.AddToBackpack(item))
                {
                    from.SendMessage("Unable to add item to backpack.");
                }
                else
                {
                    from.SendMessage("You pilfer {0} {1}.", StartsWithVowel(item.DefaultName) ? "an" : "a", item.DefaultName);
                }
                break;
            }

            case PilferFlags.Wand:
            {
                BaseWand item = Loot.RandomWand();
                if (item == null || !from.AddToBackpack(item))
                {
                    from.SendMessage("Unable to add item to backpack.");
                }
                else
                {
                    from.SendMessage("You pilfer {0} {1}.", StartsWithVowel(item.Effect.ToString()) ? "an" : "a", item.Effect.ToString());
                }
                break;
            }
            }
        }