public override bool DropToWorld(Mobile from, Point3D p) { bool drop = base.DropToWorld(from, p); EnchantedHotItem.CheckDrop(from, this); return(drop); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); if (Instances == null) { Instances = new List <BedrollSpawner>(); } Instances.Add(this); DateTime next = reader.ReadDateTime(); if (next < DateTime.UtcNow) { next = DateTime.UtcNow; } m_Timer = Timer.DelayCall(next - DateTime.UtcNow, RestartDelay, CheckRespawn); m_Timer.Start(); Bedrolls = new List <WrongBedrollBase>(); MysteriousTunnels = new List <MysteriousTunnel>(); int bedrollcount = reader.ReadInt(); for (int x = 0; x < bedrollcount; x++) { WrongBedrollBase wb = reader.ReadItem() as WrongBedrollBase; if (wb != null) { Bedrolls.Add(wb); } } int mysteriouscount = reader.ReadInt(); for (int y = 0; y < mysteriouscount; y++) { MysteriousTunnel mt = reader.ReadItem() as MysteriousTunnel; if (mt != null) { MysteriousTunnels.Add(mt); } } if (version == 0) { Timer.DelayCall(TimeSpan.FromSeconds(5), map => { EnchantedHotItem.SpawnChests(map); Console.WriteLine("Hot Item chests spawned for {0}.", Map); }, Map); } }
public void SpawnLoot() { List <Item> list = new List <Item>(Items); foreach (var item in list) { item.Delete(); } ColUtility.Free(list); int toSpawn = Utility.RandomMinMax(2, 4); for (int i = 0; i < toSpawn; i++) { Item item; if (i == 0) { item = Loot.RandomScroll(0, Loot.RegularScrollTypes.Length, SpellbookType.Regular); } else { item = Loot.RandomArmorOrShieldOrWeaponOrJewelry(false, false, true); if (item is BaseWeapon && 0.01 > Utility.RandomDouble()) { ((BaseWeapon)item).ExtendedWeaponAttributes.AssassinHoned = 1; } int min = 400; int max = 1400; RunicReforging.GenerateRandomItem(item, 0, min, max, this.Map); item.Hue = 1258; EnchantedHotItem.AddItem(item, this); } DropItem(item); } }
public override void GetProperties(ObjectPropertyList list) { base.GetProperties(list); if (OwnerName != null) { list.Add(1153213, OwnerName); } if (m_Crafter != null) { list.Add(1050043, m_Crafter.TitleName); // crafted by ~1_NAME~ } if (m_Quality == ItemQuality.Exceptional) { list.Add(1063341); // exceptional } if (IsImbued) { list.Add(1080418); // (Imbued) } #region Factions FactionEquipment.AddFactionProperties(this, list); #endregion if (m_GorgonLenseCharges > 0) { list.Add(1112590, m_GorgonLenseCharges.ToString()); //Gorgon Lens Charges: ~1_val~ } #region Mondain's Legacy Sets if (IsSetItem) { list.Add(1080240, Pieces.ToString()); // Part of a Jewelry Set (~1_val~ pieces) if (SetID == SetItem.Bestial) { list.Add(1151541, BestialSetHelper.GetTotalBerserk(this).ToString()); // Berserk ~1_VAL~ } if (BardMasteryBonus) { list.Add(1151553); // Activate: Bard Mastery Bonus x2<br>(Effect: 1 min. Cooldown: 30 min.) } if (m_SetEquipped) { list.Add(1080241); // Full Jewelry Set Present SetHelper.GetSetProperties(list, this); } } #endregion m_NegativeAttributes.GetProperties(list, this); m_AosSkillBonuses.GetProperties(list); int prop; #region Stygian Abyss if (RequiredRace == Race.Elf) { list.Add(1075086); // Elves Only } else if (RequiredRace == Race.Gargoyle) { list.Add(1111709); // Gargoyles Only } #endregion if ((prop = ArtifactRarity) > 0) { list.Add(1061078, prop.ToString()); // artifact rarity ~1_val~ } if (m_TalismanProtection != null && !m_TalismanProtection.IsEmpty && m_TalismanProtection.Amount > 0) { list.Add(1072387, "{0}\t{1}", m_TalismanProtection.Name != null ? m_TalismanProtection.Name.ToString() : "Unknown", m_TalismanProtection.Amount); // ~1_NAME~ Protection: +~2_val~% } if ((prop = m_AosAttributes.WeaponDamage) != 0) { list.Add(1060401, prop.ToString()); // damage increase ~1_val~% } if ((prop = m_AosAttributes.DefendChance) != 0) { list.Add(1060408, prop.ToString()); // defense chance increase ~1_val~% } if ((prop = m_AosAttributes.BonusDex) != 0) { list.Add(1060409, prop.ToString()); // dexterity bonus ~1_val~ } if ((prop = m_AosAttributes.EnhancePotions) != 0) { list.Add(1060411, prop.ToString()); // enhance potions ~1_val~% } if ((prop = m_AosAttributes.CastRecovery) != 0) { list.Add(1060412, prop.ToString()); // faster cast recovery ~1_val~ } if ((prop = m_AosAttributes.CastSpeed) != 0) { list.Add(1060413, prop.ToString()); // faster casting ~1_val~ } if ((prop = m_AosAttributes.AttackChance) != 0) { list.Add(1060415, prop.ToString()); // hit chance increase ~1_val~% } if ((prop = m_AosAttributes.BonusHits) != 0) { list.Add(1060431, prop.ToString()); // hit point increase ~1_val~ } if ((prop = m_AosAttributes.BonusInt) != 0) { list.Add(1060432, prop.ToString()); // intelligence bonus ~1_val~ } if ((prop = m_AosAttributes.LowerManaCost) != 0) { list.Add(1060433, prop.ToString()); // lower mana cost ~1_val~% } if ((prop = m_AosAttributes.LowerRegCost) != 0) { list.Add(1060434, prop.ToString()); // lower reagent cost ~1_val~% } if ((prop = m_AosAttributes.Luck) != 0) { list.Add(1060436, prop.ToString()); // luck ~1_val~ } if ((prop = m_AosAttributes.BonusMana) != 0) { list.Add(1060439, prop.ToString()); // mana increase ~1_val~ } if ((prop = m_AosAttributes.RegenMana) != 0) { list.Add(1060440, prop.ToString()); // mana regeneration ~1_val~ } if ((prop = m_AosAttributes.NightSight) != 0) { list.Add(1060441); // night sight } if ((prop = m_AosAttributes.ReflectPhysical) != 0) { list.Add(1060442, prop.ToString()); // reflect physical damage ~1_val~% } if ((prop = m_AosAttributes.RegenStam) != 0) { list.Add(1060443, prop.ToString()); // stamina regeneration ~1_val~ } if ((prop = m_AosAttributes.RegenHits) != 0) { list.Add(1060444, prop.ToString()); // hit point regeneration ~1_val~ } if ((prop = m_AosAttributes.SpellChanneling) != 0) { list.Add(1060482); // spell channeling } if ((prop = m_AosAttributes.SpellDamage) != 0) { list.Add(1060483, prop.ToString()); // spell damage increase ~1_val~% } if ((prop = m_AosAttributes.BonusStam) != 0) { list.Add(1060484, prop.ToString()); // stamina increase ~1_val~ } if ((prop = m_AosAttributes.BonusStr) != 0) { list.Add(1060485, prop.ToString()); // strength bonus ~1_val~ } if ((prop = m_AosAttributes.WeaponSpeed) != 0) { list.Add(1060486, prop.ToString()); // swing speed increase ~1_val~% } if (Core.ML && (prop = m_AosAttributes.IncreasedKarmaLoss) != 0) { list.Add(1075210, prop.ToString()); // Increased Karma Loss ~1val~% } #region SA if ((prop = m_SAAbsorptionAttributes.CastingFocus) != 0) { list.Add(1113696, prop.ToString()); // Casting Focus ~1_val~% } if ((prop = m_SAAbsorptionAttributes.EaterFire) != 0) { list.Add(1113593, prop.ToString()); // Fire Eater ~1_Val~% } if ((prop = m_SAAbsorptionAttributes.EaterCold) != 0) { list.Add(1113594, prop.ToString()); // Cold Eater ~1_Val~% } if ((prop = m_SAAbsorptionAttributes.EaterPoison) != 0) { list.Add(1113595, prop.ToString()); // Poison Eater ~1_Val~% } if ((prop = m_SAAbsorptionAttributes.EaterEnergy) != 0) { list.Add(1113596, prop.ToString()); // Energy Eater ~1_Val~% } if ((prop = m_SAAbsorptionAttributes.EaterKinetic) != 0) { list.Add(1113597, prop.ToString()); // Kinetic Eater ~1_Val~% } if ((prop = m_SAAbsorptionAttributes.EaterDamage) != 0) { list.Add(1113598, prop.ToString()); // Damage Eater ~1_Val~% } if ((prop = m_SAAbsorptionAttributes.ResonanceFire) != 0) { list.Add(1113691, prop.ToString()); // Fire Resonance ~1_val~% } if ((prop = m_SAAbsorptionAttributes.ResonanceCold) != 0) { list.Add(1113692, prop.ToString()); // Cold Resonance ~1_val~% } if ((prop = m_SAAbsorptionAttributes.ResonancePoison) != 0) { list.Add(1113693, prop.ToString()); // Poison Resonance ~1_val~% } if ((prop = m_SAAbsorptionAttributes.ResonanceEnergy) != 0) { list.Add(1113694, prop.ToString()); // Energy Resonance ~1_val~% } if ((prop = m_SAAbsorptionAttributes.ResonanceKinetic) != 0) { list.Add(1113695, prop.ToString()); // Kinetic Resonance ~1_val~% } #endregion base.AddResistanceProperties(list); Server.Engines.XmlSpawner2.XmlAttach.AddAttachmentProperties(this, list); if (m_HitPoints >= 0 && m_MaxHitPoints > 0) { list.Add(1060639, "{0}\t{1}", m_HitPoints, m_MaxHitPoints); // durability ~1_val~ / ~2_val~ } EnchantedHotItem.AddProperties(this, list); if (IsSetItem && !m_SetEquipped) { list.Add(1072378); // <br>Only when full set is present: SetHelper.GetSetProperties(list, this); } AddHonestyProperty(list); if (m_ItemPower != ItemPower.None) { if (m_ItemPower <= ItemPower.LegendaryArtifact) { list.Add(1151488 + ((int)m_ItemPower - 1)); } else { list.Add(1152281 + ((int)m_ItemPower - 9)); } } }
public override bool OnDragDropInto(Mobile from, Item item, Point3D p) { if (!CheckHold(from, item, true, true)) { return(false); } if (item.QuestItem && from.Backpack != this) { from.SendLocalizedMessage(1074769); // An item must be in your backpack (and not in a container within) to be toggled as a quest item. return(false); } BaseHouse house = BaseHouse.FindHouseAt(this); if (house != null && house.IsLockedDown(this)) { if (item is VendorRentalContract || (item is Container && ((Container)item).FindItemByType(typeof(VendorRentalContract)) != null)) { from.SendLocalizedMessage(1062492); // You cannot place a rental contract in a locked down container. return(false); } if (!house.LockDown(from, item, false)) { return(false); } } item.Location = new Point3D(p.X, p.Y, 0); AddItem(item); from.SendSound(GetDroppedSound(item), GetWorldLocation()); ItemFlags.SetTaken(item, true); if (item.HonestyItem && item.HonestyPickup == DateTime.MinValue) { item.HonestyPickup = DateTime.UtcNow; item.StartHonestyTimer(); if (item.HonestyOwner == null) { Server.Services.Virtues.HonestyVirtue.AssignOwner(item); } from.SendLocalizedMessage(1151536); // You have three hours to turn this item in for Honesty credit, otherwise it will cease to be a quest item. } if (Siege.SiegeShard && this != from.Backpack && from is PlayerMobile && ((PlayerMobile)from).BlessedItem != null && ((PlayerMobile)from).BlessedItem == item) { ((PlayerMobile)from).BlessedItem = null; item.LootType = LootType.Regular; from.SendLocalizedMessage(1075292, item.Name != null ? item.Name : "#" + item.LabelNumber.ToString()); // ~1_NAME~ has been unblessed. } if (!EnchantedHotItem.CheckDrop(from, this, item)) { return(false); } return(true); }
public override bool TryDropItem(Mobile from, Item dropped, bool sendFullMessage) { if (!CheckHold(from, dropped, sendFullMessage, !CheckStack(from, dropped))) { return(false); } if (dropped.QuestItem && from.Backpack != this) { from.SendLocalizedMessage(1074769); // An item must be in your backpack (and not in a container within) to be toggled as a quest item. return(false); } BaseHouse house = BaseHouse.FindHouseAt(this); if (house != null && house.IsLockedDown(this)) { if (dropped is VendorRentalContract || (dropped is Container && ((Container)dropped).FindItemByType(typeof(VendorRentalContract)) != null)) { from.SendLocalizedMessage(1062492); // You cannot place a rental contract in a locked down container. return(false); } if (!house.LockDown(from, dropped, false)) { return(false); } } List <Item> list = Items; for (int i = 0; i < list.Count; ++i) { Item item = list[i]; if (!(item is Container) && item.StackWith(from, dropped, false)) { return(true); } } DropItem(dropped); ItemFlags.SetTaken(dropped, true); if (dropped.HonestyItem && dropped.HonestyPickup == DateTime.MinValue) { dropped.HonestyPickup = DateTime.UtcNow; dropped.StartHonestyTimer(); if (dropped.HonestyOwner == null) { Server.Services.Virtues.HonestyVirtue.AssignOwner(dropped); } from.SendLocalizedMessage(1151536); // You have three hours to turn this item in for Honesty credit, otherwise it will cease to be a quest item. } if (Siege.SiegeShard && this != from.Backpack && from is PlayerMobile && ((PlayerMobile)from).BlessedItem != null && ((PlayerMobile)from).BlessedItem == dropped) { ((PlayerMobile)from).BlessedItem = null; dropped.LootType = LootType.Regular; from.SendLocalizedMessage(1075292, dropped.Name != null ? dropped.Name : "#" + dropped.LabelNumber.ToString()); // ~1_NAME~ has been unblessed. } if (!EnchantedHotItem.CheckDrop(from, this, dropped)) { return(false); } return(true); }