spell fixes

This commit is contained in:
Ed
2025-06-10 11:49:35 +03:00
parent 42d39a7c67
commit c0f4098ca9
7 changed files with 13 additions and 68 deletions

View File

@@ -1,55 +0,0 @@
using Content.Server.Discord;
using Content.Shared.CCVar;
using Robust.Shared.Configuration;
using Robust.Shared.Player;
using Serilog;
namespace Content.Server.Chat.Managers;
/// <summary>
/// OOC Relay module
/// </summary>
internal sealed partial class ChatManager
{
[Dependency] private readonly DiscordWebhook _discord = default!;
[Dependency] private readonly IConfigurationManager _cfgManager = default!;
private WebhookIdentifier? _OOCwebhook;
private void CP14InitializeOOCRelay()
{
var webhookUrl = _cfgManager.GetCVar(CCVars.DiscordRoundUpdateWebhook);
if (webhookUrl == string.Empty)
return;
_discord.GetWebhook(webhookUrl,
data =>
{
_OOCwebhook = data.ToIdentifier();
});
}
private async void CP14SendOOCInDiscord(ICommonSession player, string message)
{
try
{
if (_OOCwebhook == null)
return;
var name = player.Name;
var content =
message.Replace("@", "\\@")
.Replace("<", "\\<")
.Replace("/",
"\\/"); // @ and < are both problematic for discord due to pinging. / is sanitized solely to kneecap links to murder embeds via blunt force
var payload = new WebhookPayload {Content = $"**`{name}`**: {content}"};
await _discord.CreateMessage(_OOCwebhook.Value, payload);
}
catch (Exception e)
{
Log.Error($"Error while sending discord OOC message:\n{e}");
}
}
}

View File

@@ -54,7 +54,7 @@ public abstract partial class CP14SharedMagicSystem
RaiseLocalEvent(action, ref endEv);
if (cooldown is not null)
_action.CP14StartCustomDelay(action, TimeSpan.FromSeconds(cooldown.Value));
_action.SetCooldown(action.Owner, TimeSpan.FromSeconds(cooldown.Value));
}
private bool UseDelayedAction(ICP14DelayedMagicEffect delayedEffect, Entity<CP14MagicEffectComponent> action, DoAfterEvent doAfter, EntityUid performer, EntityUid? target = null, EntityCoordinates? worldTarget = null)
@@ -120,11 +120,11 @@ public abstract partial class CP14SharedMagicSystem
return;
var doAfter = new CP14DelayedEntityWorldTargetActionDoAfterEvent(
EntityManager.GetNetCoordinates(args.Coords),
EntityManager.GetNetCoordinates(args.Target),
EntityManager.GetNetEntity(args.Entity),
args.Cooldown);
if (!UseDelayedAction(delayedEffect, (args.Action, magicEffect), doAfter, args.Performer, args.Entity, args.Coords))
if (!UseDelayedAction(delayedEffect, (args.Action, magicEffect), doAfter, args.Performer, args.Entity, args.Target))
return;
args.Handled = true;

View File

@@ -27,7 +27,7 @@ public abstract partial class CP14SharedMagicSystem
return;
CastSpell((args.Action, magicEffect), spellArgs);
_action.CP14StartCustomDelay(args.Action, args.Cooldown);
_action.SetCooldown(args.Action.Owner, args.Cooldown);
}
private void OnMagicEntityWorldTargetAction(CP14EntityWorldTargetActionEvent args)
@@ -38,13 +38,13 @@ public abstract partial class CP14SharedMagicSystem
if (!TryComp<CP14MagicEffectComponent>(args.Action, out var magicEffect))
return;
var spellArgs = new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Entity, args.Coords);
var spellArgs = new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Entity, args.Target);
if (!CanCastSpell((args.Action, magicEffect), spellArgs))
return;
CastSpell((args.Action, magicEffect), spellArgs);
_action.CP14StartCustomDelay(args.Action, args.Cooldown);
_action.SetCooldown(args.Action.Owner, args.Cooldown);
}
private void OnMagicEntityTargetAction(CP14EntityTargetActionEvent args)
@@ -61,6 +61,6 @@ public abstract partial class CP14SharedMagicSystem
return;
CastSpell((args.Action, magicEffect), spellArgs);
_action.CP14StartCustomDelay(args.Action, args.Cooldown);
_action.SetCooldown(args.Action.Owner, args.Cooldown);
}
}

View File

@@ -107,7 +107,7 @@ public abstract partial class CP14SharedMagicSystem
private void EndToggleableAction(Entity<CP14MagicEffectComponent> action, EntityUid performer, float? cooldown = null)
{
if (cooldown is not null)
_action.CP14StartCustomDelay(action, TimeSpan.FromSeconds(cooldown.Value));
_action.SetCooldown(action.Owner, TimeSpan.FromSeconds(cooldown.Value));
RemCompDeferred<CP14MagicEffectToggledComponent>(action);
var endEv = new CP14EndCastMagicEffectEvent(performer);
@@ -161,10 +161,10 @@ public abstract partial class CP14SharedMagicSystem
return;
var doAfter = new CP14ToggleableEntityWorldTargetActionDoAfterEvent(
EntityManager.GetNetCoordinates(args.Coords),
EntityManager.GetNetCoordinates(args.Target),
EntityManager.GetNetEntity(args.Entity),
args.Cooldown);
ToggleToggleableAction(toggleable, doAfter, (args.Action, magicEffect), args.Performer, args.Entity, args.Coords);
ToggleToggleableAction(toggleable, doAfter, (args.Action, magicEffect), args.Performer, args.Entity, args.Target);
args.Handled = true;
}

View File

@@ -7,7 +7,7 @@ public interface ICP14MagicEffect
public TimeSpan Cooldown { get; }
}
public sealed partial class CP14EntityWorldTargetActionEvent : EntityWorldTargetActionEvent, ICP14MagicEffect
public sealed partial class CP14EntityWorldTargetActionEvent : WorldTargetActionEvent, ICP14MagicEffect
{
[DataField]
public TimeSpan Cooldown { get; private set; } = TimeSpan.FromSeconds(1f);

View File

@@ -22,7 +22,7 @@ public interface ICP14DelayedMagicEffect
public bool RequireCanInteract { get; }
}
public sealed partial class CP14DelayedEntityWorldTargetActionEvent : EntityWorldTargetActionEvent,
public sealed partial class CP14DelayedEntityWorldTargetActionEvent : WorldTargetActionEvent,
ICP14DelayedMagicEffect
{
[DataField]

View File

@@ -46,7 +46,7 @@ public sealed partial class CP14ToggleableInstantActionEvent : InstantActionEven
public bool Hidden { get; private set; } = false;
}
public sealed partial class CP14ToggleableEntityWorldTargetActionEvent : EntityWorldTargetActionEvent, ICP14ToggleableMagicEffect
public sealed partial class CP14ToggleableEntityWorldTargetActionEvent : WorldTargetActionEvent, ICP14ToggleableMagicEffect
{
[DataField]
public float EffectFrequency { get; private set; } = 1f;