finish shadow step

This commit is contained in:
Ed
2024-08-02 20:27:08 +03:00
parent 7c251d3226
commit 7362aedfeb
13 changed files with 101 additions and 21 deletions

View File

@@ -89,6 +89,7 @@ public partial class CP14SharedMagicSystem : EntitySystem
{
BreakOnMove = delayedEffect.BreakOnMove,
BreakOnDamage = delayedEffect.BreakOnDamage,
Hidden = delayedEffect.Hidden,
BlockDuplicate = true,
};
@@ -126,6 +127,7 @@ public partial class CP14SharedMagicSystem : EntitySystem
{
BreakOnMove = delayedEffect.BreakOnMove,
BreakOnDamage = delayedEffect.BreakOnDamage,
Hidden = delayedEffect.Hidden,
BlockDuplicate = true,
};
@@ -158,6 +160,7 @@ public partial class CP14SharedMagicSystem : EntitySystem
{
BreakOnMove = delayedEffect.BreakOnMove,
BreakOnDamage = delayedEffect.BreakOnDamage,
Hidden = delayedEffect.Hidden,
BlockDuplicate = true,
};

View File

@@ -16,6 +16,9 @@ public sealed partial class CP14DelayedWorldTargetActionEvent : WorldTargetActio
[DataField]
public bool BreakOnDamage { get; private set; } = true;
[DataField]
public bool Hidden { get; private set; } = false;
}
[Serializable, NetSerializable]
@@ -38,6 +41,9 @@ public sealed partial class CP14DelayedEntityTargetActionEvent : EntityTargetAct
[DataField]
public bool BreakOnDamage { get; private set; } = true;
[DataField]
public bool Hidden { get; private set; } = false;
}
[Serializable, NetSerializable]
@@ -56,6 +62,9 @@ public sealed partial class CP14DelayedInstantActionEvent : InstantActionEvent,
[DataField]
public bool BreakOnDamage { get; private set; } = true;
[DataField]
public bool Hidden { get; private set; } = false;
}
[Serializable, NetSerializable]

View File

@@ -10,4 +10,6 @@ public interface ICP14DelayedMagicEffect // The speak n spell interface
public bool BreakOnMove { get; }
public bool BreakOnDamage { get; }
public bool Hidden{ get; }
}

View File

