public override bool CanEquip(Mobile m) { if (!RaceDefinitions.ValidateEquipment(m, this)) { return(false); } if (m.IsPlayer()) { if (_Owner != null && m != _Owner) { m.SendLocalizedMessage(501023); // You must be the owner to use this item. return(false); } if (this is IAccountRestricted && ((IAccountRestricted)this).Account != null) { Accounting.Account acct = m.Account as Accounting.Account; if (acct == null || acct.Username != ((IAccountRestricted)this).Account) { m.SendLocalizedMessage(1071296); // This item is Account Bound and your character is not bound to it. You cannot use this item. return(false); } } if (IsVvVItem && !Engines.VvV.ViceVsVirtueSystem.IsVvV(m)) { m.SendLocalizedMessage(1155496); // This item can only be used by VvV participants! return(false); } } return(true); }
public override bool CanEquip(Mobile from) { if (BlessedBy != null && BlessedBy != from) { from.SendLocalizedMessage(1075277); // That item is blessed by another player. return(false); } if (from.IsPlayer()) { if (_Owner != null && _Owner != from) { from.SendLocalizedMessage(501023); // You must be the owner to use this item. return(false); } if (this is IAccountRestricted && ((IAccountRestricted)this).Account != null) { Accounting.Account acct = from.Account as Accounting.Account; if (acct == null || acct.Username != ((IAccountRestricted)this).Account) { from.SendLocalizedMessage(1071296); // This item is Account Bound and your character is not bound to it. You cannot use this item. return(false); } } if (IsVvVItem && !Engines.VvV.ViceVsVirtueSystem.IsVvV(from)) { from.SendLocalizedMessage(1155496); // This item can only be used by VvV participants! return(false); } } if (from.AccessLevel < AccessLevel.GameMaster && !RaceDefinitions.ValidateEquipment(from, this)) { return(false); } return(base.CanEquip(from)); }
// Global setup static ServerFixture() { Core.Assembly = Assembly.GetExecutingAssembly(); Core.LoopContext = new EventLoopContext(); Core.Expansion = Expansion.EJ; // Load Configurations ServerConfiguration.Load(true); // Configure / Initialize TestMapDefinitions.ConfigureTestMapDefinitions(); // Configure the world World.Configure(); Timer.Init(0); // Configure Races RaceDefinitions.Configure(); // Load the world World.Load(); }
public override void AddNameProperties(ObjectPropertyList list) { base.AddNameProperties(list); 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; if (RaceDefinitions.GetRequiredRace(this) == Race.Elf) { list.Add(1075086); // Elves Only } else if (RaceDefinitions.GetRequiredRace(this) == Race.Gargoyle) { list.Add(1111709); // Gargoyles Only } 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~% } #region SA 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~% } if ((prop = m_SAAbsorptionAttributes.CastingFocus) != 0) { list.Add(1113696, prop.ToString()); // Casting Focus ~1_val~% } #endregion if ((prop = m_AosAttributes.SpellChanneling) != 0) { list.Add(1060482); // spell channeling } if ((prop = m_AosAttributes.NightSight) != 0) { list.Add(1060441); // night sight } if ((prop = m_AosAttributes.BonusStr) != 0) { list.Add(1060485, prop.ToString()); // strength bonus ~1_val~ } if ((prop = m_AosAttributes.BonusDex) != 0) { list.Add(1060409, prop.ToString()); // dexterity bonus ~1_val~ } if ((prop = m_AosAttributes.BonusInt) != 0) { list.Add(1060432, prop.ToString()); // intelligence bonus ~1_val~ } if ((prop = m_AosAttributes.BonusHits) != 0) { list.Add(1060431, prop.ToString()); // hit point increase ~1_val~ } if ((prop = m_AosAttributes.BonusStam) != 0) { list.Add(1060484, prop.ToString()); // stamina increase ~1_val~ } if ((prop = m_AosAttributes.BonusMana) != 0) { list.Add(1060439, prop.ToString()); // mana increase ~1_val~ } if ((prop = m_AosAttributes.RegenHits) != 0) { list.Add(1060444, prop.ToString()); // hit point regeneration ~1_val~ } if ((prop = m_AosAttributes.RegenStam) != 0) { list.Add(1060443, prop.ToString()); // stamina regeneration ~1_val~ } if ((prop = m_AosAttributes.RegenMana) != 0) { list.Add(1060440, prop.ToString()); // mana regeneration ~1_val~ } if ((prop = m_AosAttributes.Luck) != 0) { list.Add(1060436, prop.ToString()); // luck ~1_val~ } if ((prop = m_AosAttributes.EnhancePotions) != 0) { list.Add(1060411, prop.ToString()); // enhance potions ~1_val~% } if ((prop = m_AosAttributes.ReflectPhysical) != 0) { list.Add(1060442, prop.ToString()); // reflect physical damage ~1_val~% } if ((prop = m_AosAttributes.AttackChance) != 0) { list.Add(1060415, prop.ToString()); // hit chance increase ~1_val~% } if ((prop = m_AosAttributes.WeaponSpeed) != 0) { list.Add(1060486, prop.ToString()); // swing speed increase ~1_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.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.SpellDamage) != 0) { list.Add(1060483, prop.ToString()); // spell damage increase ~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.IncreasedKarmaLoss) != 0) { list.Add(1075210, prop.ToString()); // Increased Karma Loss ~1val~% } base.AddResistanceProperties(list); if (m_HitPoints >= 0 && m_MaxHitPoints > 0) { list.Add(1060639, "{0}\t{1}", m_HitPoints, m_MaxHitPoints); // durability ~1_val~ / ~2_val~ } if (IsSetItem && !m_SetEquipped) { list.Add(1072378); // <br>Only when full set is present: SetHelper.GetSetProperties(list, this); } }
public override bool Matches(Item item) { return(RaceDefinitions.GetRequiredRace(item) == Race.Elf); }
protected override void OnTarget(Mobile from, object targeted) { if (!(targeted is Item targetitem) || Potion.Deleted) { return; } if (!Potion.IsChildOf(from.Backpack) || !targetitem.IsChildOf(from.Backpack)) { from.SendLocalizedMessage(1060640); // The item must be in your backpack to use it. return; } var ip = new ItemProps { Item = targetitem, Props = Mannequin.FindMagicalItemProperty(targetitem) }; if (IsSource) { Potion.Source = ip; } else { if (Potion.CheckMagicalItem(ip.Props)) { from.SendLocalizedMessage(1159504); // The destination item must be free of any magical properties. return; } if (targetitem.HasSocket <Transmogrified>()) { from.Send(new AsciiMessage(-1, -1, MessageType.Label, 946, 3, "System", "This item has already been transmogrified.")); } else { Potion.Destination = ip; } } int message = 0; if (targetitem.Layer != Potion.ItemLayer) { message = Potion.ValidFailMessage; } else if (Potion.Destination != null && Potion.Destination.Item != null && !Potion.Destination.Item.Deleted && Potion.Source != null && Potion.Source.Item != null && !Potion.Source.Item.Deleted) { if (Potion.Destination.Item == Potion.Source.Item) { message = 1159518; // You may not set the source and destination objects to the same object! } else if (RaceDefinitions.GetRequiredRace(Potion.Destination.Item) != RaceDefinitions.GetRequiredRace(Potion.Source.Item)) { message = 1159560; // You may not set the source and destination objects to objects of different race requirements. } else if (!Potion.CheckRules()) { message = Potion.ValidFailMessage; } else if (Potion.Destination.Props.Except(Potion.Source.Props).Any(x => x is MedableArmorProperty)) { message = 1159678; // Both source and destination objects must allow the use of the meditation skill (medable) or both block the meditation skill (non-medable). } } if (message == 0) { from.CloseGump(typeof(BaseTransmogrificationPotionGump)); from.SendGump(new BaseTransmogrificationPotionGump(Potion)); } else { if (IsSource) { Potion.Source = null; } else { Potion.Destination = null; } from.SendLocalizedMessage(message); } }