protected override void OnTarget(Mobile from, object targeted) { if (m_Kit.Deleted) { return; } if (!(targeted is Corpse) && !(targeted is BigFish) && !(targeted is BaseHighseasFish) && !(targeted is HuntingPermit)) { from.SendLocalizedMessage(1042600); // That is not a corpse! } else if (targeted is Corpse && ((Corpse)targeted).VisitedByTaxidermist) { from.SendLocalizedMessage(1042596); // That corpse seems to have been visited by a taxidermist already. } else if (!m_Kit.IsChildOf(from.Backpack)) { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } else if (from.Skills[SkillName.Carpentry].Base < 90.0) { from.SendLocalizedMessage(1042603); // You would not understand how to use the kit. } #region Huntmasters Challenge else if (targeted is HuntingPermit) { HuntingPermit lic = targeted as HuntingPermit; if (from.Backpack == null || !lic.IsChildOf(from.Backpack)) { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } else if (!lic.CanUseTaxidermyOn) { //TODO: Message? } else if (from.Backpack != null && from.Backpack.ConsumeTotal(typeof(Board), 10)) { Server.Engines.HuntsmasterChallenge.HuntingTrophyInfo info = Server.Engines.HuntsmasterChallenge.HuntingTrophyInfo.Infos[lic.KillEntry.KillIndex]; if (info != null) { if (info.Complex) { from.AddToBackpack(new HuntTrophyAddonDeed(from.Name, info.MeasuredBy, lic.KillEntry.Measurement, info.SouthID, lic.KillEntry.DateKilled.ToShortDateString(), lic.KillEntry.Location, info.Species)); } else { from.AddToBackpack(new HuntTrophyDeed(from.Name, info.MeasuredBy, lic.KillEntry.Measurement, info.SouthID, lic.KillEntry.DateKilled.ToShortDateString(), lic.KillEntry.Location, info.Species)); } lic.ProducedTrophy = true; m_Kit.Delete(); } } else { from.SendLocalizedMessage(1042598); // You do not have enough boards. return; } } #endregion else { object obj = targeted; if (obj is Corpse) { obj = ((Corpse)obj).Owner; } if (obj != null) { for (int i = 0; i < m_Table.Length; i++) { if (m_Table[i].CreatureType == obj.GetType()) { Container pack = from.Backpack; if (pack != null && pack.ConsumeTotal(typeof(Board), 10)) { from.SendLocalizedMessage(1042278); // You review the corpse and find it worthy of a trophy. from.SendLocalizedMessage(1042602); // You use your kit up making the trophy. Mobile hunter = null; int weight = 0; if (targeted is BigFish) { BigFish fish = targeted as BigFish; hunter = fish.Fisher; weight = (int)fish.Weight; fish.Consume(); } #region High Seas else if (targeted is RareFish) { RareFish fish = targeted as RareFish; hunter = fish.Fisher; weight = (int)fish.Weight; DateTime dateCaught = fish.DateCaught; from.AddToBackpack(new FishTrophyDeed(weight, hunter, dateCaught, m_Table[i].DeedNumber, m_Table[i].AddonNumber, m_Table[i].NorthID)); fish.Delete(); m_Kit.Delete(); return; } else if (targeted is RareCrabAndLobster) { RareCrabAndLobster fish = targeted as RareCrabAndLobster; hunter = fish.Fisher; weight = (int)fish.Weight; DateTime dateCaught = fish.DateCaught; from.AddToBackpack(new FishTrophyDeed(weight, hunter, dateCaught, m_Table[i].DeedNumber, m_Table[i].AddonNumber, m_Table[i].NorthID)); fish.Delete(); m_Kit.Delete(); return; } #endregion from.AddToBackpack(new TrophyDeed(m_Table[i], hunter, weight)); if (targeted is Corpse) { ((Corpse)targeted).VisitedByTaxidermist = true; } m_Kit.Delete(); return; } else { from.SendLocalizedMessage(1042598); // You do not have enough boards. return; } } } } from.SendLocalizedMessage(1042599); // That does not look like something you want hanging on a wall. } }
protected override void OnTarget(Mobile from, object targeted) { if (targeted is Corpse) { Corpse c = targeted as Corpse; if (!from.InRange(c.Location, 3)) { from.SendLocalizedMessage(500446); // That is too far away. } if (c.VisitedByTaxidermist) { from.SendLocalizedMessage(1042596); // That corpse seems to have been visited by a taxidermist already. } else if (!m_Permit.IsChildOf(from.Backpack)) { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } else if (c.Owner == null) { from.SendLocalizedMessage(1155706); // That is not a valid kill. } else if (!IsOnlyAttacker(from, c.Owner)) { from.SendLocalizedMessage(1155707); // You cannot document someone else's kill. } else { Type t = c.Owner.GetType(); if (t == typeof(RagingGrizzlyBear)) // Bandaid Fix, we'll keep this until others arise { t = typeof(GrizzlyBear); } for (int i = 0; i < HuntingTrophyInfo.Infos.Count; i++) { HuntingTrophyInfo info = HuntingTrophyInfo.Infos[i]; if (t == info.CreatureType) { int v = 0; if (HuntingSystem.Instance != null && HuntingSystem.Instance.IsPrimeHunt(from, c.Location)) { v = Utility.RandomMinMax(0, 100); } else { v = Utility.RandomMinMax(0, 10000); v = (int)Math.Sqrt(v); v = 100 - v; } int measurement = info.MinMeasurement + (int)((double)(info.MaxMeasurement - info.MinMeasurement) * (double)((double)v / 100.0)); m_Permit.KillEntry = new HuntingKillEntry(m_Permit.Owner, measurement, DateTime.Now, i, WorldLocationInfo.GetLocationString(c.Location, c.Map)); c.VisitedByTaxidermist = true; from.PlaySound(0x249); from.PrivateOverheadMessage(Server.Network.MessageType.Regular, 0x45, 1155713, from.NetState); // *You document your kill on the permit* m_Permit.InvalidateProperties(); return; } } from.SendLocalizedMessage(1155706); // That is not a valid kill. } } }