Ejemplo n.º 1
0
        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()));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
        }