From 41756a1d7ddf001ddb4613441b68bd7321e41bfd Mon Sep 17 00:00:00 2001 From: TryHardo7 Date: Wed, 23 Oct 2024 11:14:21 +0300 Subject: [PATCH 01/10] ONO RABOTAET --- Content.Shared/Movement/Pulling/Systems/PullingSystem.cs | 5 +++-- .../SS220/DarkReaper/DarkReaperSharedSystem.cs | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs index 3c23df89fdbc1e..42467077e74990 100644 --- a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs +++ b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs @@ -20,6 +20,7 @@ using Content.Shared.SS220.Cart.Components; using Content.Shared.Standing; using Content.Shared.Verbs; +using Content.Shared.SS220.DarkReaper; using Robust.Shared.Containers; using Robust.Shared.Input.Binding; using Robust.Shared.Physics; @@ -89,9 +90,9 @@ private void OnPullerStartup(Entity entity, ref ComponentStartu // networked for the space wizards to do it themselves // right after me, so this will work for now and I don't really care // COPIUM - if (!HasComp(entity)) + if (!HasComp(entity)&&!HasComp(entity)) return; - + entity.Comp.NeedsHands = false; } //SS220-Cart-system end diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs index dcd4cba3a087a8..e13dcab83ca0d2 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs @@ -5,6 +5,8 @@ using Content.Shared.Damage; using Content.Shared.DoAfter; using Content.Shared.Explosion.Components; +using Content.Shared.Movement.Pulling.Components; +using PullableComponent = Content.Shared.Movement.Pulling.Components.PullableComponent; using Content.Shared.Humanoid; using Content.Shared.Mobs; using Content.Shared.Mobs.Systems; @@ -18,6 +20,7 @@ using Content.Shared.Tag; using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Melee.Events; +using Content.Shared.Movement.Pulling.Systems; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Network; @@ -53,6 +56,7 @@ public abstract class SharedDarkReaperSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly NpcFactionSystem _npcFaction = default!; + [Dependency] private readonly PullingSystem _puller = default!; public override void Initialize() { @@ -370,6 +374,7 @@ public virtual void ChangeForm(EntityUid uid, DarkReaperComponent comp, bool isM if (isMaterial) { + EnsureComp(uid); _tag.AddTag(uid, "DoorBumpOpener"); if (TryComp(uid, out var explosionResistanceComponent)) @@ -400,6 +405,10 @@ public virtual void ChangeForm(EntityUid uid, DarkReaperComponent comp, bool isM _npcFaction.AddFaction(uid, "DarkReaperPassive"); } _appearance.SetData(uid, DarkReaperVisual.StunEffect, false); + if (TryComp(uid, out PullerComponent? puller) && TryComp(puller.Pulling, out PullableComponent? pullable)) + _puller.TryStopPull(puller.Pulling.Value, pullable); + RemComp(uid); + RemComp(uid); } _actions.SetEnabled(comp.StunActionEntity, isMaterial); From 1227eca815d266dd109e503cf4ec7ed52d923047 Mon Sep 17 00:00:00 2001 From: TryHardo7 Date: Wed, 23 Oct 2024 14:16:54 +0300 Subject: [PATCH 02/10] ReaperConfusionDone --- .../SS220/DarkReaper/DarkReaperActions.cs | 4 ++++ .../SS220/DarkReaper/DarkReaperComponent.cs | 10 ++++++++++ .../SS220/DarkReaper/DarkReaperSharedSystem.cs | 15 +++++++++++++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs b/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs index 0927f5a74255ee..1e2d131726ce8f 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs @@ -22,3 +22,7 @@ public sealed partial class ReaperMaterializeEvent : InstantActionEvent public sealed partial class ReaperSpawnEvent : InstantActionEvent { } + +public sealed partial class ReaperSmokeEvent : InstantActionEvent +{ +} \ No newline at end of file diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs b/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs index 6342dc082ec2d2..b0f8841c415fb3 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs @@ -111,6 +111,16 @@ public sealed partial class DarkReaperComponent : Component [ViewVariables, DataField] public float StunAbilityLightBreakRadius = 4.5f; + /// + /// Handles confusion ability params + /// StunAbilityConfusion - radius + /// ConfusionDuration - + /// ConfusionEffectName - + /// + public float StunAbilityConfusion = 12f; + public TimeSpan ConfusionDuration = TimeSpan.FromSeconds(7); + public string ConfusionEffectName = "Flashed"; + /// /// Duration of the stun that is applied by the ability /// diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs index e13dcab83ca0d2..a65c9021d462a7 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs @@ -5,12 +5,15 @@ using Content.Shared.Damage; using Content.Shared.DoAfter; using Content.Shared.Explosion.Components; -using Content.Shared.Movement.Pulling.Components; using PullableComponent = Content.Shared.Movement.Pulling.Components.PullableComponent; +using Content.Shared.Flash; +using Content.Shared.Flash.Components; using Content.Shared.Humanoid; using Content.Shared.Mobs; using Content.Shared.Mobs.Systems; using Content.Shared.Movement.Components; +using Content.Shared.Movement.Pulling.Systems; +using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Systems; using Content.Shared.NPC.Components; using Content.Shared.NPC.Systems; @@ -18,9 +21,9 @@ using Content.Shared.Popups; using Content.Shared.Stunnable; using Content.Shared.Tag; +using Content.Shared.StatusEffect; using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Melee.Events; -using Content.Shared.Movement.Pulling.Systems; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Network; @@ -57,6 +60,8 @@ public abstract class SharedDarkReaperSystem : EntitySystem [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly NpcFactionSystem _npcFaction = default!; [Dependency] private readonly PullingSystem _puller = default!; + [Dependency] private readonly SharedFlashSystem _flash = default!; + [Dependency] private readonly StatusEffectsSystem _statusEffectsSystem = default!; public override void Initialize() { @@ -168,6 +173,12 @@ protected virtual void DoStunAbility(EntityUid uid, DarkReaperComponent comp) { _stun.TryParalyze(entity, comp.StunDuration, true); } + var confusedentities = _lookup.GetEntitiesInRange(uid, comp.StunAbilityConfusion); + foreach (var entity in confusedentities) + { + if (!_statusEffectsSystem.TryAddStatusEffect(entity, comp.ConfusionEffectName, comp.ConfusionDuration, true)) + continue; + } } protected virtual void DoRoflAbility(EntityUid uid, DarkReaperComponent comp) From 8ee5833b3033bd151150f7f1268645ac1200c0eb Mon Sep 17 00:00:00 2001 From: TryHardo7 Date: Thu, 24 Oct 2024 00:20:41 +0300 Subject: [PATCH 03/10] blood mist working --- Content.Shared/SS220/DarkReaper/DarkReaperActions.cs | 4 ++++ Resources/Prototypes/SS220/DemonRofler/actions.yml | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs b/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs index 1e2d131726ce8f..b2db69a1b96ff3 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs @@ -25,4 +25,8 @@ public sealed partial class ReaperSpawnEvent : InstantActionEvent public sealed partial class ReaperSmokeEvent : InstantActionEvent { +} + +public sealed partial class ReaperBloodMistEvent : InstantActionEvent +{ } \ No newline at end of file diff --git a/Resources/Prototypes/SS220/DemonRofler/actions.yml b/Resources/Prototypes/SS220/DemonRofler/actions.yml index 029291586c0c60..d1333d7e87c3f8 100644 --- a/Resources/Prototypes/SS220/DemonRofler/actions.yml +++ b/Resources/Prototypes/SS220/DemonRofler/actions.yml @@ -52,3 +52,14 @@ itemIconStyle: NoItem icon: { sprite: SS220/DemonRofler/dark_reaper.rsi, state: jnecexit } useDelay: 1 + +- type: entity + id: ActionDarkReaperBloodMist + name: Кровавый туман + description: Выпустить кровавый туман. + components: + - type: InstantAction + event: !type:ReaperBloodMistEvent + itemIconStyle: NoItem + icon: { sprite: SS220/DemonRofler/dark_reaper.rsi, state: jnecexit } + useDelay: 1 From c4b0fa1a7a1c30245036e2843034755a8c9bf0ea Mon Sep 17 00:00:00 2001 From: TryHardo7 Date: Thu, 24 Oct 2024 00:20:45 +0300 Subject: [PATCH 04/10] bloodmist work --- .../SS220/DarkReaper/DarkReaperSystem.cs | 4 ++ .../SS220/DarkReaper/DarkReaperComponent.cs | 46 +++++++++++++++--- .../DarkReaper/DarkReaperSharedSystem.cs | 19 +++++++- .../Prototypes/SS220/DemonRofler/actions.yml | 4 +- .../SS220/DemonRofler/bloodmist.yml | 30 ++++++++++++ .../dark_reaper.rsi/icon_bloodmist.png | Bin 0 -> 480 bytes .../DemonRofler/dark_reaper.rsi/meta.json | 7 ++- 7 files changed, 98 insertions(+), 12 deletions(-) create mode 100644 Resources/Prototypes/SS220/DemonRofler/bloodmist.yml create mode 100644 Resources/Textures/SS220/DemonRofler/dark_reaper.rsi/icon_bloodmist.png diff --git a/Content.Server/SS220/DarkReaper/DarkReaperSystem.cs b/Content.Server/SS220/DarkReaper/DarkReaperSystem.cs index c4fed10f4a239f..3a9032784d8ec7 100644 --- a/Content.Server/SS220/DarkReaper/DarkReaperSystem.cs +++ b/Content.Server/SS220/DarkReaper/DarkReaperSystem.cs @@ -210,6 +210,9 @@ protected override void OnCompInit(EntityUid uid, DarkReaperComponent comp, Comp if (!comp.MaterializeActionEntity.HasValue) _actions.AddAction(uid, ref comp.MaterializeActionEntity, comp.MaterializeAction); + if (!comp.BloodMistActionEntity.HasValue) + _actions.AddAction(uid, ref comp.BloodMistActionEntity, comp.BloodMistAction); + UpdateAlert(uid, comp); } @@ -221,6 +224,7 @@ protected override void OnCompShutdown(EntityUid uid, DarkReaperComponent comp, _actions.RemoveAction(uid, comp.StunActionEntity); _actions.RemoveAction(uid, comp.ConsumeActionEntity); _actions.RemoveAction(uid, comp.MaterializeActionEntity); + _actions.RemoveAction(uid, comp.BloodMistActionEntity); } protected override void DoStunAbility(EntityUid uid, DarkReaperComponent comp) diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs b/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs index b0f8841c415fb3..307f3dbe4d15f5 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs @@ -112,10 +112,10 @@ public sealed partial class DarkReaperComponent : Component public float StunAbilityLightBreakRadius = 4.5f; /// - /// Handles confusion ability params - /// StunAbilityConfusion - radius - /// ConfusionDuration - - /// ConfusionEffectName - + /// Handles confusion params + /// StunAbilityConfusion - radius in which entities are affected by confusion + /// ConfusionDuration - duration of the confusion effect + /// ConfusionEffectName - name of effect that applied /// public float StunAbilityConfusion = 12f; public TimeSpan ConfusionDuration = TimeSpan.FromSeconds(7); @@ -136,6 +136,29 @@ public sealed partial class DarkReaperComponent : Component [ViewVariables, DataField, AutoNetworkedField] public SoundSpecifier StunAbilitySound = new SoundPathSpecifier("/Audio/SS220/DarkReaper/jnec_scrm.ogg"); + /// BLOOD MIST + + /// + /// How long the mist stays for, after it has spread + /// + [ViewVariables, DataField] + public TimeSpan BloodMistLength = TimeSpan.FromSeconds(10); + /// + /// Proto of what is being spawned by ability + /// + [ViewVariables, DataField] + public string BloodMistProto = "BloodMistSpread"; + + /// + /// BloodMist sound + /// + /// + [ViewVariables, DataField, AutoNetworkedField] + public SoundSpecifier BloodMistSound = new SoundPathSpecifier("/Audio/Items/smoke_grenade_smoke.ogg", new() + { + MaxDistance = 7 + }); + /// ROFL /// @@ -229,21 +252,24 @@ public sealed partial class DarkReaperComponent : Component new() { { "Slash", 12 }, - { "Piercing", 4 } + { "Piercing", 4 }, + { "Structural", 20 } }, // Stage 2 new() { { "Slash", 16 }, - { "Piercing", 8 } + { "Piercing", 8 }, + { "Structural", 40 } }, // Stage 3 new() { { "Slash", 20 }, - { "Piercing", 16 } + { "Piercing", 16 }, + { "Structural", 80 } } }; @@ -306,6 +332,8 @@ public sealed partial class DarkReaperComponent : Component public EntProtoId ConsumeAction = "ActionDarkReaperConsume"; [DataField] public EntProtoId MaterializeAction = "ActionDarkReaperMaterialize"; + [DataField] + public EntProtoId BloodMistAction = "ActionDarkReaperBloodMist"; [DataField, AutoNetworkedField] public EntityUid? RoflActionEntity; @@ -315,6 +343,8 @@ public sealed partial class DarkReaperComponent : Component public EntityUid? ConsumeActionEntity; [DataField, AutoNetworkedField] public EntityUid? MaterializeActionEntity; + [DataField, AutoNetworkedField] + public EntityUid? BloodMistActionEntity; // ABILITY STATES /// [ViewVariables, AutoNetworkedField] @@ -331,6 +361,8 @@ public sealed partial class DarkReaperComponent : Component [ViewVariables] public TimeSpan? MaterializedStart; + [ViewVariables, AutoNetworkedField] + public TimeSpan? BloodMistStart; } [Serializable, NetSerializable] diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs index a65c9021d462a7..2cffe11b8ebdab 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs @@ -78,6 +78,7 @@ public override void Initialize() SubscribeLocalEvent(OnMobStateChanged); SubscribeLocalEvent(OnGetMeleeDamage); SubscribeLocalEvent(OnDamageModify); + SubscribeLocalEvent(OnBloodMistAction); SubscribeLocalEvent(OnAfterMaterialize); SubscribeLocalEvent(OnAfterDeMaterialize); @@ -88,10 +89,21 @@ public override void Initialize() private void OnRoflAction(EntityUid uid, DarkReaperComponent comp, ReaperRoflEvent args) { args.Handled = true; - + if (!comp.PhysicalForm) + return; DoRoflAbility(uid, comp); } + private void OnBloodMistAction(EntityUid uid, DarkReaperComponent comp, ReaperBloodMistEvent args) + { + if (!comp.PhysicalForm) + return; + args.Handled = true; + _audio.PlayPredicted(comp.BloodMistSound, uid, uid); + + DoBloodMistAction(uid, comp); + } + private void OnConsumeAction(EntityUid uid, DarkReaperComponent comp, ReaperConsumeEvent args) { if (!comp.PhysicalForm) @@ -181,6 +193,11 @@ protected virtual void DoStunAbility(EntityUid uid, DarkReaperComponent comp) } } + protected virtual void DoBloodMistAction(EntityUid uid, DarkReaperComponent comp) + { + Spawn(comp.BloodMistProto, Transform(uid).Coordinates); + } + protected virtual void DoRoflAbility(EntityUid uid, DarkReaperComponent comp) { _audio.PlayPredicted(comp.RolfAbilitySound, uid, uid); diff --git a/Resources/Prototypes/SS220/DemonRofler/actions.yml b/Resources/Prototypes/SS220/DemonRofler/actions.yml index d1333d7e87c3f8..9e97fd339cf3ab 100644 --- a/Resources/Prototypes/SS220/DemonRofler/actions.yml +++ b/Resources/Prototypes/SS220/DemonRofler/actions.yml @@ -61,5 +61,5 @@ - type: InstantAction event: !type:ReaperBloodMistEvent itemIconStyle: NoItem - icon: { sprite: SS220/DemonRofler/dark_reaper.rsi, state: jnecexit } - useDelay: 1 + icon: { sprite: SS220/DemonRofler/dark_reaper.rsi, state: icon_bloodmist } + useDelay: 60 diff --git a/Resources/Prototypes/SS220/DemonRofler/bloodmist.yml b/Resources/Prototypes/SS220/DemonRofler/bloodmist.yml new file mode 100644 index 00000000000000..70baccc4ba946a --- /dev/null +++ b/Resources/Prototypes/SS220/DemonRofler/bloodmist.yml @@ -0,0 +1,30 @@ +- type: entity + parent: Smoke + id: BloodMist + name: blood mist + categories: [ HideSpawnMenu ] + components: + - type: Sprite + color: "#FF0000" + sprite: Effects/chemsmoke.rsi + state: chemsmoke + - type: TimedDespawn + lifetime: 15 + +- type: entity + parent: Smoke + id: BloodMistSpread + name: blood mist + categories: + components: + - type: Sprite + color: "#FF0000" + sprite: Effects/chemsmoke.rsi + state: chemsmoke + - type: TriggerOnSpawn + - type: TimedDespawn + lifetime: 15 + - type: SmokeOnTrigger + duration: 15 + spreadAmount: 30 + smokePrototype: BloodMist diff --git a/Resources/Textures/SS220/DemonRofler/dark_reaper.rsi/icon_bloodmist.png b/Resources/Textures/SS220/DemonRofler/dark_reaper.rsi/icon_bloodmist.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0f3c620b24a43e0e288c1de63fae6a50de14db GIT binary patch literal 480 zcmV<60U!Q}P)Px$nn^@KR9J=WmQ8ZQAPj{+JUJ2ZmE!hD9p_3mM+#jSr9#FSGF^10d7BW7^qzi@ z4R8E+xK|CYxOh$GE0G(HPafU=x(z0VSbIKqis(8lWa~osC9hsqWUtsLot* ztZ6-L4(h|DMD7!b2WDciY#NI>^OZQ8=0GXJ9!Lhq^t+W{!yp?PBaV;^ZTep!mxh%3 zC(gVFG!|m9i;qytkOw|^WTYAw*qWjwq7|jVB?x`zOURgd-+Hxy6gW@+PJoCI<&eJ- zC6b#mD~;s464fnWi)4s4ZQ|%GORbSt1)M<()E}nuzvq+e<*(vI7Il-gM*YSce+u8` WLA=MfrxBz80000 Date: Thu, 24 Oct 2024 13:34:27 +0300 Subject: [PATCH 05/10] fixes --- Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs index 2cffe11b8ebdab..f0ec85e9d55a8f 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs @@ -5,7 +5,6 @@ using Content.Shared.Damage; using Content.Shared.DoAfter; using Content.Shared.Explosion.Components; -using PullableComponent = Content.Shared.Movement.Pulling.Components.PullableComponent; using Content.Shared.Flash; using Content.Shared.Flash.Components; using Content.Shared.Humanoid; @@ -89,8 +88,7 @@ public override void Initialize() private void OnRoflAction(EntityUid uid, DarkReaperComponent comp, ReaperRoflEvent args) { args.Handled = true; - if (!comp.PhysicalForm) - return; + DoRoflAbility(uid, comp); } @@ -433,6 +431,7 @@ public virtual void ChangeForm(EntityUid uid, DarkReaperComponent comp, bool isM _npcFaction.AddFaction(uid, "DarkReaperPassive"); } _appearance.SetData(uid, DarkReaperVisual.StunEffect, false); + if (TryComp(uid, out PullerComponent? puller) && TryComp(puller.Pulling, out PullableComponent? pullable)) _puller.TryStopPull(puller.Pulling.Value, pullable); RemComp(uid); From 1b27f4dd894843b44a45a9f4d686a385696d20e8 Mon Sep 17 00:00:00 2001 From: TryHardo7 Date: Thu, 24 Oct 2024 14:48:11 +0300 Subject: [PATCH 06/10] moved bloodmist params from reaperComp to action datafields --- .../SS220/DarkReaper/DarkReaperActions.cs | 26 +++++++++++++++++++ .../SS220/DarkReaper/DarkReaperComponent.cs | 23 ---------------- .../DarkReaper/DarkReaperSharedSystem.cs | 8 +++--- .../DemonRofler/dark_reaper.rsi/meta.json | 2 +- 4 files changed, 31 insertions(+), 28 deletions(-) diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs b/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs index b2db69a1b96ff3..c1a3e3bfcd6e3f 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs @@ -1,5 +1,7 @@ // © SS220, An EULA/CLA with a hosting restriction, full text: https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/CLA.txt using Content.Shared.Actions; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Audio; namespace Content.Shared.SS220.DarkReaper; @@ -29,4 +31,28 @@ public sealed partial class ReaperSmokeEvent : InstantActionEvent public sealed partial class ReaperBloodMistEvent : InstantActionEvent { + [Dependency] private readonly SharedAudioSystem _audio = default!; + /// BLOOD MIST + + /// + /// How long the mist stays for, after it has spread + /// + [DataField] + public TimeSpan BloodMistLength = TimeSpan.FromSeconds(10); + /// + /// Proto of what is being spawned by ability + /// + [DataField] + public string BloodMistProto = "BloodMistSpread"; + + /// + /// BloodMist sound + /// + /// + [DataField, AutoNetworkedField] + public SoundSpecifier BloodMistSound = new SoundPathSpecifier("/Audio/Items/smoke_grenade_smoke.ogg", new() + { + MaxDistance = 7 + }); + } \ No newline at end of file diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs b/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs index 307f3dbe4d15f5..20f2c902fb4f74 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs @@ -136,29 +136,6 @@ public sealed partial class DarkReaperComponent : Component [ViewVariables, DataField, AutoNetworkedField] public SoundSpecifier StunAbilitySound = new SoundPathSpecifier("/Audio/SS220/DarkReaper/jnec_scrm.ogg"); - /// BLOOD MIST - - /// - /// How long the mist stays for, after it has spread - /// - [ViewVariables, DataField] - public TimeSpan BloodMistLength = TimeSpan.FromSeconds(10); - /// - /// Proto of what is being spawned by ability - /// - [ViewVariables, DataField] - public string BloodMistProto = "BloodMistSpread"; - - /// - /// BloodMist sound - /// - /// - [ViewVariables, DataField, AutoNetworkedField] - public SoundSpecifier BloodMistSound = new SoundPathSpecifier("/Audio/Items/smoke_grenade_smoke.ogg", new() - { - MaxDistance = 7 - }); - /// ROFL /// diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs index f0ec85e9d55a8f..fbb1c9a0a83fe7 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs @@ -97,9 +97,9 @@ private void OnBloodMistAction(EntityUid uid, DarkReaperComponent comp, ReaperBl if (!comp.PhysicalForm) return; args.Handled = true; - _audio.PlayPredicted(comp.BloodMistSound, uid, uid); + _audio.PlayPredicted(args.BloodMistSound, uid, uid); - DoBloodMistAction(uid, comp); + DoBloodMistAction(uid, args); } private void OnConsumeAction(EntityUid uid, DarkReaperComponent comp, ReaperConsumeEvent args) @@ -191,9 +191,9 @@ protected virtual void DoStunAbility(EntityUid uid, DarkReaperComponent comp) } } - protected virtual void DoBloodMistAction(EntityUid uid, DarkReaperComponent comp) + protected virtual void DoBloodMistAction(EntityUid uid, ReaperBloodMistEvent args) { - Spawn(comp.BloodMistProto, Transform(uid).Coordinates); + Spawn(args.BloodMistProto, Transform(uid).Coordinates); } protected virtual void DoRoflAbility(EntityUid uid, DarkReaperComponent comp) diff --git a/Resources/Textures/SS220/DemonRofler/dark_reaper.rsi/meta.json b/Resources/Textures/SS220/DemonRofler/dark_reaper.rsi/meta.json index f2d5e53863af42..e925c0b6ce3189 100644 --- a/Resources/Textures/SS220/DemonRofler/dark_reaper.rsi/meta.json +++ b/Resources/Textures/SS220/DemonRofler/dark_reaper.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 2, "license": "EULA/CLA with a hosting restriction, full text: https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/CLA.txt", - "copyright": "Made by MIXnikita and Lanc for SS220, randomgibs is taken from Paradise build of SS13", + "copyright": "Made by MIXnikita for SS220, randomgibs is taken from Paradise build of SS13, icon_bloodmist made by Lanc for SS220", "size": { "x": 32, "y": 32 From 1303d8d79cf3bbbf5b5fb7651df487c19d092b08 Mon Sep 17 00:00:00 2001 From: TryHardo7 Date: Thu, 24 Oct 2024 15:11:14 +0300 Subject: [PATCH 07/10] changed pulling method --- Content.Shared/Movement/Pulling/Components/PullerComponent.cs | 4 ++-- Content.Shared/Movement/Pulling/Systems/PullingSystem.cs | 2 +- Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Content.Shared/Movement/Pulling/Components/PullerComponent.cs b/Content.Shared/Movement/Pulling/Components/PullerComponent.cs index 197d7cfd7c899e..e3621cf7275c95 100644 --- a/Content.Shared/Movement/Pulling/Components/PullerComponent.cs +++ b/Content.Shared/Movement/Pulling/Components/PullerComponent.cs @@ -36,9 +36,9 @@ public sealed partial class PullerComponent : Component public EntityUid? Pulling; /// - /// Does this entity need hands to be able to pull something? + /// Does this entity need hands to be able to pull something? SS220 DarkReaper Access /// - [DataField] + [DataField] [Access(Other = AccessPermissions.ReadWriteExecute)] public bool NeedsHands = true; [DataField] diff --git a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs index 42467077e74990..d04143bf0251b2 100644 --- a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs +++ b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs @@ -90,7 +90,7 @@ private void OnPullerStartup(Entity entity, ref ComponentStartu // networked for the space wizards to do it themselves // right after me, so this will work for now and I don't really care // COPIUM - if (!HasComp(entity)&&!HasComp(entity)) + if (!HasComp(entity)) return; entity.Comp.NeedsHands = false; diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs index fbb1c9a0a83fe7..59075e261d150f 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs @@ -400,7 +400,7 @@ public virtual void ChangeForm(EntityUid uid, DarkReaperComponent comp, bool isM if (isMaterial) { - EnsureComp(uid); + EnsureComp(uid).NeedsHands = false; _tag.AddTag(uid, "DoorBumpOpener"); if (TryComp(uid, out var explosionResistanceComponent)) From e80a09934c7e83a22608d152d0c042512d5bd1a8 Mon Sep 17 00:00:00 2001 From: TryHardo7 Date: Thu, 24 Oct 2024 18:59:39 +0300 Subject: [PATCH 08/10] i forgor --- Content.Shared/Movement/Pulling/Systems/PullingSystem.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs index d04143bf0251b2..927165dca1d6a1 100644 --- a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs +++ b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs @@ -20,7 +20,6 @@ using Content.Shared.SS220.Cart.Components; using Content.Shared.Standing; using Content.Shared.Verbs; -using Content.Shared.SS220.DarkReaper; using Robust.Shared.Containers; using Robust.Shared.Input.Binding; using Robust.Shared.Physics; From e9da976dbadb112b9e79d1772de176f4bff0975e Mon Sep 17 00:00:00 2001 From: TryHardo7 Date: Fri, 25 Oct 2024 23:54:15 +0300 Subject: [PATCH 09/10] requested changes --- .../Movement/Pulling/Components/PullerComponent.cs | 5 +++-- .../Movement/Pulling/Systems/PullingSystem.cs | 3 +-- Content.Shared/SS220/DarkReaper/DarkReaperActions.cs | 1 - .../SS220/DarkReaper/DarkReaperComponent.cs | 12 +++++++++--- .../SS220/DarkReaper/DarkReaperSharedSystem.cs | 9 ++------- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Content.Shared/Movement/Pulling/Components/PullerComponent.cs b/Content.Shared/Movement/Pulling/Components/PullerComponent.cs index e3621cf7275c95..075ee0d88d56b3 100644 --- a/Content.Shared/Movement/Pulling/Components/PullerComponent.cs +++ b/Content.Shared/Movement/Pulling/Components/PullerComponent.cs @@ -36,9 +36,10 @@ public sealed partial class PullerComponent : Component public EntityUid? Pulling; /// - /// Does this entity need hands to be able to pull something? SS220 DarkReaper Access + /// Does this entity need hands to be able to pull something? /// - [DataField] [Access(Other = AccessPermissions.ReadWriteExecute)] + [DataField] + [Access(Other = AccessPermissions.ReadWriteExecute)] //SS220 DarkReaper Access public bool NeedsHands = true; [DataField] diff --git a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs index 927165dca1d6a1..b14b2515ed1bff 100644 --- a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs +++ b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs @@ -90,8 +90,7 @@ private void OnPullerStartup(Entity entity, ref ComponentStartu // right after me, so this will work for now and I don't really care // COPIUM if (!HasComp(entity)) - return; - + return; entity.Comp.NeedsHands = false; } //SS220-Cart-system end diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs b/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs index c1a3e3bfcd6e3f..b463ad8c6a8788 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperActions.cs @@ -48,7 +48,6 @@ public sealed partial class ReaperBloodMistEvent : InstantActionEvent /// /// BloodMist sound /// - /// [DataField, AutoNetworkedField] public SoundSpecifier BloodMistSound = new SoundPathSpecifier("/Audio/Items/smoke_grenade_smoke.ogg", new() { diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs b/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs index 20f2c902fb4f74..073df590846c1d 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs @@ -112,13 +112,19 @@ public sealed partial class DarkReaperComponent : Component public float StunAbilityLightBreakRadius = 4.5f; /// - /// Handles confusion params /// StunAbilityConfusion - radius in which entities are affected by confusion - /// ConfusionDuration - duration of the confusion effect - /// ConfusionEffectName - name of effect that applied /// + [DataField] public float StunAbilityConfusion = 12f; + /// + /// ConfusionDuration - duration of the confusion effect + /// + [DataField] public TimeSpan ConfusionDuration = TimeSpan.FromSeconds(7); + /// + /// ConfusionEffectName - name of effect that applied + /// + [DataField] public string ConfusionEffectName = "Flashed"; /// diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs index 59075e261d150f..5e6a8d52b8e201 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperSharedSystem.cs @@ -98,8 +98,7 @@ private void OnBloodMistAction(EntityUid uid, DarkReaperComponent comp, ReaperBl return; args.Handled = true; _audio.PlayPredicted(args.BloodMistSound, uid, uid); - - DoBloodMistAction(uid, args); + Spawn(args.BloodMistProto, Transform(uid).Coordinates); } private void OnConsumeAction(EntityUid uid, DarkReaperComponent comp, ReaperConsumeEvent args) @@ -183,6 +182,7 @@ protected virtual void DoStunAbility(EntityUid uid, DarkReaperComponent comp) { _stun.TryParalyze(entity, comp.StunDuration, true); } + var confusedentities = _lookup.GetEntitiesInRange(uid, comp.StunAbilityConfusion); foreach (var entity in confusedentities) { @@ -191,11 +191,6 @@ protected virtual void DoStunAbility(EntityUid uid, DarkReaperComponent comp) } } - protected virtual void DoBloodMistAction(EntityUid uid, ReaperBloodMistEvent args) - { - Spawn(args.BloodMistProto, Transform(uid).Coordinates); - } - protected virtual void DoRoflAbility(EntityUid uid, DarkReaperComponent comp) { _audio.PlayPredicted(comp.RolfAbilitySound, uid, uid); From 538766d0d596679005990b1314c37cfeba5c6b31 Mon Sep 17 00:00:00 2001 From: TryHardo7 Date: Sat, 26 Oct 2024 03:25:05 +0300 Subject: [PATCH 10/10] fix --- Content.Shared/Movement/Pulling/Systems/PullingSystem.cs | 3 ++- Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs index b14b2515ed1bff..3c23df89fdbc1e 100644 --- a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs +++ b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs @@ -90,7 +90,8 @@ private void OnPullerStartup(Entity entity, ref ComponentStartu // right after me, so this will work for now and I don't really care // COPIUM if (!HasComp(entity)) - return; + return; + entity.Comp.NeedsHands = false; } //SS220-Cart-system end diff --git a/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs b/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs index 073df590846c1d..5745136decf2f5 100644 --- a/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs +++ b/Content.Shared/SS220/DarkReaper/DarkReaperComponent.cs @@ -116,7 +116,7 @@ public sealed partial class DarkReaperComponent : Component /// [DataField] public float StunAbilityConfusion = 12f; - /// + /// /// ConfusionDuration - duration of the confusion effect /// [DataField]