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. } }
public InternalTarget(HuntingPermit Permit) : base(-1, false, TargetFlags.None) { m_Permit = Permit; }
public override void OnClick() { Mobile from = this.Owner.From; if(HuntingPermit.HasPermit(from)) from.SendLocalizedMessage(1155702); // You already have a hunting permit. else if(Banker.Withdraw(from, 5000)) { Banker.Withdraw(from, 5000); HuntingPermit permit = new HuntingPermit(from); if(from.Backpack == null || !from.Backpack.TryDropItem(from, permit, false)) { from.SendLocalizedMessage(1155703); // Your backpack was too full so the permit was deleted. Empty your backpack and try again. permit.Delete(); } //TODO: Message??? } else from.SendLocalizedMessage(500382); // Thou dost not have sufficient funds in thy account to withdraw that much. }
public void TrySubmitKill(HuntMaster master, Mobile from, HuntingPermit permit) { if(permit.KillEntry == null || permit.KillEntry.KillIndex < 0 || permit.KillEntry.KillIndex > HuntingTrophyInfo.Infos.Count) master.SayTo(from, 1155706); // That is not a valid kill. else { HuntingTrophyInfo info = HuntingTrophyInfo.Infos[permit.KillEntry.KillIndex]; if(info != null) { if (!m_Leaders.ContainsKey(info.HuntType)) m_Leaders[info.HuntType] = new List<HuntingKillEntry>(); List<HuntingKillEntry> leaders = m_Leaders[info.HuntType]; if(leaders.Count == 0 || permit.KillEntry.Measurement >= leaders[0].Measurement) { if (leaders.Count > 0 && permit.KillEntry.Measurement > leaders[0].Measurement) leaders.Clear(); leaders.Add(new HuntingKillEntry(permit.Owner, permit.KillEntry.Measurement, permit.KillEntry.DateKilled, permit.KillEntry.KillIndex, permit.KillEntry.Location)); from.SendGump(new BasicInfoGump(1155722)); HuntingDisplayTrophy.InvalidateDisplayTrophies(); master.PlaySound(0x3D); } else master.SayTo(from, 1155721); // Begging thy pardon, but your permit has not broken the current record for this species! permit.HasSubmitted = true; CheckKill(info.HuntType, permit.KillEntry); } } }