diff --git a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.DelayedActions.cs b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.DelayedActions.cs index fc78bd9250..d507f2f51f 100644 --- a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.DelayedActions.cs +++ b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.DelayedActions.cs @@ -19,19 +19,19 @@ public abstract partial class CP14SharedMagicSystem SubscribeLocalEvent(OnDelayedEntityTargetDoAfter); } - private bool TryStartDelayedAction(ICP14DelayedMagicEffect delayedEffect, DoAfterEvent doAfter, Entity action, EntityUid performer) + private bool TryStartDelayedAction(ICP14DelayedMagicEffect delayedEffect, DoAfterEvent doAfter, Entity action, EntityUid? target, EntityUid performer) { if (_doAfter.IsRunning(action.Comp.ActiveDoAfter)) return false; var fromItem = action.Comp.SpellStorage is not null; - var doAfterEventArgs = new DoAfterArgs(EntityManager, performer, MathF.Max(delayedEffect.CastDelay, 0.3f), doAfter, action, used: action.Comp.SpellStorage) + var doAfterEventArgs = new DoAfterArgs(EntityManager, performer, MathF.Max(delayedEffect.CastDelay, 0.3f), doAfter, action, used: action.Comp.SpellStorage, target: target) { BreakOnMove = delayedEffect.BreakOnMove, BreakOnDamage = delayedEffect.BreakOnDamage, Hidden = delayedEffect.Hidden, - DistanceThreshold = 100f, + DistanceThreshold = delayedEffect.DistanceThreshold, CancelDuplicate = true, BlockDuplicate = true, BreakOnDropItem = fromItem, @@ -65,7 +65,7 @@ public abstract partial class CP14SharedMagicSystem _doAfter.Cancel(action.Comp.ActiveDoAfter); else { - if (TryStartDelayedAction(delayedEffect, doAfter, action, performer)) + if (TryStartDelayedAction(delayedEffect, doAfter, action, target, performer)) { var evStart = new CP14StartCastMagicEffectEvent(performer); RaiseLocalEvent(action, ref evStart); diff --git a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.ToggleableActions.cs b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.ToggleableActions.cs index a5353cc473..55a0f6e20f 100644 --- a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.ToggleableActions.cs +++ b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.ToggleableActions.cs @@ -72,12 +72,12 @@ public abstract partial class CP14SharedMagicSystem var fromItem = action.Comp.SpellStorage is not null; - var doAfterEventArgs = new DoAfterArgs(EntityManager, performer, toggleable.CastTime, doAfter, action, used: action.Comp.SpellStorage) + var doAfterEventArgs = new DoAfterArgs(EntityManager, performer, toggleable.CastTime, doAfter, action, used: action.Comp.SpellStorage, target: entityTarget) { BreakOnMove = toggleable.BreakOnMove, BreakOnDamage = toggleable.BreakOnDamage, Hidden = toggleable.Hidden, - DistanceThreshold = 100f, + DistanceThreshold = toggleable.DistanceThreshold, CancelDuplicate = true, BlockDuplicate = true, BreakOnDropItem = fromItem, diff --git a/Content.Shared/_CP14/MagicSpell/Events/CP14DelayedActionEvents.cs b/Content.Shared/_CP14/MagicSpell/Events/CP14DelayedActionEvents.cs index e1a8590eaf..496d572a3e 100644 --- a/Content.Shared/_CP14/MagicSpell/Events/CP14DelayedActionEvents.cs +++ b/Content.Shared/_CP14/MagicSpell/Events/CP14DelayedActionEvents.cs @@ -15,9 +15,9 @@ public interface ICP14DelayedMagicEffect public bool BreakOnDamage { get; } - public bool Hidden{ get; } + public float DistanceThreshold { get; } - public float EntityDistance { get; } + public bool Hidden{ get; } } public sealed partial class CP14DelayedEntityWorldTargetActionEvent : EntityWorldTargetActionEvent, @@ -36,10 +36,10 @@ public sealed partial class CP14DelayedEntityWorldTargetActionEvent : EntityWorl public bool BreakOnDamage { get; private set; } = true; [DataField] - public bool Hidden { get; private set; } = false; + public float DistanceThreshold { get; private set; } = 100f; [DataField] - public float EntityDistance { get; private set; } = 100f; + public bool Hidden { get; private set; } = false; } //Entity Target @@ -59,10 +59,10 @@ public sealed partial class CP14DelayedEntityTargetActionEvent : EntityTargetAct public bool BreakOnDamage { get; private set; } = true; [DataField] - public bool Hidden { get; private set; } = false; + public float DistanceThreshold { get; private set; } = 100f; [DataField] - public float EntityDistance { get; private set; } = 100f; + public bool Hidden { get; private set; } = false; } public sealed partial class CP14DelayedInstantActionEvent : InstantActionEvent, ICP14DelayedMagicEffect @@ -80,10 +80,10 @@ public sealed partial class CP14DelayedInstantActionEvent : InstantActionEvent, public bool BreakOnDamage { get; private set; } = true; [DataField] - public bool Hidden { get; private set; } = false; + public float DistanceThreshold { get; private set; } = 100f; [DataField] - public float EntityDistance { get; private set; } = 100f; + public bool Hidden { get; private set; } = false; } [Serializable, NetSerializable] diff --git a/Content.Shared/_CP14/MagicSpell/Events/CP14ToggleableActionEvents.cs b/Content.Shared/_CP14/MagicSpell/Events/CP14ToggleableActionEvents.cs index 1d3db4b69d..2105e6f6f4 100644 --- a/Content.Shared/_CP14/MagicSpell/Events/CP14ToggleableActionEvents.cs +++ b/Content.Shared/_CP14/MagicSpell/Events/CP14ToggleableActionEvents.cs @@ -17,9 +17,9 @@ public interface ICP14ToggleableMagicEffect public bool BreakOnDamage { get; } - public bool Hidden{ get; } + public float DistanceThreshold { get; } - public float EntityDistance { get; } + public bool Hidden{ get; } } public sealed partial class CP14ToggleableInstantActionEvent : InstantActionEvent, ICP14ToggleableMagicEffect @@ -40,10 +40,10 @@ public sealed partial class CP14ToggleableInstantActionEvent : InstantActionEven public bool BreakOnDamage { get; private set; } = true; [DataField] - public bool Hidden { get; private set; } = false; + public float DistanceThreshold { get; private set; } = 100f; [DataField] - public float EntityDistance { get; private set; } = 100f; + public bool Hidden { get; private set; } = false; } public sealed partial class CP14ToggleableEntityWorldTargetActionEvent : EntityWorldTargetActionEvent, ICP14ToggleableMagicEffect @@ -64,10 +64,10 @@ public sealed partial class CP14ToggleableEntityWorldTargetActionEvent : EntityW public bool BreakOnDamage { get; private set; } = true; [DataField] - public bool Hidden { get; private set; } = false; + public float DistanceThreshold { get; private set; } = 100f; [DataField] - public float EntityDistance { get; private set; } = 100f; + public bool Hidden { get; private set; } = false; } public sealed partial class CP14ToggleableEntityTargetActionEvent : EntityTargetActionEvent, ICP14ToggleableMagicEffect @@ -88,10 +88,10 @@ public sealed partial class CP14ToggleableEntityTargetActionEvent : EntityTarget public bool BreakOnDamage { get; private set; } = true; [DataField] - public bool Hidden { get; private set; } = false; + public float DistanceThreshold { get; private set; } = 100f; [DataField] - public float EntityDistance { get; private set; } = 100f; + public bool Hidden { get; private set; } = false; } [Serializable, NetSerializable] diff --git a/Resources/Locale/en-US/_CP14/magicSpells/speech.ftl b/Resources/Locale/en-US/_CP14/magicSpells/speech.ftl index 20c3db8510..86f8001477 100644 --- a/Resources/Locale/en-US/_CP14/magicSpells/speech.ftl +++ b/Resources/Locale/en-US/_CP14/magicSpells/speech.ftl @@ -1 +1,2 @@ +cp14-kick-emote-start = kicks in... cp14-kick-emote = makes a strong kick \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/magicSpells/speech.ftl b/Resources/Locale/ru-RU/_CP14/magicSpells/speech.ftl index 8b7586c54c..a2bcae931b 100644 --- a/Resources/Locale/ru-RU/_CP14/magicSpells/speech.ftl +++ b/Resources/Locale/ru-RU/_CP14/magicSpells/speech.ftl @@ -1 +1,2 @@ +cp14-kick-emote-start = заносит ногу... cp14-kick-emote = совершает сильный пинок \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T0_demiplane_infiltration.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T0_demiplane_infiltration.yml index d26139fa77..a6f800bde2 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T0_demiplane_infiltration.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T0_demiplane_infiltration.yml @@ -37,7 +37,7 @@ event: !type:CP14DelayedEntityTargetActionEvent cooldown: 50 castDelay: 5 - entityDistance: 3 + distanceThreshold: 3 breakOnMove: true - type: entity diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T1_shadow_grab.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T1_shadow_grab.yml index 4aab7668fb..c2e841ca3f 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T1_shadow_grab.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T1_shadow_grab.yml @@ -39,7 +39,6 @@ event: !type:CP14DelayedEntityTargetActionEvent cooldown: 5 castDelay: 0.5 - entityDistance: 1000 breakOnMove: false - type: entity diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/T1_fireball.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/T1_fireball.yml index 428647e6ba..e23d60f17d 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/T1_fireball.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/T1_fireball.yml @@ -38,7 +38,6 @@ cooldown: 15 castDelay: 5 breakOnMove: false - entityDistance: 1000 - type: entity id: CP14RuneFireball diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Physical/T0_Kick.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Physical/T0_Kick.yml index f1e0cb953d..7d3dd6df5f 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Physical/T0_Kick.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Physical/T0_Kick.yml @@ -20,23 +20,32 @@ throwPower: 9 - !type:CP14SpellSpawnEntityOnTarget spawns: - - CP14DustEffect + - CP14DustEffectKickSound - type: CP14MagicEffectVerbalAspect + startSpeech: cp14-kick-emote-start endSpeech: cp14-kick-emote emote: true - type: EntityTargetAction canTargetSelf: false range: 1 itemIconStyle: BigAction - sound: !type:SoundPathSpecifier - path: /Audio/Effects/hit_kick.ogg - params: - pitch: 2 icon: sprite: _CP14/Effects/Magic/spells_icons.rsi state: kick event: !type:CP14DelayedEntityTargetActionEvent cooldown: 5 - castDelay: 1 - entityDistance: 1 - breakOnMove: false \ No newline at end of file + castDelay: 0.5 + distanceThreshold: 1.5 + breakOnMove: false + breakOnDamage: false + +- type: entity + id: CP14DustEffectKickSound + parent: CP14DustEffect + categories: [ HideSpawnMenu ] + components: + - type: EmitSoundOnSpawn + sound: !type:SoundPathSpecifier + path: /Audio/Effects/hit_kick.ogg + params: + pitch: 1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_freeze.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_freeze.yml index 8e0106f654..b3a4ed96da 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_freeze.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_freeze.yml @@ -24,12 +24,13 @@ statusLifetime: 2 - !type:AdjustTemperature amount: -12000 + - !type:ExtinguishReaction - type: CP14MagicEffectVerbalAspect startSpeech: "Vos adepto frigus..." - type: CP14MagicEffectCastingVisual proto: CP14RunePlantFreeze - type: EntityTargetAction - range: 10 + range: 5 interactOnMiss: false itemIconStyle: BigAction sound: !type:SoundPathSpecifier @@ -40,6 +41,7 @@ event: !type:CP14ToggleableEntityTargetActionEvent cooldown: 15 castTime: 10 + distanceThreshold: 5 breakOnMove: false - type: entity diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_water_creation.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_water_creation.yml index 57e1b91600..7a33c8993f 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_water_creation.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_water_creation.yml @@ -117,6 +117,10 @@ solution: drop - type: MixableSolution solution: drop + #- type: SolutionTransfer + # canChangeTransferAmount: false + - type: SolutionItemStatus + solution: drop - type: CP14SolutionTemperature - type: Appearance - type: Sprite @@ -129,6 +133,13 @@ fillBaseName: liq- inHandsMaxFillLevels: 1 inHandsFillBaseName: -fill + - type: Injector + solutionName: drop + injectOnly: true + minTransferAmount: 10 + maxTransferAmount: 10 + transferAmount: 10 + toggleState: 0 - type: entity id: CP14ImpactEffectWaterCreation diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_ice_shards.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_ice_shards.yml index 7cad75fc59..6198fa6b6a 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_ice_shards.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_ice_shards.yml @@ -34,7 +34,6 @@ cooldown: 0.25 castDelay: 0.25 breakOnMove: false - entityDistance: 1000 - type: entity id: CP14RuneIceShards diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/ice_ghost.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/ice_ghost.yml index eb522cdf88..2044c6e7b6 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/ice_ghost.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/ice_ghost.yml @@ -89,5 +89,4 @@ cooldown: 0.5 castDelay: 0.2 breakOnMove: false - entityDistance: 1000 hidden: true \ No newline at end of file