private static void SetFlag(PilferFlags flag, PilferFlags inFlags, bool value) { if (value) { inFlags |= flag; } else { inFlags &= ~flag; } }
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); }
private static bool GetFlag(PilferFlags flag, PilferFlags inFlags) { return((inFlags & flag) != 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."); } } }
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); }
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; } } }