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)); } }
public bool CanRuleEventStart(ref TryApplyEntityTag context) { var success = RulesSystem.DiceRollSuccess(context.Chance); PrintLog(success, context); return(success); }
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)); } }
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); }
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)); } }