public void AbsorbShade(Shade shade) { ShadeAbsorbedEventArgs e = new ShadeAbsorbedEventArgs(shade); OnShadeAbsorbed(e); FullyHeal(); IncrementMalevolenceCounter(shade._malevolenceCounter); StatType statBonus = ChanceService.WhichEventOccurs(AbsorptionBonuses); //TODO: move into a method int increaseAmount; switch (statBonus) { case StatType.Speed: case StatType.Defense: increaseAmount = shade.ShadeExperience; break; case StatType.Evade: increaseAmount = shade.ShadeExperience * 5; break; default: throw new Exception($"Shade.AbsorbShade() does not know how to handle a boost to the '{statBonus}' stat"); } RaiseStat(statBonus, increaseAmount); ShadeExperience += shade.ShadeExperience; shade.CurrentHealth = 0; }
protected void PrintShadeAbsorbedMessage(object sender, ShadeAbsorbedEventArgs e) { Shade senderAsShade = sender as Shade; if (senderAsShade == null) { throw new InvalidCastException("BattleManagerScreenoutputs.PrintShadeAbsorbedMessage was expecting the sender argument to be castable to type Shade"); } _output.WriteLine($"{e.AbsorbedShade.DisplayName}'s essence was absorbed by {senderAsShade.DisplayName}!"); }
private void _logShadeAbsorbed(object sender, ShadeAbsorbedEventArgs e) { Logs.Add(new EventLog(EventType.ShadeAbsorbed, sender, e)); }
public void OnShadeAbsorbed(ShadeAbsorbedEventArgs e) { ShadeAbsorbed?.Invoke(this, e); }