public void PickUpItem(Point location) { if (Dead || Master == null) { return; } Cell cell = CurrentMap.GetCell(location); if (!cell.Valid || cell.Objects == null) { return; } for (int i = 0; i < cell.Objects.Count; i++) { MapObject ob = cell.Objects[i]; if (ob == null) { continue; } if (ob.Race != ObjectType.Item) { continue; } if (ob.Owner != null && ob.Owner != this && ob.Owner != Master && !IsMasterGroupMember(ob.Owner)) { continue; } ItemObject item = (ItemObject)ob; if (item == null) { continue; } if (item.Item != null) { if (!((PlayerObject)Master).CanGainItem(item.Item)) { continue; } if (item.Item.Info.ShowGroupPickup && IsMasterGroupMember(Master)) { for (int j = 0; j < Master.GroupMembers.Count; j++) { Master.GroupMembers[j].ReceiveChat(Name + " Picked up: {" + item.Item.Name + "}", ChatType.Hint); } } if (item.Item.Info.Grade == ItemGrade.Mythical || item.Item.Info.Grade == ItemGrade.Legendary) { Master.ReceiveChat("Pet Picked up: {" + item.Item.Name + "}", ChatType.Hint); ((PlayerObject)Master).Enqueue(new S.IntelligentCreaturePickup { ObjectID = ObjectID }); } ((PlayerObject)Master).GainItem(item.Item); CurrentMap.RemoveObject(ob); ob.Despawn(); return; } else { if (ob == null) { continue; } if (!((PlayerObject)Master).CanGainGold(item.Gold)) { continue; } ((PlayerObject)Master).GainGold(item.Gold); CurrentMap.RemoveObject(ob); ob.Despawn(); return; } } }