Merge 2d96945b9f into fd5b16abb3
This commit is contained in:
commit
0d8c29a9ae
|
|
@ -4,6 +4,7 @@ using Content.Shared.Examine;
|
|||
using Content.Shared.FixedPoint;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Movement.Systems;
|
||||
using Content.Shared.StatusEffectNew; // DeltaV - Added Hysterical Power
|
||||
|
||||
namespace Content.Shared.Damage.Systems;
|
||||
|
||||
|
|
@ -27,6 +28,8 @@ public sealed class SlowOnDamageSystem : EntitySystem
|
|||
SubscribeLocalEvent<IgnoreSlowOnDamageComponent, ComponentStartup>(OnIgnoreStartup);
|
||||
SubscribeLocalEvent<IgnoreSlowOnDamageComponent, ComponentShutdown>(OnIgnoreShutdown);
|
||||
SubscribeLocalEvent<IgnoreSlowOnDamageComponent, ModifySlowOnDamageSpeedEvent>(OnIgnoreModifySpeed);
|
||||
|
||||
SubscribeLocalEvent<IgnoreSlowOnDamageComponent, StatusEffectRelayedEvent<ModifySlowOnDamageSpeedEvent>>(OnStatusRelayIgnoreModifySpeed); // DeltaV - Add Hysterical Strength
|
||||
}
|
||||
|
||||
private void OnRefreshMovespeed(EntityUid uid, SlowOnDamageComponent component, RefreshMovementSpeedModifiersEvent args)
|
||||
|
|
@ -106,6 +109,14 @@ public sealed class SlowOnDamageSystem : EntitySystem
|
|||
{
|
||||
args.Speed = 1f;
|
||||
}
|
||||
// Start DeltaV - Adding HystericalStrength Psionic Power.
|
||||
private void OnStatusRelayIgnoreModifySpeed(Entity<IgnoreSlowOnDamageComponent> ent, ref StatusEffectRelayedEvent<ModifySlowOnDamageSpeedEvent> args)
|
||||
{
|
||||
var ev = args.Args;
|
||||
ev.Speed = 1f;
|
||||
args.Args = ev;
|
||||
}
|
||||
// End DeltaV - Adding HystericalStrength Psionic Power.
|
||||
}
|
||||
|
||||
[ByRefEvent]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
using Content.Shared._DV.Clothing.Events; // DeltaV - Added Hysterical Power
|
||||
using Content.Shared._DV.Psionics.Events; // DeltaV - Psionics Refactor
|
||||
using Content.Shared.Body.Events;
|
||||
using Content.Shared.Damage.Events;
|
||||
using Content.Shared.Damage.Systems; // DeltaV - Added Hysterical Power
|
||||
using Content.Shared.Mobs; // DeltaV - Added Hysterical Power
|
||||
using Content.Shared.Mobs.Events;
|
||||
using Content.Shared.Mobs;
|
||||
using Content.Shared.Movement.Events;
|
||||
|
|
@ -41,10 +44,7 @@ public sealed partial class StatusEffectsSystem
|
|||
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, BleedModifierEvent>(RefRelayStatusEffectEvent);
|
||||
|
||||
// DeltaV Start - Psionics Refactor
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, PsionicPowerUseAttemptEvent>(RefRelayStatusEffectEvent);
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, TargetedByPsionicPowerEvent>(RefRelayStatusEffectEvent);
|
||||
// DeltaV End - Psionics Refactor
|
||||
InitializeDeltaV(); // DeltaV - Added DeltaV partial file of the system.
|
||||
}
|
||||
|
||||
private void RefRelayStatusEffectEvent<T>(EntityUid uid, StatusEffectContainerComponent component, ref T args) where T : struct
|
||||
|
|
|
|||
|
|
@ -9,5 +9,5 @@ public sealed partial class ClothingSlowResistanceComponent : Component
|
|||
/// Modifier for both walk and sprint slowdown.
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
public float Modifier = 0.25f;
|
||||
public float Modifier;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using Content.Shared._DV.Clothing.Components;
|
||||
using Content.Shared._DV.Clothing.Events;
|
||||
using Content.Shared.Movement.Systems;
|
||||
using Content.Shared.StatusEffectNew;
|
||||
|
||||
namespace Content.Shared._DV.Clothing.Systems;
|
||||
|
||||
|
|
@ -13,6 +14,10 @@ public sealed class ClothingSlowResistanceSystem : EntitySystem
|
|||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<ClothingSlowResistanceComponent, ModifyClothingSlowdownEvent>(OnModifyClothingSlowdown);
|
||||
SubscribeLocalEvent<ClothingSlowResistanceComponent, StatusEffectRelayedEvent<ModifyClothingSlowdownEvent>>(OnRelayedModifyClothingSlowdown);
|
||||
|
||||
SubscribeLocalEvent<ClothingSlowResistanceComponent, StatusEffectAppliedEvent>(OnStatusEffectApplied);
|
||||
SubscribeLocalEvent<ClothingSlowResistanceComponent, StatusEffectRemovedEvent>(OnStatusEffectRemoved);
|
||||
}
|
||||
|
||||
public void SetModifier(Entity<ClothingSlowResistanceComponent?> ent, float modifier)
|
||||
|
|
@ -33,4 +38,27 @@ public sealed class ClothingSlowResistanceSystem : EntitySystem
|
|||
if (args.RunModifier < 1)
|
||||
args.RunModifier += (1 - args.RunModifier) * modifier;
|
||||
}
|
||||
|
||||
private void OnRelayedModifyClothingSlowdown(Entity<ClothingSlowResistanceComponent> ent, ref StatusEffectRelayedEvent<ModifyClothingSlowdownEvent> args)
|
||||
{
|
||||
var ev = args.Args;
|
||||
var modifier = ent.Comp.Modifier;
|
||||
|
||||
if (ev.WalkModifier < 1)
|
||||
ev.WalkModifier += (1 - ev.WalkModifier) * modifier;
|
||||
if (ev.RunModifier < 1)
|
||||
ev.RunModifier += (1 - ev.RunModifier) * modifier;
|
||||
|
||||
args.Args = ev;
|
||||
}
|
||||
|
||||
private void OnStatusEffectApplied(Entity<ClothingSlowResistanceComponent> ent, ref StatusEffectAppliedEvent args)
|
||||
{
|
||||
_movementSpeed.RefreshMovementSpeedModifiers(ent);
|
||||
}
|
||||
|
||||
private void OnStatusEffectRemoved(Entity<ClothingSlowResistanceComponent> ent, ref StatusEffectRemovedEvent args)
|
||||
{
|
||||
_movementSpeed.RefreshMovementSpeedModifiers(ent);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared._DV.Physics.Components;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class ChangeDensityStatusEffectComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// The amount of density added by a new fixture.
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
public int Amount;
|
||||
|
||||
/// <summary>
|
||||
/// The ID of the fixture containing said density.
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
public string FixtureId;
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
using Content.Shared._DV.Physics.Components;
|
||||
using Content.Shared.StatusEffectNew;
|
||||
using Robust.Shared.Physics.Collision.Shapes;
|
||||
using Robust.Shared.Physics.Systems;
|
||||
|
||||
namespace Content.Shared._DV.Physics.Systems;
|
||||
|
||||
/// <summary>
|
||||
/// This takes care of adding and removing Density when the component is added or removed.
|
||||
/// </summary>
|
||||
public sealed class ChangeDensityStatusEffectSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly FixtureSystem _fixture = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
SubscribeLocalEvent<ChangeDensityStatusEffectComponent, StatusEffectAppliedEvent>(OnEffectApplied);
|
||||
SubscribeLocalEvent<ChangeDensityStatusEffectComponent, StatusEffectRemovedEvent>(OnEffectRemoved);
|
||||
}
|
||||
|
||||
private void OnEffectApplied(Entity<ChangeDensityStatusEffectComponent> effect, ref StatusEffectAppliedEvent args)
|
||||
{
|
||||
_fixture.TryCreateFixture(args.Target, new PhysShapeCircle(), effect.Comp.FixtureId, effect.Comp.Amount, false, friction: 0f);
|
||||
}
|
||||
|
||||
private void OnEffectRemoved(Entity<ChangeDensityStatusEffectComponent> effect, ref StatusEffectRemovedEvent args)
|
||||
{
|
||||
_fixture.DestroyFixture(args.Target, effect.Comp.FixtureId);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
using Content.Shared.Damage;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||
|
||||
namespace Content.Shared._DV.Psionics.Components;
|
||||
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
||||
public sealed partial class HystericalStrengthStatusEffectComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// The damage dealt to entities that have this effect.
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
public DamageSpecifier Damage;
|
||||
|
||||
/// <summary>
|
||||
/// How long each damage tick is delayed by.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public TimeSpan DamageDelay = TimeSpan.FromSeconds(1);
|
||||
|
||||
/// <summary>
|
||||
/// The next tick for the damage to be applied.
|
||||
/// </summary>
|
||||
[DataField(customTypeSerializer:typeof(TimeOffsetSerializer)), AutoNetworkedField]
|
||||
public TimeSpan NextTick;
|
||||
|
||||
/// <summary>
|
||||
/// The stun duration when the psionic gets dispelled while actively using that ability.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public TimeSpan StunDurationOnDispel = TimeSpan.FromSeconds(6);
|
||||
|
||||
/// <summary>
|
||||
/// How much glimmer it generates each damage tick.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public int PassiveGlimmerGeneration = 1;
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._DV.Psionics.Components.PsionicPowers;
|
||||
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
||||
public sealed partial class HystericalStrengthPowerComponent : BasePsionicPowerComponent
|
||||
{
|
||||
public override EntProtoId ActionProtoId { get; set; } = "ActionHystericalStrength";
|
||||
|
||||
public override string PowerName { get; set; } = "psionic-power-name-hysterical-strength";
|
||||
|
||||
public override int MinGlimmerChanged { get; set; } = 0;
|
||||
|
||||
public override int MaxGlimmerChanged { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// The density added to the user when the power is active.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float AddedDensity = 500;
|
||||
|
||||
/// <summary>
|
||||
/// The prototype ID of the status effect.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public EntProtoId HystericalStrengthEffectProto = "HystericalStrengthStatusEffect";
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
using Content.Shared.Actions;
|
||||
|
||||
namespace Content.Shared._DV.Psionics.Events.PowerActionEvents;
|
||||
|
||||
public sealed partial class HystericalStrengthPowerActionEvent : InstantActionEvent;
|
||||
|
|
@ -23,7 +23,7 @@ public abstract class BasePsionicPowerSystem<T, T1> : EntitySystem where T : Bas
|
|||
[Dependency] protected readonly IGameTiming Timing = default!;
|
||||
[Dependency] protected readonly SharedActionsSystem Action = default!;
|
||||
[Dependency] protected readonly SharedDoAfterSystem DoAfter = default!;
|
||||
[Dependency] private readonly GlimmerSystem _glimmer = default!;
|
||||
[Dependency] protected readonly GlimmerSystem Glimmer = default!;
|
||||
[Dependency] protected readonly SharedPopupSystem Popup = default!;
|
||||
[Dependency] protected readonly SharedPsionicSystem Psionic = default!;
|
||||
|
||||
|
|
@ -182,7 +182,7 @@ public abstract class BasePsionicPowerSystem<T, T1> : EntitySystem where T : Bas
|
|||
var ev = new PsionicPowerUsedEvent(performer, psionicSource, power);
|
||||
RaiseLocalEvent(psionicSource, ev);
|
||||
|
||||
_glimmer.Glimmer += Random.Next(psionicSource.Comp.MinGlimmerChanged, psionicSource.Comp.MaxGlimmerChanged);
|
||||
Glimmer.Glimmer += Random.Next(psionicSource.Comp.MinGlimmerChanged, psionicSource.Comp.MaxGlimmerChanged);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,104 @@
|
|||
using Content.Shared._DV.Psionics.Components;
|
||||
using Content.Shared._DV.Psionics.Components.PsionicPowers;
|
||||
using Content.Shared._DV.Psionics.Events;
|
||||
using Content.Shared._DV.Psionics.Events.PowerActionEvents;
|
||||
using Content.Shared.Damage.Systems;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Content.Shared.Mobs;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.StatusEffectNew;
|
||||
using Content.Shared.StatusEffectNew.Components;
|
||||
|
||||
namespace Content.Shared._DV.Psionics.Systems.PsionicPowers;
|
||||
|
||||
public sealed class HystericalStrengthPowerSystem : BasePsionicPowerSystem<HystericalStrengthPowerComponent, HystericalStrengthPowerActionEvent>
|
||||
{
|
||||
[Dependency] private readonly DamageableSystem _damageable = default!;
|
||||
[Dependency] private readonly StatusEffectsSystem _statusEffects = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<HystericalStrengthStatusEffectComponent, StatusEffectRelayedEvent<MobStateChangedEvent>>(OnMobStateChanged);
|
||||
SubscribeLocalEvent<HystericalStrengthStatusEffectComponent, StatusEffectRelayedEvent<DispelledEvent>>(OnActiveDispelled);
|
||||
SubscribeLocalEvent<HystericalStrengthStatusEffectComponent, StatusEffectRelayedEvent<PsionicSuppressedEvent>>(OnActiveSuppressed);
|
||||
}
|
||||
|
||||
protected override void OnPowerUsed(Entity<HystericalStrengthPowerComponent> psionic, ref HystericalStrengthPowerActionEvent args)
|
||||
{
|
||||
args.Toggle = true; // This will toggle them AFTER the code has run.
|
||||
// If the action ISN'T toggled, it WILL be toggled after this code, so we have to treat it as if it IS toggled on.
|
||||
if (!args.Action.Comp.Toggled)
|
||||
{
|
||||
if (!_statusEffects.TryUpdateStatusEffectDuration(args.Performer, psionic.Comp.HystericalStrengthEffectProto))
|
||||
return;
|
||||
|
||||
var messageUser = Loc.GetString("psionic-power-hysterical-strength-used");
|
||||
var messageOthers = Loc.GetString("psionic-power-hysterical-strength-used-others", ("user", Identity.Entity(args.Performer, EntityManager)));
|
||||
|
||||
Popup.PopupPredicted(messageUser, messageOthers, args.Performer, args.Performer, PopupType.Medium);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!_statusEffects.TryRemoveStatusEffect(args.Performer, psionic.Comp.HystericalStrengthEffectProto))
|
||||
return;
|
||||
}
|
||||
AfterPowerUsed(psionic, args.Performer);
|
||||
}
|
||||
|
||||
private void TogglePowerAction(EntityUid performer, HystericalStrengthPowerComponent? comp = null)
|
||||
{
|
||||
// In case the power wasn't stopped by pressing the ability, we'll need to un-press it ourselves.
|
||||
if (Resolve(performer, ref comp, false))
|
||||
Action.SetToggled(comp.ActionEntity, false);
|
||||
}
|
||||
|
||||
private void PunishPsionic(EntityUid victim, EntityUid? dispeller = null)
|
||||
{
|
||||
TogglePowerAction(victim);
|
||||
|
||||
var message = Loc.GetString("psionic-power-hysterical-strength-being-dispelled", ("dispelled", Identity.Entity(victim, EntityManager)));
|
||||
|
||||
Popup.PopupPredicted(message, victim, dispeller ?? victim, PopupType.MediumCaution);
|
||||
// TODO: Fix StatusEffectsArrays firing an error when adding a statuseffect amidst relaying events to statuseffects.
|
||||
//_stun.TryAddParalyzeDuration(args.Args.Target, TimeSpan.FromSeconds(6));
|
||||
}
|
||||
|
||||
private void OnActiveDispelled(Entity<HystericalStrengthStatusEffectComponent> effect, ref StatusEffectRelayedEvent<DispelledEvent> args)
|
||||
{
|
||||
PredictedQueueDel(effect);
|
||||
PunishPsionic(args.Args.Target, args.Args.Target);
|
||||
}
|
||||
|
||||
private void OnActiveSuppressed(Entity<HystericalStrengthStatusEffectComponent> effect, ref StatusEffectRelayedEvent<PsionicSuppressedEvent> args)
|
||||
{
|
||||
PredictedQueueDel(effect);
|
||||
PunishPsionic(args.Args.Victim, args.Args.Victim);
|
||||
}
|
||||
|
||||
private void OnMobStateChanged(Entity<HystericalStrengthStatusEffectComponent> effect, ref StatusEffectRelayedEvent<MobStateChangedEvent> args)
|
||||
{
|
||||
if (args.Args.NewMobState == MobState.Alive)
|
||||
return;
|
||||
|
||||
PredictedQueueDel(effect);
|
||||
TogglePowerAction(args.Args.Target);
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
var query = EntityQueryEnumerator<HystericalStrengthStatusEffectComponent, StatusEffectComponent>();
|
||||
|
||||
while (query.MoveNext(out var uid, out var comp, out var statusEffect))
|
||||
{
|
||||
if (comp.NextTick > Timing.CurTime || statusEffect.AppliedTo is null)
|
||||
continue;
|
||||
comp.NextTick = Timing.CurTime + comp.DamageDelay;
|
||||
Dirty(uid, comp);
|
||||
|
||||
Glimmer.Glimmer += comp.PassiveGlimmerGeneration;
|
||||
_damageable.TryChangeDamage(statusEffect.AppliedTo.Value, comp.Damage, ignoreResistances: true, interruptsDoAfters: false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8,6 +8,7 @@ namespace Content.Shared._DV.Psionics.Systems;
|
|||
public abstract partial class SharedPsionicSystem
|
||||
{
|
||||
public static readonly EntProtoId PsionicsDisabledProtoId = "StatusEffectPsionicsDisabled";
|
||||
|
||||
public void InitializeStatusEffects()
|
||||
{
|
||||
SubscribeLocalEvent<PsionicsDisabledComponent, StatusEffectRelayedEvent<PsionicPowerUseAttemptEvent>>(OnPowerUseAttempt);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
using Content.Shared._DV.Clothing.Events;
|
||||
using Content.Shared._DV.Psionics.Events;
|
||||
using Content.Shared.Damage.Systems;
|
||||
using Content.Shared.Mobs;
|
||||
using Content.Shared.StatusEffectNew.Components;
|
||||
|
||||
namespace Content.Shared.StatusEffectNew;
|
||||
|
||||
/// <summary>
|
||||
/// Partial file for DeltaV specific Status Effects to avoid upstream merge conflicts.
|
||||
/// </summary>
|
||||
public sealed partial class StatusEffectsSystem
|
||||
{
|
||||
private void InitializeDeltaV()
|
||||
{
|
||||
// Psionics
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, PsionicPowerUseAttemptEvent>(RefRelayStatusEffectEvent);
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, TargetedByPsionicPowerEvent>(RefRelayStatusEffectEvent);
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, DispelledEvent>(RelayStatusEffectEvent);
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, PsionicSuppressedEvent>(RefRelayStatusEffectEvent);
|
||||
|
||||
// Generic
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, ModifySlowOnDamageSpeedEvent>(RefRelayStatusEffectEvent);
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, ModifyClothingSlowdownEvent>(RefRelayStatusEffectEvent);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
## Names of Psionic Powers
|
||||
psionic-power-name-dispel = Dispel
|
||||
psionic-power-name-eruption = Psionic Eruption
|
||||
psionic-power-name-hysterical-strength = Hysterical Strength
|
||||
psionic-power-name-mass-sleep = Mass Sleep
|
||||
psionic-power-name-mindswap = Mind Swap
|
||||
psionic-power-name-mindswap-return = Mind Swap Return
|
||||
|
|
@ -26,6 +27,11 @@ psionic-equipped-shielded-in-doafter = The insulative gear broke your concentrat
|
|||
psionic-dispelled = Someone dispelled your psionic concentration!
|
||||
|
||||
## Specific Psionic messages
|
||||
# Hysterical Strength
|
||||
psionic-power-hysterical-strength-used = Your muscles begin to burn.. it's hard to breathe.
|
||||
psionic-power-hysterical-strength-used-others = {CAPITALIZE(THE($user))}'s muscles begin to convulse!
|
||||
psionic-power-hysterical-strength-being-dispelled = {CAPITALIZE(THE($dispelled))}'s muscles seize up!
|
||||
|
||||
# Metapsionic Pulse
|
||||
psionic-power-metapsionic-success = You detect psychic presence there.
|
||||
psionic-power-metapsionic-failure = You don't detect any psychic presence there.
|
||||
|
|
|
|||
|
|
@ -213,3 +213,21 @@
|
|||
useDelay: 60
|
||||
- type: InstantAction
|
||||
event: !type:PsychokineticScreamPowerActionEvent
|
||||
|
||||
- type: entity
|
||||
parent: BasePsionicAction
|
||||
id: ActionHystericalStrength
|
||||
name: Toggle Hysterical Strength
|
||||
description: Turn your muscles on overdrive to be slowed down less by clothing and pulling things. It'll hurt.
|
||||
components:
|
||||
- type: Action
|
||||
icon:
|
||||
sprite: _DV/Interface/Actions/actions_psionics_small.rsi
|
||||
state: hysterical_strength_off
|
||||
iconOn:
|
||||
sprite: _DV/Interface/Actions/actions_psionics_small.rsi
|
||||
state: hysterical_strength_on
|
||||
useDelay: 5
|
||||
checkCanInteract: false
|
||||
- type: InstantAction
|
||||
event: !type:HystericalStrengthPowerActionEvent
|
||||
|
|
|
|||
|
|
@ -42,3 +42,20 @@
|
|||
components:
|
||||
- type: RegenerativeSleepingStatusEffect
|
||||
quantity: 0.5
|
||||
|
||||
- type: entity
|
||||
parent: MobStatusEffectBase
|
||||
id: HystericalStrengthStatusEffect
|
||||
name: affected by hysterical strength
|
||||
components:
|
||||
- type: HystericalStrengthStatusEffect
|
||||
damage:
|
||||
types:
|
||||
Asphyxiation: 2.5
|
||||
Bloodloss: 1.5
|
||||
- type: ChangeDensityStatusEffect
|
||||
amount: 500
|
||||
fixtureId: HystericalStrengthStatusEffectFixture
|
||||
- type: ClothingSlowResistance
|
||||
modifier: 0.75
|
||||
- type: IgnoreSlowOnDamage
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
children:
|
||||
- id: DispelPowerEntity
|
||||
weight: 1
|
||||
- id: HystericalStrengthPowerEntity
|
||||
weight: 1
|
||||
- id: PrecognitionPowerEntity
|
||||
weight: 1
|
||||
- id: PsionicRegenerationPowerEntity
|
||||
|
|
@ -13,10 +15,12 @@
|
|||
weight: 1
|
||||
- id: TelegnosisPowerEntity
|
||||
weight: 1
|
||||
- id: MassSleepPowerEntity
|
||||
weight: 0.3
|
||||
- id: MetapsionicPulsePowerEntity
|
||||
weight: 0.5
|
||||
- id: FracturedFormPowerEntity
|
||||
weight: 0.3
|
||||
- id: MassSleepPowerEntity
|
||||
weight: 0.3
|
||||
- id: NoosphericZapPowerEntity
|
||||
weight: 0.3
|
||||
- id: MindSwapPowerEntity
|
||||
|
|
@ -84,3 +88,9 @@
|
|||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: TelegnosisPower
|
||||
|
||||
- type: entity
|
||||
id: HystericalStrengthPowerEntity
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: HystericalStrengthPower
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 751 B |
Binary file not shown.
|
After Width: | Height: | Size: 689 B |
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Fractured Form sprited by TehFlaminTaco on Github for DeltaV.",
|
||||
"copyright": "Fractured Form sprited by TehFlaminTaco on Github for DeltaV. Hysterical Strength sprited by Sal_DragonsNOA on DeltaV Discord.",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
|
|
@ -9,6 +9,12 @@
|
|||
"states": [
|
||||
{
|
||||
"name": "fractured_form"
|
||||
},
|
||||
{
|
||||
"name": "hysterical_strength_on"
|
||||
},
|
||||
{
|
||||
"name": "hysterical_strength_off"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue