Revenant 2: Electric Boogaloo (#11510)

* revenant 2: electric boogaloo

* revevent

* oversights

* Update RevenantSystem.Abilities.cs

* names

* no shoote stouhg walls
This commit is contained in:
Nemanja
2022-09-28 22:30:48 -04:00
committed by GitHub
parent a9dd9257d8
commit 3c3ee60dd2
25 changed files with 427 additions and 203 deletions

View File

@@ -1,51 +1,17 @@
using Content.Server.Visible;
using Content.Shared.Physics;
using Content.Shared.Revenant;
using Content.Shared.Movement;
using Content.Server.Visible;
using Content.Shared.Revenant.Components;
using Content.Shared.Revenant.EntitySystems;
using Robust.Server.GameObjects;
using Robust.Server.GameStates;
using Robust.Shared.Physics;
using System.Linq;
using Content.Shared.Movement.Systems;
namespace Content.Server.Revenant.EntitySystems;
/// <summary>
/// Makes the revenant solid when the component is applied.
/// Additionally applies a few visual effects.
/// Used for status effect.
/// </summary>
public sealed class CorporealSystem : EntitySystem
public sealed class CorporealSystem : SharedCorporealSystem
{
[Dependency] private readonly VisibilitySystem _visibilitySystem = default!;
[Dependency] private readonly MovementSpeedModifierSystem _movement = default!;
public override void Initialize()
public override void OnStartup(EntityUid uid, CorporealComponent component, ComponentStartup args)
{
base.Initialize();
SubscribeLocalEvent<CorporealComponent, ComponentStartup>(OnStartup);
SubscribeLocalEvent<CorporealComponent, ComponentShutdown>(OnShutdown);
SubscribeLocalEvent<CorporealComponent, RefreshMovementSpeedModifiersEvent>(OnRefresh);
}
private void OnRefresh(EntityUid uid, CorporealComponent component, RefreshMovementSpeedModifiersEvent args)
{
args.ModifySpeed(component.MovementSpeedDebuff, component.MovementSpeedDebuff);
}
private void OnStartup(EntityUid uid, CorporealComponent component, ComponentStartup args)
{
if (TryComp<AppearanceComponent>(uid, out var app))
app.SetData(RevenantVisuals.Corporeal, true);
if (TryComp<FixturesComponent>(uid, out var fixtures) && fixtures.FixtureCount >= 1)
{
var fixture = fixtures.Fixtures.Values.First();
fixture.CollisionMask = (int) (CollisionGroup.SmallMobMask | CollisionGroup.GhostImpassable);
fixture.CollisionLayer = (int) CollisionGroup.SmallMobLayer;
}
base.OnStartup(uid, component, args);
if (TryComp<VisibilityComponent>(uid, out var visibility))
{
@@ -53,21 +19,11 @@ public sealed class CorporealSystem : EntitySystem
_visibilitySystem.AddLayer(visibility, (int) VisibilityFlags.Normal, false);
_visibilitySystem.RefreshVisibility(visibility);
}
_movement.RefreshMovementSpeedModifiers(uid);
}
private void OnShutdown(EntityUid uid, CorporealComponent component, ComponentShutdown args)
public override void OnShutdown(EntityUid uid, CorporealComponent component, ComponentShutdown args)
{
if (TryComp<AppearanceComponent>(uid, out var app))
app.SetData(RevenantVisuals.Corporeal, false);
if (TryComp<FixturesComponent>(uid, out var fixtures) && fixtures.FixtureCount >= 1)
{
var fixture = fixtures.Fixtures.Values.First();
fixture.CollisionMask = (int) CollisionGroup.GhostImpassable;
fixture.CollisionLayer = 0;
}
base.OnShutdown(uid, component, args);
if (TryComp<VisibilityComponent>(uid, out var visibility))
{