diff --git a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.cs b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.cs index 389fb9b075..07f0d0c63f 100644 --- a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.cs +++ b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.cs @@ -91,6 +91,7 @@ public partial class CP14SharedMagicSystem : EntitySystem BreakOnDamage = delayedEffect.BreakOnDamage, Hidden = delayedEffect.Hidden, BlockDuplicate = true, + DistanceThreshold = 100f, }; _doAfter.TryStartDoAfter(doAfterEventArgs); @@ -129,6 +130,7 @@ public partial class CP14SharedMagicSystem : EntitySystem BreakOnDamage = delayedEffect.BreakOnDamage, Hidden = delayedEffect.Hidden, BlockDuplicate = true, + DistanceThreshold = 100f, }; _doAfter.TryStartDoAfter(doAfterEventArgs); @@ -162,6 +164,7 @@ public partial class CP14SharedMagicSystem : EntitySystem BreakOnDamage = delayedEffect.BreakOnDamage, Hidden = delayedEffect.Hidden, BlockDuplicate = true, + DistanceThreshold = 100f, }; _doAfter.TryStartDoAfter(doAfterEventArgs); diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14ThrowToUser.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14ThrowToUser.cs new file mode 100644 index 0000000000..a5dec1a82c --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14ThrowToUser.cs @@ -0,0 +1,23 @@ +using Content.Shared.Throwing; + +namespace Content.Shared._CP14.MagicSpell.Spells; + +public sealed partial class CP14SpellThrowToUser : CP14SpellEffect +{ + [DataField] + public float ThrowPower = 10f; + public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args) + { + if (args.Target is null) + return; + + var targetEntity = args.Target.Value; + + var throwing = entManager.System(); + + if (!entManager.TryGetComponent(args.User, out var xform)) + return; + + throwing.TryThrow(targetEntity, xform.Coordinates, ThrowPower); + } +} diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/shadow_grab.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/shadow_grab.yml new file mode 100644 index 0000000000..4b61f5b817 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/shadow_grab.yml @@ -0,0 +1,48 @@ +- type: entity + id: CP14ActionSpellShadowGrab + name: Shadow grab + description: You attract a ghostly hand that draws an object or entity to you + components: + - type: CP14MagicEffect + manaCost: 10 + telegraphyEffects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectShadowStep + - !type:CP14SpellSpawnEntityOnUser + spawns: + - CP14ImpactEffectShadowGrab + effects: + - !type:CP14SpellApplyEntityEffect + effects: + - !type:Paralyze + paralyzeTime: 0.5 + - !type:CP14SpellThrowToUser + throwPower: 10 + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectShadowStep + - type: CP14MagicEffectSomaticAspect + - type: EntityTargetAction + canTargetSelf: false + checkCanAccess: false + range: 10 + useDelay: 10 + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: shadow_grab + event: !type:CP14DelayedEntityTargetActionEvent + delay: 2 + +- type: entity + id: CP14ImpactEffectShadowGrab + parent: CP14BaseMagicImpact + categories: [ HideSpawnMenu ] + components: + - type: Sprite + layers: + - state: particles_up + color: "#5e427e" \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml index 72c30a3015..9a73411b47 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml @@ -75,10 +75,28 @@ - type: Sprite layers: - state: brass_ring - - state: emerald_stone_small + - state: amethyst_stone_small - type: CP14SpellStorageRequireAttune - type: CP14MagicAttuningItem - type: CP14SpellStorageAccessWearing - type: CP14SpellStorage spells: - - CP14ActionSpellShadowStep \ No newline at end of file + - CP14ActionSpellShadowStep + +- type: entity + id: CP14ClothingRingShadowGrab + parent: CP14ClothingRingBase + name: conductive ring + description: A standard mana-conductive ring that allows the user to summon grabbing shadow hand. + suffix: Shadow grab + components: + - type: Sprite + layers: + - state: brass_ring + - state: amethyst_stone_small + - type: CP14SpellStorageRequireAttune + - type: CP14MagicAttuningItem + - type: CP14SpellStorageAccessWearing + - type: CP14SpellStorage + spells: + - CP14ActionSpellShadowGrab \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Effects/visual_effect.yml b/Resources/Prototypes/_CP14/Entities/Effects/visual_effect.yml index 2cda9c5fa7..a97d6c75c5 100644 --- a/Resources/Prototypes/_CP14/Entities/Effects/visual_effect.yml +++ b/Resources/Prototypes/_CP14/Entities/Effects/visual_effect.yml @@ -34,13 +34,6 @@ shader: unshaded - type: Physics canCollide: false - - type: PointLight - enabled: true - color: "#4080FF" - radius: 3.5 - softness: 1 - autoRot: true - castShadows: false - type: Beam - type: TimedDespawn lifetime: 3 diff --git a/Resources/Textures/_CP14/Clothing/Rings/rings.rsi/amethyst_stone_small.png b/Resources/Textures/_CP14/Clothing/Rings/rings.rsi/amethyst_stone_small.png new file mode 100644 index 0000000000..b483af555a Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Rings/rings.rsi/amethyst_stone_small.png differ diff --git a/Resources/Textures/_CP14/Clothing/Rings/rings.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Rings/rings.rsi/meta.json index 2efb30732a..194224f1b3 100644 --- a/Resources/Textures/_CP14/Clothing/Rings/rings.rsi/meta.json +++ b/Resources/Textures/_CP14/Clothing/Rings/rings.rsi/meta.json @@ -18,6 +18,9 @@ }, { "name": "emerald_stone_small" + }, + { + "name": "amethyst_stone_small" } ] } diff --git a/Resources/Textures/_CP14/Effects/Beams/magic.rsi/impact_magic.png b/Resources/Textures/_CP14/Effects/Beams/magic.rsi/impact_magic.png index bb2219adcf..468ee9dfdc 100644 Binary files a/Resources/Textures/_CP14/Effects/Beams/magic.rsi/impact_magic.png and b/Resources/Textures/_CP14/Effects/Beams/magic.rsi/impact_magic.png differ diff --git a/Resources/Textures/_CP14/Effects/Beams/magic.rsi/magic.png b/Resources/Textures/_CP14/Effects/Beams/magic.rsi/magic.png index 00a71aa27b..167a18e5b2 100644 Binary files a/Resources/Textures/_CP14/Effects/Beams/magic.rsi/magic.png and b/Resources/Textures/_CP14/Effects/Beams/magic.rsi/magic.png differ diff --git a/Resources/Textures/_CP14/Effects/Beams/magic.rsi/magic1.png b/Resources/Textures/_CP14/Effects/Beams/magic.rsi/magic1.png index 34602e2f77..beec900fd7 100644 Binary files a/Resources/Textures/_CP14/Effects/Beams/magic.rsi/magic1.png and b/Resources/Textures/_CP14/Effects/Beams/magic.rsi/magic1.png differ diff --git a/Resources/Textures/_CP14/Effects/Beams/magic.rsi/muzzle_magic.png b/Resources/Textures/_CP14/Effects/Beams/magic.rsi/muzzle_magic.png index 280836ca16..2b215e4898 100644 Binary files a/Resources/Textures/_CP14/Effects/Beams/magic.rsi/muzzle_magic.png and b/Resources/Textures/_CP14/Effects/Beams/magic.rsi/muzzle_magic.png differ diff --git a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/meta.json b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/meta.json index 07bc47f918..427e8a028a 100644 --- a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/meta.json +++ b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/meta.json @@ -18,6 +18,9 @@ }, { "name": "shadow_step" + }, + { + "name": "shadow_grab" } ] } \ No newline at end of file diff --git a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/shadow_grab.png b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/shadow_grab.png new file mode 100644 index 0000000000..bb080f8bd9 Binary files /dev/null and b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/shadow_grab.png differ