/// <summary> /// Used to add bonuses specific to a fighter (e.g. influenced by a decision during gameplay). /// This will increase either one of MagicStrengthBonus's fields or MagicResistanceBonus's fields (if magic type is a simple element), /// or the basic MagicStrength/MagicResistance value if magicType "none" or "all" is specified /// </summary> /// <param name="magicStatType">Determines whther it's magic attack or magic resistance being boosted</param> /// <param name="magicType"></param> /// <param name="bonus"></param> /// <param name="isSecretStatBoost"></param> public void AddMagicBonus(MagicStatType magicStatType, MagicType magicType, int bonus, bool isSecretStatBoost = false) { if (magicType == MagicType.All || magicType == MagicType.None) { if (magicStatType == MagicStatType.Power) { MagicStrength += bonus; } else { MagicResistance += bonus; } } else { MagicSet <int> bonusesSet = magicStatType == MagicStatType.Power ? MagicStrengthBonuses : MagicResistanceBonuses; bonusesSet[magicType] += bonus; } MagicBonusAppliedEventArgs e = new MagicBonusAppliedEventArgs(magicStatType, magicType, bonus, isSecretStatBoost); OnMagicBonusApplied(e); }
public MagicBonusAppliedEventArgs(MagicStatType magicStatType, MagicType magicType, int bonusAmount, bool isSecretStatBonus) { MagicStatType = magicStatType; MagicType = magicType; BonusAmount = bonusAmount; IsSecretStatBonus = isSecretStatBonus; }
public void CorrectlyPrintsMessage_MagicBonusAdded([Values(MagicType.Fire, MagicType.Ice, MagicType.Water)] MagicType magicType, [Values(1, 3)] int bonusAmount, [Values] MagicStatType magicStatType) { MagicBonusAppliedEventArgs e = new MagicBonusAppliedEventArgs(magicStatType, magicType, bonusAmount, false); _fighter.OnMagicBonusApplied(e); MockOutputMessage[] outputs = _output.GetOutputs(); Assert.AreEqual(1, outputs.Length); MockOutputMessage output = outputs[0]; Assert.AreEqual($"{_fighter.DisplayName} gained +{bonusAmount} {magicType.ToString().ToLower()} magic {magicStatType.ToString().ToLower()}\n", output.Message); }
public void AddMagicBonus_AppropriatelyRasiesEvent([Values] MagicStatType magicStatType, [Values] MagicType magicType, [Values(1, 5)] int bonusAmount, [Values] bool isSecret) { _fighter.AddMagicBonus(magicStatType, magicType, bonusAmount, isSecret); List <EventLog> logs = _logger.Logs; Assert.AreEqual(1, logs.Count); EventLog log = logs[0]; Assert.AreEqual(EventType.MagicBonusApplied, log.Type); MagicBonusAppliedEventArgs e = log.E as MagicBonusAppliedEventArgs; Assert.NotNull(e); Assert.AreEqual(magicStatType, e.MagicStatType); Assert.AreEqual(magicType, e.MagicType); Assert.AreEqual(bonusAmount, e.BonusAmount); Assert.AreEqual(isSecret, e.IsSecretStatBonus); }
public MagicDecisionBonus(int bonusAmount, MagicStatType magicStatType, MagicType magicType) : base(bonusAmount) { _magicType = magicType; _magicStatType = magicStatType; }