public virtual IResult Enchant(IItem item) { IResult result = null; if (Success(item)) { IEnchantment randomEnchantment = MakeRandomEnchantment(item); if (randomEnchantment != null) { item.Enchantments.Add(randomEnchantment); result = new Result(EnchantmentSuccess, false); } else { result = null; } } else { result = new Result(EnchantmentFail, false); } return(result); }
public IResult Enchant(IItem item) { IResult result = null; int successRate = (int)(Math.Pow(Math.Pow(item.Enchantments.Count + 1, .9), 2) * 100); if (GlobalReference.GlobalValues.Random.PercentDiceRoll(successRate)) { IEnchantment randomEnchantment = MakeRandomEnchantment(item); if (randomEnchantment != null) { item.Enchantments.Add(randomEnchantment); result = new Result(true, EnchantmentSuccess); } else { result = null; } } else { result = new Result(false, EnchantmentFail); } return(result); }
protected IEnchantment EnchantArmor(IItem item) { IEnchantment enchantment = null; IArmor armor = item as IArmor; if (armor != null) { switch (GlobalReference.GlobalValues.Random.Next(2)) { case 0: enchantment = new DamageReceivedBeforeDefenseEnchantment(); enchantment.Effect = GetRandomDefenseEffect(); enchantment.Parameter.Dice = GlobalReference.GlobalValues.DefaultValues.DiceForArmorLevel(item.Level); break; case 1: enchantment = new DamageReceivedAfterDefenseEnchantment(); enchantment.Effect = new Effect.Damage(); Damage.Damage damage = new Damage.Damage(); damage.Dice = GlobalReference.GlobalValues.DefaultValues.DiceForWeaponLevel(item.Level); damage.Type = GetRandomDamageType(); break; } } return(enchantment); }
private static void VerifyEnchantment(IEnchantment enchantment) { string type = "Enchantment"; if (enchantment.Effect is Objects.Effect.Damage) { if (enchantment.Parameter.Description == null) { ThrowConfigException(enchantment, type, $"Enchantments with effect damage must have a damage description."); } } }
public void ThrowDirt_AdditionalEffect() { throwDirt.Testable_AdditionalEffect(performer.Object, target.Object); notify.Verify(e => e.Mob(target.Object, It.Is <ITranslationMessage>(f => f.Message == "message")), Times.Once); Assert.AreEqual(1, enchantments.Count); IEnchantment enchantment = enchantments[0]; Assert.IsTrue(enchantment is HeartbeatBigTickEnchantment); Assert.IsTrue(enchantment.Effect is Blindness); Assert.AreEqual(100, enchantment.ActivationPercent); Assert.AreEqual(9999, enchantment.EnchantmentEndingDateTime.Year); Assert.AreEqual(performer.Object.StrengthEffective, enchantment.DefeatInfo.CurrentEnchantmentPoints); Assert.AreEqual(Stat.Constitution, enchantment.DefeatInfo.MobStat); }
public void SpittingCobra_AdditionalEffect() { spittingCobra.Testable_AdditionalEffect(performer.Object, target.Object); Assert.AreEqual(1, enchantments.Count); IEnchantment addedEnchantment = enchantments[0]; Assert.AreEqual(100, addedEnchantment.ActivationPercent); Assert.IsTrue(addedEnchantment.Effect is Objects.Effect.Damage); Assert.AreEqual(new DateTime(9999, 1, 1), addedEnchantment.EnchantmentEndingDateTime); Assert.AreEqual(Stats.Stat.Constitution, addedEnchantment.DefeatInfo.MobStat); Assert.AreEqual(9, addedEnchantment.DefeatInfo.CurrentEnchantmentPoints); Assert.AreEqual("Poison burns your face.", addedEnchantment.Parameter.TargetMessage.Message); Assert.IsNotNull(addedEnchantment.Parameter.Damage); Assert.AreSame(dice.Object, addedEnchantment.Parameter.Damage.Dice); Assert.AreEqual(DamageType.Poison, addedEnchantment.Parameter.Damage.Type); }
protected IEnchantment MakeRandomEnchantment(IItem item) { IEnchantment enchantment = null; if (item as IWeapon != null) { enchantment = EnchantWeapon(item); } else if (item as IArmor != null) { enchantment = EnchantArmor(item); } if (enchantment != null) { enchantment.ActivationPercent = GlobalReference.GlobalValues.Random.Next(100) + 1; } return(enchantment); }
private void CleanupEnchantments(IMobileObject mob) { if (mob.Enchantments.Count > 0) { for (int i = mob.Enchantments.Count; i > 0; i--) { IEnchantment enchantment = mob.Enchantments[i - 1]; if (enchantment.EnchantmentEndingDateTime <= DateTime.UtcNow) { mob.Enchantments.RemoveAt(i - 1); } else if (enchantment.DefeatInfo != null) { if (enchantment.DefeatInfo.DoesPayerDefeatEnchantment(mob)) { mob.Enchantments.RemoveAt(i - 1); } } } } }
public Sword(IEnchantment enchantment) { this._enchantment = enchantment; }
public Sword(IEnchantment enchantment) { _enchantment = enchantment; }
public Hammer(IEnchantment enchantment) { _enchantment = enchantment; }
public Sword(IEnchantment enchantment = null) { Enchantment = enchantment; }
public Hammer(IEnchantment enchantment = null) { Enchantment = enchantment; }
private static void RunEnchantment(IEnchantment enchantment, EventType eventType, EventParamerters paramerter) { switch (eventType) { case EventType.AttemptToFollow: enchantment.AttemptToFollow(paramerter.Direction, paramerter.Performer, paramerter.FollowedTarget); break; case EventType.Cast: enchantment.Cast(paramerter.Performer, paramerter.SpellName); break; case EventType.DamageDealtAfterDefense: enchantment.DamageDealtAfterDefense(paramerter.Attacker, paramerter.Defender, paramerter.DamageAmount); break; case EventType.DamageDealtBeforeDefense: enchantment.DamageDealtBeforeDefense(paramerter.Attacker, paramerter.Defender, paramerter.DamageAmount); break; case EventType.DamageReceivedAfterDefense: enchantment.DamageReceivedAfterDefense(paramerter.Attacker, paramerter.Defender, paramerter.DamageAmount); break; case EventType.DamageReceivedBeforeDefense: enchantment.DamageReceivedBeforeDefense(paramerter.Attacker, paramerter.Defender, paramerter.DamageAmount); break; case EventType.Drop: enchantment.Drop(paramerter.Performer, paramerter.Item); break; case EventType.EnterRoom: enchantment.EnterRoom(paramerter.Performer); break; case EventType.Equip: enchantment.Equip(paramerter.Performer, paramerter.Item); break; case EventType.Get: enchantment.Get(paramerter.Performer, paramerter.Item); break; case EventType.HeartbeatBigTick: enchantment.HeartbeatBigTick(paramerter.Performer); break; case EventType.LeaveRoom: enchantment.LeaveRoom(paramerter.Performer, paramerter.Direction); break; case EventType.OnDeath: enchantment.OnDeath(paramerter.Performer); break; case EventType.Perform: enchantment.Perform(paramerter.Performer, paramerter.SkillName); break; case EventType.ProcessedCommand: enchantment.ProcessedCommand(paramerter.Performer, paramerter.Command); break; case EventType.ProcessedCommunication: enchantment.ProcessedCommunication(paramerter.Performer, paramerter.Communication); break; case EventType.Relax: enchantment.Relax(paramerter.Performer); break; case EventType.ReturnedMessage: enchantment.ReturnedMessage(paramerter.Performer, paramerter.Message); break; case EventType.Sit: enchantment.Sit(paramerter.Performer); break; case EventType.Sleep: enchantment.Sleep(paramerter.Performer); break; case EventType.Stand: enchantment.Stand(paramerter.Performer); break; case EventType.Unequip: enchantment.Unequip(paramerter.Performer, paramerter.Item); break; } }
public Gun(IEnchantment enchantment) { _enchantment = enchantment; }