Ejemplo n.º 1
0
        public void Handle(ImpactEvent arg)
        {
            if (arg.Hit <= 0 || (!_allowPlayerConfusion && arg.Target.IsPlayer()))
            {
                return;
            }
            var component = arg.Source.Find <ConfuseImpact>();

            if (component == null)
            {
                return;
            }
            var success   = RulesSystem.DiceRollSuccess(component.Chance);
            var logSystem = World.Get <GameLogSystem>();

            logSystem.StartNewMessage(out var logMsg, out var hoverMsg);
            logMsg.Append(arg.Origin.GetName());
            logMsg.Append(!success ? " failed to confuse " : " confused ");
            logMsg.Append(arg.Target.GetName());
            hoverMsg.AppendNewLine(RulesSystem.LastQueryString.ToString());
            if (success)
            {
                hoverMsg.Append(arg.Target.GetName());
                hoverMsg.Append(" confused for ");
                hoverMsg.Append(component.Length);
                hoverMsg.Append(" ");
                hoverMsg.Append(StringConst.TimeUnits);
            }
            logSystem.PostCurrentStrings(!success ? GameLogSystem.NormalColor : GameLogSystem.DamageColor);
            if (success)
            {
                arg.Target.Post(new ConfusionEvent(arg.Target.Entity, component.Length, true));
            }
        }
Ejemplo n.º 2
0
        public bool CanRuleEventStart(ref TryApplyEntityTag context)
        {
            var success = RulesSystem.DiceRollSuccess(context.Chance);

            PrintLog(success, context);
            return(success);
        }
Ejemplo n.º 3
0
        public void Handle(ImpactEvent arg)
        {
            if (arg.Hit <= 0)
            {
                return;
            }
            var component = arg.Source.Find <InstantKillImpact>();

            if (component == null)
            {
                if (arg.Source.Find <RaiseDeadImpact>() != null)
                {
                    arg.Target.Post(new RaiseDeadEvent(arg.Origin, arg.Target));
                }
                return;
            }
            var success   = RulesSystem.DiceRollSuccess(component.Chance);
            var logSystem = World.Get <GameLogSystem>();

            logSystem.StartNewMessage(out var logMsg, out var hoverMsg);
            logMsg.Append(arg.Origin.GetName());
            logMsg.Append(" used instant kill on ");
            logMsg.Append(arg.Target.GetName());
            logMsg.Append(success ? " and succeeded" : " and failed");
            hoverMsg.AppendNewLine(RulesSystem.LastQueryString.ToString());
            logSystem.PostCurrentStrings(!success ? GameLogSystem.NormalColor : GameLogSystem.DeathColor);
            if (success)
            {
                arg.Target.Post(new DeathEvent(arg.Origin, arg.Target, 100));
                arg.Target.Post(new CombatStatusUpdate(arg.Target, "Lethal Hit!", GameLogSystem.DeathColor));
            }
        }
Ejemplo n.º 4
0
        public bool CanRuleEventStart(ref InstantKillEvent context)
        {
            var success   = RulesSystem.DiceRollSuccess(context.InstantKill.Chance);
            var logSystem = World.Get <GameLogSystem>();

            logSystem.StartNewMessage(out var logMsg, out var hoverMsg);
            logMsg.Append(context.Origin.GetName());
            logMsg.Append(" used instant kill on ");
            logMsg.Append(context.Target.GetName());
            logMsg.Append(success ? " and succeeded" : " and failed");
            hoverMsg.AppendNewLine(RulesSystem.LastQueryString.ToString());
            logSystem.PostCurrentStrings(!success ? GameLogSystem.NormalColor : GameLogSystem.DeathColor);
            return(success);
        }
Ejemplo n.º 5
0
 public void Handle(ImpactEvent arg) {
     if (arg.Hit <= 0) {
         return;
     }
     var component = arg.Source.Find<ApplyTagImpact>();
     if (component == null) {
         return;
     }
     var success = RulesSystem.DiceRollSuccess(component.Chance);
     var logSystem = World.Get<GameLogSystem>();
     logSystem.StartNewMessage(out var logMsg, out var hoverMsg);
     logMsg.Append(arg.Origin.GetName());
     logMsg.Append(!success ? " failed to apply " : " applied ");
     logMsg.Append(component.Description);
     logMsg.Append(" on ");
     logMsg.Append(arg.Target.GetName());
     hoverMsg.AppendNewLine(RulesSystem.LastQueryString.ToString());
     if (success) {
         hoverMsg.Append(arg.Target.GetName());
         hoverMsg.Append(" has ");
         hoverMsg.Append(component.Description);
         hoverMsg.Append(" for ");
         hoverMsg.Append(component.Length);
         hoverMsg.Append(" ");
         hoverMsg.Append(StringConst.TimeUnits);
     }
     logSystem.PostCurrentStrings(!success ? GameLogSystem.NormalColor : GameLogSystem.DamageColor);
     if (success) {
         arg.Target.Tags.Add(component.Tag);
         if (component.Length > 0) {
             _timerArray.Add(new TagTimerEvent(arg.Target, TimeManager.Time + component.Length,
                 component.Tag));
         }
         arg.Target.Post(new TagChangeEvent(arg.Target.Entity, component.Tag, true));
     }
 }