@@ -1,3 +1,5 @@
using Content.Shared.Examine;
using Content.Shared.Popups;
using Robust.Shared.Map;
using Robust.Shared.Prototypes;
@@ -5,6 +7,9 @@ namespace Content.Shared._CP14.MagicSpell.Spells;
public sealed partial class CP14SpellCasterTeleport : CP14SpellEffect
{
[DataField]
public bool NeedVision = true;
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
{
EntityCoordinates? targetPoint = null;
@@ -17,6 +22,15 @@ public sealed partial class CP14SpellCasterTeleport : CP14SpellEffect
return;
var transform = entManager.System<SharedTransformSystem>();
var examine = entManager.System<ExamineSystemShared>();
var popup = entManager.System<SharedPopupSystem>();
if (NeedVision && !examine.InRangeUnOccluded(args.User.Value, targetPoint.Value))
{
// can only dash if the destination is visible on screen
popup.PopupEntity(Loc.GetString("dash-ability-cant-see"), args.User.Value, args.User.Value);
return;
}
transform.SetCoordinates(args.User.Value, targetPoint.Value);
}

View File

@@ -3,7 +3,7 @@ using Robust.Shared.Prototypes;
namespace Content.Shared._CP14.MagicSpell.Spells;
public sealed partial class CP14SpellSpawnEntity : CP14SpellEffect
public sealed partial class CP14SpellSpawnEntityOnTarget : CP14SpellEffect
{
[DataField]
public List<EntProtoId> Spawns = new();

View File

@@ -0,0 +1,21 @@
using Robust.Shared.Map;
using Robust.Shared.Prototypes;
namespace Content.Shared._CP14.MagicSpell.Spells;
public sealed partial class CP14SpellSpawnEntityOnUser : CP14SpellEffect
{
[DataField]
public List<EntProtoId> Spawns = new();
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
{
if (args.User is null || !entManager.TryGetComponent<TransformComponent>(args.User.Value, out var transformComponent))
return;
foreach (var spawn in Spawns)
{
entManager.SpawnAtPosition(spawn, transformComponent.Coordinates);
}
}
}

View File

@@ -6,11 +6,11 @@
- type: CP14MagicEffect
manaCost: 15
telegraphyEffects:
- !type:CP14SpellSpawnEntity
- !type:CP14SpellSpawnEntityOnTarget
spawns:
- CP14ImpactEffectCureWounds
effects:
- !type:CP14SpellSpawnEntity
- !type:CP14SpellSpawnEntityOnTarget
spawns:
- CP14ImpactEffectCureWounds
- !type:CP14SpellApplyEntityEffect

View File

@@ -6,7 +6,7 @@
- type: CP14MagicEffect
manaCost: 5
effects:
- !type:CP14SpellSpawnEntity
- !type:CP14SpellSpawnEntityOnTarget
spawns:
- CP14ImpactEffectFlameCreation
- !type:CP14SpellSpawnInHandEntity

View File

@@ -6,7 +6,7 @@
- type: CP14MagicEffect
manaCost: 15
effects:
- !type:CP14SpellSpawnEntity
- !type:CP14SpellSpawnEntityOnTarget
spawns:
- CP14ImpactEffectIceDagger
- !type:CP14SpellSpawnInHandEntity

View File

@@ -1,26 +1,24 @@
- type: entity
id: CP14ActionSpellShadowStep
name: Shadow step
description: A step through the gash of reality that allows you to cover a lot of distance quickly
description: A step through the gash of reality that allows you to cover a small of distance quickly
components:
- type: CP14MagicEffect
manaCost: 40
manaCost: 20
telegraphyEffects:
- !type:CP14SpellSpawnEntity
- !type:CP14SpellSpawnEntityOnTarget
spawns:
- CP14ImpactEffectShadowStep
- !type:CP14SpellSpawnEntityOnUser
spawns:
- CP14ImpactEffectShadowStep
effects:
- !type:CP14SpellSpawnEntity
spawns:
- CP14ImpactEffectShadowStep
- !type:CP14SpellCasterTeleport
- type: CP14MagicEffectVerbalAspect
startSpeech: "Tenebrae, accipe me..."
endSpeech: "in alium locum"
- type: CP14MagicEffectSomaticAspect
- type: WorldTargetAction
useDelay: 15
range: 10
checkCanAccess: false
useDelay: 10
range: 7
checkCanAccess: true
itemIconStyle: BigAction
sound: !type:SoundPathSpecifier
path: /Audio/Magic/rumble.ogg
@@ -29,6 +27,7 @@
state: shadow_step
event: !type:CP14DelayedWorldTargetActionEvent
delay: 1
hidden: true
- type: entity
id: CP14ImpactEffectShadowStep
@@ -37,6 +36,5 @@
components:
- type: Sprite
layers:
- state: particles_up
color: "#79b330"
shader: unshaded
- state: wave_up
color: "#5e427e"

View File

@@ -63,4 +63,22 @@
- type: CP14SpellStorageAccessWearing
- type: CP14SpellStorage
spells:
- CP14ActionSpellCureWounds
- CP14ActionSpellCureWounds
- type: entity
id: CP14ClothingRingShadowStep
parent: CP14ClothingRingBase
name: conductive ring
description: A standard mana-conductive ring that allows the user to step throught shadows.
suffix: Shadow step
components:
- type: Sprite
layers:
- state: brass_ring
- state: emerald_stone_small
- type: CP14SpellStorageRequireAttune
- type: CP14MagicAttuningItem
- type: CP14SpellStorageAccessWearing
- type: CP14SpellStorage
spells:
- CP14ActionSpellShadowStep

View File

@@ -21,6 +21,21 @@
0.2
]
]
},
{
"name": "wave_up",
"delays": [
[
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2
]
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB