public void RuleEventRun(ref PrepareDamageEvent context) { var power = RulesSystem.CalculateImpactTotal(EntityStats, Stats.Power, _damageImpact.Value.NormalizedPercent); context.Entries.Add(new DamageEntry(power, _damageImpact.Value.DamageType, _damageImpact.Value.TargetVital, RulesSystem.LastQueryString.ToString())); }
public void RuleEventEnded(ref ImpactEvent context) { var target = _heal.Value.HealSelf ? context.Origin : context.Target; var power = RulesSystem.CalculateImpactTotal(EntityStats, PixelComrades.Stats.Power, _heal.Value.NormalizedPercent); var logSystem = World.Get <GameLogSystem>(); logSystem.StartNewMessage(out var logMsg, out var hoverMsg); logMsg.Append(context.Origin.GetName()); logMsg.Append(" healed "); logMsg.Append(target.GetName()); logMsg.Append(" for "); logMsg.Append(power.ToString("F0")); hoverMsg.Append(RulesSystem.LastQueryString); logSystem.PostCurrentStrings(GameLogSystem.DamageColor); World.Get <RulesSystem>().Post(new HealingEvent(power, context.Origin, target, _heal.Value.TargetVital)); }
public void RuleEventRun(ref TryApplyMod context) { var stats = context.Origin.Stats; var stat = stats.Get(context.TargetStat); if (stat == null) { return; } if (stat.HasMod(context.ID)) { RemoveStatMod(context.ID); } var power = RulesSystem.CalculateImpactTotal(stats, Stats.Power, context.NormalizedPercent); stat.AddValueMod(new BaseStat.StatValueMod(power, context.ID)); _fastString.Clear(); _fastString.Append("+"); _fastString.Append(power); _fastString.Append(" "); _fastString.Append(stat.Label); var label = _fastString.ToString(); AddStatRemovalTimer( new RemoveStatModifier( stat, new ModEntry( label, label, context.ID, context.Length, context.Origin.Entity, context.Target.Entity, context.Icon))); context.Target.Post(new ModifiersChanged(context.Target.Entity)); var logSystem = World.Get <GameLogSystem>(); logSystem.StartNewMessage(out var logMsg, out var hoverMsg); logMsg.Append(context.Origin.GetName()); logMsg.Append(" added "); logMsg.Append(stat.Label); logMsg.Append(" modifier to "); logMsg.Append(context.Target.GetName()); hoverMsg.AppendNewLine(RulesSystem.LastQueryString.ToString()); hoverMsg.Append(label); hoverMsg.Append(" for "); hoverMsg.Append(context.Length); hoverMsg.Append(" "); hoverMsg.Append(StringConst.TimeUnits); logSystem.PostCurrentStrings(power > 0 ? GameLogSystem.HealColor : GameLogSystem.DamageColor); }