Files
Delta-v/Content.Server/_Impstation/Revenant/EntitySystems/RevealRevenantOnCollideSystem.cs
T
39a2b652a6 Add 3 abilities to revenant, salt weaknesses, and evil bible interaction (#3063)
* Added the blood writing ability to revenants

(cherry picked from commit 8157d155e1f7a3840992b54475c59031d2a75f25)

* Added the revenant Animate action

(cherry picked from commit 1b53520849a60538598cae641c6e598b1a5d7534)

* Added Animate action sprite and fixed revenant action sprites being small

(cherry picked from commit 5c88ce9b21cf517023cd136ddb8aaa361f72fbfe)

* Revenants in stasis can now be crafted into sentient revenant plushies

Revenants in stasis can now talk

(cherry picked from commit af84083da6e17bb7671d9f00993dc6bcc0b0a583)

* Revenant plushies and ectoplasm now talk with their trapped revenant's name

(cherry picked from commit 855b25aeb7f29ed6ff2dcc0d4ab1e589ae7e2e16)

* Added a yml nerf option in case revenant is too powerful

(cherry picked from commit 6895a5ca929f32267dea1e326aee62302dc151b8)

* Added a yml nerf option in case revenant is too powerful

(cherry picked from commit 6895a5ca929f32267dea1e326aee62302dc151b8)

* Passing over salt ore now reveals revenants

(cherry picked from commit beea55885f98adc72e34751ba6f798bfadd8dd31)

* Salt puddles now reveal revenants

Hooray for EnsureTileReaction!

(cherry picked from commit b69304747e3b5aa867c5afd8917d2c170c65253e)

* Bibles now reveal revenants

Localization strings added

(cherry picked from commit 62f7ec604748697e5fecc942c4a5d14ff682c596)

* Added the revenant Haunt action

(cherry picked from commit fb692c4cab3f411c11a3004fa73f30122e0ff7f9)

* Haunt witnesses now have an icon over their head on the revenant's client

(cherry picked from commit 5d1b3c6b0af4508ebee7aa8738f7a5f3aa9e53ca)

* Slight revenant nerfs and an additional escape hatch

(cherry picked from commit 490e4c525b75b03502497bfa89827f915f6c7fb2)

* Fixed revenant speech name, and other fixes

This is a few changes clumped into one. I should've broken this one up, but I got overzealous.
- Revenant's ectoplasm now properly uses TransformSpeakerNameEvent
- Revenants crafted into plushies now use VoiceOverrideComponent instead of VoiceMaskComponent
- Plushies now have a custom speaking noise
- Moved Impstation-specific revenant code to the _Impstation subdirectory

(cherry picked from commit a5e0b0c9383e4011e69edc0592c8a4cf40b06402)

* Fixed revenant haunt witness sprite not disappearing

(cherry picked from commit 0c06d4a8f48f6eee324cd944dbcb1fce3258eb58)

* New artifact effectr: animate nearby items (like a revenant)

(cherry picked from commit 6ba1b4d8b313eda9e5ff82246ed7425e80287d0f)

* Revenant cleanups

* Revenant Fixes

* add audio

* haunt fixes

* salt fixes

* grinder gamer

* stasis

* cleanup and comments

* deltav ectoplasm

* clean up imp comment

* event weight and guidebook gaming

* catalog

* alert fix

* window nerf

* effectprobfake

* mapinit

* no braincells ops

Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>

* add physics

* remove phyiscs

* add physics realer

* bible

---------

Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>
Co-authored-by: TGRCDev <tgrc@tgrc.dev>
Co-authored-by: TheGrimbeeper <thegrimbeeper.11@gmail.com>
2025-03-19 16:15:29 +00:00

58 lines
2.1 KiB
C#

using Content.Shared.Revenant.EntitySystems;
using Content.Shared.Revenant.Components;
using Content.Shared.Physics;
using Robust.Shared.Physics.Systems;
using Robust.Shared.Physics.Collision.Shapes;
using Robust.Shared.Physics;
using Robust.Shared.Physics.Components; // DeltaV
namespace Content.Server.Revenant.EntitySystems;
public sealed partial class RevealRevenantOnCollideSystem : SharedRevealRevenantOnCollideSystem
{
[Dependency] private readonly FixtureSystem _fixtures = default!;
[Dependency] private readonly CollisionWakeSystem _collisionWake = default!;
private const string FixtureId = "revenantReveal";
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<RevealRevenantOnCollideComponent, ComponentStartup>(MapInitEvent);
SubscribeLocalEvent<RevealRevenantOnCollideComponent, ComponentShutdown>(OnShutdown);
}
private IPhysShape GetOrCreateShape(EntityUid uid, FixturesComponent? fixtures = null)
{
if (Resolve(uid, ref fixtures))
if (fixtures.Fixtures.TryGetValue("fix1", out var fix))
return fix.Shape;
return new PhysShapeCircle(0.35f);
}
private void MapInitEvent(EntityUid uid, RevealRevenantOnCollideComponent comp, ComponentStartup args)
{
var fixtures = EnsureComp<FixturesComponent>(uid);
EnsureComp<PhysicsComponent>(uid);
_fixtures.TryCreateFixture(uid,
GetOrCreateShape(uid, fixtures),
FixtureId,
hard: false,
collisionMask: (int)CollisionGroup.GhostImpassable,
collisionLayer: (int)CollisionGroup.GhostImpassable,
manager: fixtures
);
// Disable collision wake so that it can trigger collisions even when sitting still
var collisionWake = EnsureComp<CollisionWakeComponent>(uid);
_collisionWake.SetEnabled(uid, false, collisionWake);
}
private void OnShutdown(EntityUid uid, RevealRevenantOnCollideComponent comp, ComponentShutdown args)
{
_fixtures.DestroyFixture(uid, FixtureId);
}
}