public static void Claim_OnCommand(CommandEventArgs e) { ClaimOption option = GetOptions(e); switch (option) { case ClaimOption.Error: Misc.SendCommandDetails(e.Mobile, "Claim"); return; case ClaimOption.None: e.Mobile.Target = new ClaimCmdTarget(option); e.Mobile.SendMessage("Choose a corpse to claim for gold."); break; case ClaimOption.Carve: e.Mobile.Target = new ClaimCmdTarget(option); e.Mobile.SendMessage("Choose a corpse to carve and claim for gold."); break; case ClaimOption.SetTypes: e.Mobile.Target = new SetLootBagTarget(); e.Mobile.SendMessage("Choose a loot bag to set the items that will be collected."); break; } }
public static void LootCorpse(Mobile from, Corpse corpse, ClaimOption option, Container goldBag, Container silverBag, Container lootBag) { ArrayList items = new ArrayList(corpse.Items.Count); foreach (Item item in corpse.Items) { if (item != null && LootBag.TypeIsLootable(lootBag, item)) { items.Add(item); } } for (int i = 0; i < items.Count; i++) { Item item = (Item)items[i]; if (item is Gold) { DropGold(from, item as Gold, goldBag); } else if (item is Server.Factions.Silver) { DropSilver(from, item as Server.Factions.Silver, silverBag); } else { DropLoot(from, item, lootBag); } } }
public static bool ClaimCorpse(Mobile from, Corpse corpse, ClaimOption option) { if (null == corpse || corpse.Owner == from) { return(false); } Container goldBag = GetGoldBag(from); Container silverBag = GetSilverBag(from); Container lootBag = GetLootBag(from); if (ClaimConfig.AggregateSilver) { AggregateSilver(from, silverBag); } if (ClaimOption.Carve == option && !(corpse.Owner is PlayerMobile)) { corpse.Carve(from, null); } LootCorpse(from, corpse, option, goldBag, silverBag, lootBag); AwardGold(from, corpse, goldBag); corpse.Delete(); return(true); }
private static ClaimOption GetOptions(CommandEventArgs e) { ClaimOption option = ClaimOption.None; if (1 <= e.Length) { string str = e.GetString(0).ToLower(); if (str.Equals("-c")) { option = ClaimOption.Carve; } else if (str.Equals("-t")) { option = ClaimOption.SetTypes; } else { option = ClaimOption.Error; } } return(option); }
public static void Grab_OnCommand(CommandEventArgs e) { ClaimOption option = GetOptions(e); switch (option) { case ClaimOption.Error: Misc.SendCommandDetails(e.Mobile, "Grab"); return; case ClaimOption.None: break; case ClaimOption.Carve: goto case ClaimOption.Error; case ClaimOption.SetTypes: e.Mobile.Target = new SetLootBagTarget(); e.Mobile.SendMessage("Choose a loot bag to set the items that will be collected."); break; } Mobile from = e.Mobile; if (from.Alive == false) { from.PlaySound(1069); //hey from.SendMessage("You cannot do that while you are dead!"); return; } else if (0 != ClaimConfig.CompetitiveGrabRadius && BlockingMobilesInRange(from, ClaimConfig.GrabRadius)) { from.PlaySound(1069); //hey from.SendMessage("You are too close to another player to do that!"); return; } Container goldBag = GetGoldBag(from); Container silverBag = GetSilverBag(from); Container lootBag = GetLootBag(from); // Cleanup silver if (ClaimConfig.AggregateSilver) { AggregateSilver(from, silverBag); } ArrayList items = new ArrayList(); ArrayList corpses = new ArrayList(); // Gather lootable corpses and items into lists foreach (Item item in from.GetItemsInRange(ClaimConfig.GrabRadius)) { if (!from.InLOS(item) || !item.IsAccessibleTo(from) || !(item.Movable || item is Corpse)) { continue; } if (item is Corpse && CorpseIsLootable(from, item as Corpse, false)) { corpses.Add(item); } else if (null != item && LootBag.TypeIsLootable(lootBag, item)) { items.Add(item); } } // Drop all of the items into the player's bag/pack foreach (Item item in items) { if (item is Gold) { DropGold(from, item as Gold, goldBag); } else if (item is Server.Factions.Silver) { DropSilver(from, item as Server.Factions.Silver, silverBag); } else { DropLoot(from, item, lootBag); } } // Loot and claim the corpses int corpsesClaimed = 0; foreach (Item item in corpses) { corpsesClaimed = ClaimCorpse(from, item as Corpse, ClaimOption.None) ? corpsesClaimed + 1 : corpsesClaimed; } if (corpsesClaimed > 0) { from.SendMessage("You claim {0} and recieve a reward.", corpsesClaimed == 1 ? "a corpse" : "some corpses"); } }
public ClaimCmdTarget(ClaimOption option) : base(ClaimConfig.ClaimRadius, false, TargetFlags.None) { m_Option = option; }
public static void Reclaim(Mobile from, ClaimOption option) { from.Target = new ClaimCmdTarget(option); from.SendMessage("Choose another corpse to claim."); }
public ClaimCmdTarget( ClaimOption option ) : base( ClaimConfig.ClaimRadius, false, TargetFlags.None ) { m_Option = option; }
public static void LootCorpse( Mobile from, Corpse corpse, ClaimOption option, Container goldBag, Container silverBag, Container lootBag ) { ArrayList items = new ArrayList( corpse.Items.Count ); foreach ( Item item in corpse.Items ) { if ( item != null && LootBag.TypeIsLootable( lootBag, item ) ) items.Add( item ); } for ( int i = 0; i < items.Count; i++ ) { Item item = (Item)items[ i ]; if ( item is Gold ) DropGold( from, item as Gold, goldBag ); else if ( item is Server.Factions.Silver ) DropSilver( from, item as Server.Factions.Silver, silverBag ); else DropLoot( from, item, lootBag ); } }
public static bool ClaimCorpse( Mobile from, Corpse corpse, ClaimOption option ) { if ( null == corpse || corpse.Owner == from ) return false; Container goldBag = GetGoldBag( from ); Container silverBag = GetSilverBag( from ); Container lootBag = GetLootBag( from ); if ( ClaimConfig.AggregateSilver ) AggregateSilver( from, silverBag ); if ( ClaimOption.Carve == option && !(corpse.Owner is PlayerMobile) ) corpse.Carve( from, null ); LootCorpse( from, corpse, option, goldBag, silverBag, lootBag ); AwardGold( from, corpse, goldBag ); corpse.Delete(); return true; }
public static void Reclaim( Mobile from, ClaimOption option ) { from.Target = new ClaimCmdTarget( option ); from.SendMessage( "Choose another corpse to claim." ); }