-
Notifications
You must be signed in to change notification settings - Fork 342
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'map-testing' of https://github.com/PubliclyExecutedPig/…
…Delta-v into map-testing
- Loading branch information
Showing
27 changed files
with
342 additions
and
125 deletions.
There are no files selected for viewing
5 changes: 5 additions & 0 deletions
5
Content.Client/Nyanotrasen/Abilities/Psionics/TelegnosisPowerSystem.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
using Content.Shared.Abilities.Psionics; | ||
|
||
namespace Content.Client.Abilities.Psionics; | ||
|
||
public sealed class TelegnosisPowerSystem : SharedTelegnosisPowerSystem; |
79 changes: 79 additions & 0 deletions
79
Content.Server/DeltaV/Administration/Commands/AnnounceCustomCommand.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
using Content.Server.Chat.Systems; | ||
using Content.Shared.Administration; | ||
using Robust.Shared.Audio; | ||
using Robust.Shared.Console; | ||
using Robust.Shared.ContentPack; | ||
using Robust.Shared.Prototypes; | ||
|
||
namespace Content.Server.Administration.Commands; | ||
|
||
[AdminCommand(AdminFlags.Fun)] | ||
public sealed class AnnounceCustomCommand : IConsoleCommand | ||
{ | ||
[Dependency] private readonly IPrototypeManager _protoManager = default!; | ||
[Dependency] private readonly IResourceManager _res = default!; | ||
|
||
public string Command => "announcecustom"; | ||
public string Description => Loc.GetString("cmd-announcecustom-desc"); | ||
public string Help => Loc.GetString("cmd-announcecustom-help", ("command", Command)); | ||
|
||
public void Execute(IConsoleShell shell, string argStr, string[] args) | ||
{ | ||
var chat = IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<ChatSystem>(); | ||
|
||
switch (args.Length) | ||
{ | ||
case 0: | ||
shell.WriteError(Loc.GetString("shell-need-minimum-one-argument")); | ||
return; | ||
case > 4: | ||
shell.WriteError(Loc.GetString("shell-wrong-arguments-number")); | ||
return; | ||
} | ||
|
||
var message = args[0]; | ||
var sender = "Central Command"; | ||
var color = Color.Gold; | ||
var sound = new SoundPathSpecifier("/Audio/Announcements/announce.ogg"); | ||
|
||
// Optional sender argument | ||
if (args.Length >= 2) | ||
sender = args[1]; | ||
|
||
// Optional color argument | ||
if (args.Length >= 3) | ||
{ | ||
try | ||
{ | ||
color = Color.FromHex(args[2]); | ||
} | ||
catch | ||
{ | ||
shell.WriteError(Loc.GetString("shell-invalid-color-hex")); | ||
return; | ||
} | ||
} | ||
|
||
// Optional sound argument | ||
if (args.Length >= 4) | ||
sound = new SoundPathSpecifier(args[3]); | ||
|
||
chat.DispatchGlobalAnnouncement(message, sender, true, sound, color); | ||
shell.WriteLine(Loc.GetString("shell-command-success")); | ||
} | ||
|
||
public CompletionResult GetCompletion(IConsoleShell shell, string[] args) | ||
{ | ||
return args.Length switch | ||
{ | ||
1 => CompletionResult.FromHint(Loc.GetString("cmd-announcecustom-arg-message")), | ||
2 => CompletionResult.FromHint(Loc.GetString("shell-argument-username-optional-hint")), | ||
3 => CompletionResult.FromHint(Loc.GetString("cmd-announcecustom-arg-color")), | ||
4 => CompletionResult.FromHintOptions( | ||
CompletionHelper.AudioFilePath(args[3], _protoManager, _res), | ||
Loc.GetString("cmd-announcecustom-arg-sound") | ||
), | ||
_ => CompletionResult.Empty | ||
}; | ||
} | ||
} |
80 changes: 49 additions & 31 deletions
80
Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,42 +1,60 @@ | ||
using Content.Shared.Chemistry.EntitySystems; | ||
using Content.Server.Fluids.EntitySystems; | ||
using Content.Shared.Chemistry.Components; | ||
using Content.Shared.Chemistry.EntitySystems; | ||
using Content.Shared.Fluids.Components; | ||
using JetBrains.Annotations; | ||
|
||
namespace Content.Server.Destructible.Thresholds.Behaviors | ||
namespace Content.Server.Destructible.Thresholds.Behaviors; | ||
|
||
[UsedImplicitly] | ||
[DataDefinition] | ||
public sealed partial class SpillBehavior : IThresholdBehavior | ||
{ | ||
[UsedImplicitly] | ||
[DataDefinition] | ||
public sealed partial class SpillBehavior : IThresholdBehavior | ||
{ | ||
[DataField] | ||
public string? Solution; | ||
/// <summary> | ||
/// Optional fallback solution name if SpillableComponent is not present. | ||
/// </summary> | ||
[DataField] | ||
public string? Solution; | ||
|
||
/// <summary> | ||
/// If there is a SpillableComponent on EntityUidowner use it to create a puddle/smear. | ||
/// Or whatever solution is specified in the behavior itself. | ||
/// If none are available do nothing. | ||
/// </summary> | ||
/// <param name="owner">Entity on which behavior is executed</param> | ||
/// <param name="system">system calling the behavior</param> | ||
/// <param name="cause"></param> | ||
public void Execute(EntityUid owner, DestructibleSystem system, EntityUid? cause = null) | ||
{ | ||
var solutionContainerSystem = system.EntityManager.System<SharedSolutionContainerSystem>(); | ||
var spillableSystem = system.EntityManager.System<PuddleSystem>(); | ||
/// <summary> | ||
/// When triggered, spills the entity's solution onto the ground. | ||
/// Will first try to use the solution from a SpillableComponent if present, | ||
/// otherwise falls back to the solution specified in the behavior's data fields. | ||
/// The solution is properly drained/split before spilling to prevent double-spilling with other behaviors. | ||
/// </summary> | ||
/// <param name="owner">Entity whose solution will be spilled</param> | ||
/// <param name="system">System calling this behavior</param> | ||
/// <param name="cause">Optional entity that caused this behavior to trigger</param> | ||
public void Execute(EntityUid owner, DestructibleSystem system, EntityUid? cause = null) | ||
{ | ||
var solutionContainerSystem = system.EntityManager.System<SharedSolutionContainerSystem>(); | ||
var spillableSystem = system.EntityManager.System<PuddleSystem>(); | ||
var coordinates = system.EntityManager.GetComponent<TransformComponent>(owner).Coordinates; | ||
|
||
var coordinates = system.EntityManager.GetComponent<TransformComponent>(owner).Coordinates; | ||
Solution targetSolution; | ||
|
||
if (system.EntityManager.TryGetComponent(owner, out SpillableComponent? spillableComponent) && | ||
solutionContainerSystem.TryGetSolution(owner, spillableComponent.SolutionName, out _, out var compSolution)) | ||
{ | ||
spillableSystem.TrySplashSpillAt(owner, coordinates, compSolution, out _, false, user: cause); | ||
} | ||
else if (Solution != null && | ||
solutionContainerSystem.TryGetSolution(owner, Solution, out _, out var behaviorSolution)) | ||
{ | ||
spillableSystem.TrySplashSpillAt(owner, coordinates, behaviorSolution, out _, user: cause); | ||
} | ||
// First try to get solution from SpillableComponent | ||
if (system.EntityManager.TryGetComponent(owner, out SpillableComponent? spillableComponent) && | ||
solutionContainerSystem.TryGetSolution(owner, spillableComponent.SolutionName, out var solution, out var compSolution)) | ||
{ | ||
// If entity is drainable, drain the solution. Otherwise just split it. | ||
// Both methods ensure the solution is properly removed. | ||
targetSolution = system.EntityManager.HasComponent<DrainableSolutionComponent>(owner) | ||
? solutionContainerSystem.Drain((owner, system.EntityManager.GetComponent<DrainableSolutionComponent>(owner)), solution.Value, compSolution.Volume) | ||
: compSolution.SplitSolution(compSolution.Volume); | ||
} | ||
// Fallback to solution specified in behavior data | ||
else if (Solution != null && | ||
solutionContainerSystem.TryGetSolution(owner, Solution, out var solutionEnt, out var behaviorSolution)) | ||
{ | ||
targetSolution = system.EntityManager.HasComponent<DrainableSolutionComponent>(owner) | ||
? solutionContainerSystem.Drain((owner, system.EntityManager.GetComponent<DrainableSolutionComponent>(owner)), solutionEnt.Value, behaviorSolution.Volume) | ||
: behaviorSolution.SplitSolution(behaviorSolution.Volume); | ||
} | ||
else | ||
return; | ||
|
||
// Spill the solution that was drained/split | ||
spillableSystem.TrySplashSpillAt(owner, coordinates, targetSolution, out _, false, cause); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
...Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/SharedTelegnosisPowerSystem.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
using Content.Shared.Interaction.Events; | ||
|
||
namespace Content.Shared.Abilities.Psionics; | ||
|
||
public abstract class SharedTelegnosisPowerSystem : EntitySystem | ||
{ | ||
public override void Initialize() | ||
{ | ||
base.Initialize(); | ||
|
||
SubscribeLocalEvent<TelegnosticProjectionComponent, InteractionAttemptEvent>(OnInteractionAttempt); | ||
} | ||
|
||
private void OnInteractionAttempt(Entity<TelegnosticProjectionComponent> ent, ref InteractionAttemptEvent args) | ||
{ | ||
// no astrally stealing someones shoes | ||
args.Cancelled = true; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 4 additions & 6 deletions
10
...red/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosticProjectionComponent.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,4 @@ | ||
namespace Content.Shared.Abilities.Psionics | ||
{ | ||
[RegisterComponent] | ||
public sealed partial class TelegnosticProjectionComponent : Component | ||
{} | ||
} | ||
namespace Content.Shared.Abilities.Psionics; | ||
|
||
[RegisterComponent, Access(typeof(SharedTelegnosisPowerSystem))] | ||
public sealed partial class TelegnosticProjectionComponent : Component; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.