OP Ballades (#1372)
This commit is contained in:
64
Content.Shared/_CP14/MagicSpell/Spells/CP14SpellArea.cs
Normal file
64
Content.Shared/_CP14/MagicSpell/Spells/CP14SpellArea.cs
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
using Content.Shared.Whitelist;
|
||||||
|
using Robust.Shared.Map;
|
||||||
|
|
||||||
|
namespace Content.Shared._CP14.MagicSpell.Spells;
|
||||||
|
|
||||||
|
public sealed partial class CP14SpellArea : CP14SpellEffect
|
||||||
|
{
|
||||||
|
[DataField(required: true)]
|
||||||
|
public List<CP14SpellEffect> Effects { get; set; } = new();
|
||||||
|
|
||||||
|
[DataField]
|
||||||
|
public EntityWhitelist? Whitelist;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// How many entities can be subject to EntityEffect? Leave 0 to remove the restriction.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public int MaxTargets = 0;
|
||||||
|
|
||||||
|
[DataField(required: true)]
|
||||||
|
public float Range = 1f;
|
||||||
|
|
||||||
|
[DataField]
|
||||||
|
public bool AffectCaster = false;
|
||||||
|
|
||||||
|
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
|
||||||
|
{
|
||||||
|
EntityCoordinates? targetPoint = null;
|
||||||
|
|
||||||
|
if (args.Target is not null &&
|
||||||
|
entManager.TryGetComponent<TransformComponent>(args.Target.Value, out var transformComponent))
|
||||||
|
targetPoint = transformComponent.Coordinates;
|
||||||
|
else if (args.Position is not null)
|
||||||
|
targetPoint = args.Position;
|
||||||
|
|
||||||
|
if (targetPoint is null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var lookup = entManager.System<EntityLookupSystem>();
|
||||||
|
var whitelist = entManager.System<EntityWhitelistSystem>();
|
||||||
|
|
||||||
|
var entitiesAround = lookup.GetEntitiesInRange(targetPoint.Value, Range, LookupFlags.Uncontained);
|
||||||
|
|
||||||
|
var count = 0;
|
||||||
|
foreach (var entity in entitiesAround)
|
||||||
|
{
|
||||||
|
if (entity == args.User && !AffectCaster)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (Whitelist is not null && !whitelist.IsValid(Whitelist, entity))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
foreach (var effect in Effects)
|
||||||
|
{
|
||||||
|
effect.Effect(entManager, new CP14SpellEffectBaseArgs(args.User, null, entity, targetPoint));
|
||||||
|
}
|
||||||
|
|
||||||
|
count++;
|
||||||
|
|
||||||
|
if (MaxTargets > 0 && count >= MaxTargets)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,9 +13,24 @@
|
|||||||
- type: CP14MagicEffect
|
- type: CP14MagicEffect
|
||||||
magicType: Fire
|
magicType: Fire
|
||||||
effects:
|
effects:
|
||||||
- !type:CP14SpellSpawnEntityOnTarget
|
- !type:CP14SpellArea
|
||||||
spawns:
|
range: 3
|
||||||
- CP14AreaEntityEffectHellBallade
|
maxTargets: 4
|
||||||
|
whitelist:
|
||||||
|
components:
|
||||||
|
- MobState
|
||||||
|
effects:
|
||||||
|
- !type:CP14SpellSpawnEntityOnTarget
|
||||||
|
spawns:
|
||||||
|
- CP14ImpactEffectHellBallade
|
||||||
|
- !type:CP14SpellApplyEntityEffect
|
||||||
|
effects:
|
||||||
|
- !type:Jitter
|
||||||
|
- !type:FlammableReaction
|
||||||
|
multiplier: 0.5
|
||||||
|
- !type:AdjustTemperature
|
||||||
|
amount: 500
|
||||||
|
- !type:Ignite
|
||||||
- type: CP14MagicEffectRequiredMusicTool
|
- type: CP14MagicEffectRequiredMusicTool
|
||||||
- type: CP14MagicEffectCastingVisual
|
- type: CP14MagicEffectCastingVisual
|
||||||
proto: CP14RuneHellBallade
|
proto: CP14RuneHellBallade
|
||||||
@@ -32,32 +47,6 @@
|
|||||||
castTime: 120
|
castTime: 120
|
||||||
hidden: true
|
hidden: true
|
||||||
|
|
||||||
- type: entity
|
|
||||||
id: CP14AreaEntityEffectHellBallade
|
|
||||||
categories: [ HideSpawnMenu ]
|
|
||||||
save: false
|
|
||||||
components:
|
|
||||||
- type: TimedDespawn
|
|
||||||
lifetime: 1.6
|
|
||||||
- type: CP14AreaEntityEffect
|
|
||||||
range: 3
|
|
||||||
maxTargets: 4
|
|
||||||
whitelist:
|
|
||||||
components:
|
|
||||||
- MobState
|
|
||||||
effects:
|
|
||||||
- !type:CP14SpellSpawnEntityOnTarget
|
|
||||||
spawns:
|
|
||||||
- CP14ImpactEffectHellBallade
|
|
||||||
- !type:CP14SpellApplyEntityEffect
|
|
||||||
effects:
|
|
||||||
- !type:Jitter
|
|
||||||
- !type:FlammableReaction
|
|
||||||
multiplier: 0.5
|
|
||||||
- !type:AdjustTemperature
|
|
||||||
amount: 500
|
|
||||||
- !type:Ignite
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: CP14ImpactEffectHellBallade
|
id: CP14ImpactEffectHellBallade
|
||||||
parent: CP14BaseMagicImpact
|
parent: CP14BaseMagicImpact
|
||||||
@@ -85,4 +74,3 @@
|
|||||||
- state: notes_3
|
- state: notes_3
|
||||||
color: "#eea911"
|
color: "#eea911"
|
||||||
shader: unshaded
|
shader: unshaded
|
||||||
|
|
||||||
|
|||||||
@@ -13,9 +13,30 @@
|
|||||||
- type: CP14MagicEffect
|
- type: CP14MagicEffect
|
||||||
magicType: Life
|
magicType: Life
|
||||||
effects:
|
effects:
|
||||||
- !type:CP14SpellSpawnEntityOnTarget
|
- !type:CP14SpellArea
|
||||||
spawns:
|
range: 3
|
||||||
- CP14AreaEntityEffectHealBallade
|
maxTargets: 4
|
||||||
|
whitelist:
|
||||||
|
components:
|
||||||
|
- MobState
|
||||||
|
effects:
|
||||||
|
- !type:CP14SpellSpawnEntityOnTarget
|
||||||
|
spawns:
|
||||||
|
- CP14ImpactEffectHealthBallade
|
||||||
|
- !type:CP14SpellApplyEntityEffect
|
||||||
|
effects:
|
||||||
|
- !type:HealthChange
|
||||||
|
damage:
|
||||||
|
types:
|
||||||
|
Slash: -0.70
|
||||||
|
Blunt: -0.70
|
||||||
|
Piercing: -0.70
|
||||||
|
Cold: -0.40
|
||||||
|
Heat: -0.40
|
||||||
|
Shock: -0.40
|
||||||
|
Poison: -0.25
|
||||||
|
Bloodloss: -0.40
|
||||||
|
Caustic: -0.30
|
||||||
- type: CP14MagicEffectRequiredMusicTool
|
- type: CP14MagicEffectRequiredMusicTool
|
||||||
- type: CP14MagicEffectCastingVisual
|
- type: CP14MagicEffectCastingVisual
|
||||||
proto: CP14RuneHealBallade
|
proto: CP14RuneHealBallade
|
||||||
@@ -32,38 +53,6 @@
|
|||||||
castTime: 120
|
castTime: 120
|
||||||
hidden: true
|
hidden: true
|
||||||
|
|
||||||
- type: entity
|
|
||||||
id: CP14AreaEntityEffectHealBallade
|
|
||||||
categories: [ HideSpawnMenu ]
|
|
||||||
save: false
|
|
||||||
components:
|
|
||||||
- type: TimedDespawn
|
|
||||||
lifetime: 1.6
|
|
||||||
- type: CP14AreaEntityEffect
|
|
||||||
range: 3
|
|
||||||
maxTargets: 4
|
|
||||||
whitelist:
|
|
||||||
components:
|
|
||||||
- MobState
|
|
||||||
effects:
|
|
||||||
- !type:CP14SpellSpawnEntityOnTarget
|
|
||||||
spawns:
|
|
||||||
- CP14ImpactEffectHealthBallade
|
|
||||||
- !type:CP14SpellApplyEntityEffect
|
|
||||||
effects:
|
|
||||||
- !type:HealthChange
|
|
||||||
damage:
|
|
||||||
types:
|
|
||||||
Slash: -0.70
|
|
||||||
Blunt: -0.70
|
|
||||||
Piercing: -0.70
|
|
||||||
Cold: -0.40
|
|
||||||
Heat: -0.40
|
|
||||||
Shock: -0.40
|
|
||||||
Poison: -0.25
|
|
||||||
Bloodloss: -0.40
|
|
||||||
Caustic: -0.30
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: CP14ImpactEffectHealthBallade
|
id: CP14ImpactEffectHealthBallade
|
||||||
parent: CP14BaseMagicImpact
|
parent: CP14BaseMagicImpact
|
||||||
|
|||||||
@@ -13,9 +13,23 @@
|
|||||||
- type: CP14MagicEffect
|
- type: CP14MagicEffect
|
||||||
magicType: Life
|
magicType: Life
|
||||||
effects:
|
effects:
|
||||||
- !type:CP14SpellSpawnEntityOnTarget
|
- !type:CP14SpellArea
|
||||||
spawns:
|
range: 4
|
||||||
- CP14AreaEntityEffectPeaceBallade
|
maxTargets: 8
|
||||||
|
whitelist:
|
||||||
|
components:
|
||||||
|
- MobState
|
||||||
|
effects:
|
||||||
|
- !type:CP14SpellSpawnEntityOnTarget
|
||||||
|
spawns:
|
||||||
|
- CP14ImpactEffectPeaceBallade
|
||||||
|
- !type:CP14SpellApplyEntityEffect
|
||||||
|
effects:
|
||||||
|
- !type:GenericStatusEffect
|
||||||
|
key: Pacified
|
||||||
|
component: Pacified
|
||||||
|
type: Add
|
||||||
|
time: 1.8
|
||||||
- type: CP14MagicEffectRequiredMusicTool
|
- type: CP14MagicEffectRequiredMusicTool
|
||||||
- type: CP14MagicEffectCastingVisual
|
- type: CP14MagicEffectCastingVisual
|
||||||
proto: CP14RunePeaceBallade
|
proto: CP14RunePeaceBallade
|
||||||
@@ -32,31 +46,6 @@
|
|||||||
castTime: 120
|
castTime: 120
|
||||||
hidden: true
|
hidden: true
|
||||||
|
|
||||||
- type: entity
|
|
||||||
id: CP14AreaEntityEffectPeaceBallade
|
|
||||||
categories: [ HideSpawnMenu ]
|
|
||||||
save: false
|
|
||||||
components:
|
|
||||||
- type: TimedDespawn
|
|
||||||
lifetime: 1.6
|
|
||||||
- type: CP14AreaEntityEffect
|
|
||||||
range: 5
|
|
||||||
maxTargets: 8
|
|
||||||
whitelist:
|
|
||||||
components:
|
|
||||||
- MobState
|
|
||||||
effects:
|
|
||||||
- !type:CP14SpellSpawnEntityOnTarget
|
|
||||||
spawns:
|
|
||||||
- CP14ImpactEffectPeaceBallade
|
|
||||||
- !type:CP14SpellApplyEntityEffect
|
|
||||||
effects:
|
|
||||||
- !type:GenericStatusEffect
|
|
||||||
key: Pacified
|
|
||||||
component: Pacified
|
|
||||||
type: Add
|
|
||||||
time: 1.8
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: CP14ImpactEffectPeaceBallade
|
id: CP14ImpactEffectPeaceBallade
|
||||||
parent: CP14BaseMagicImpact
|
parent: CP14BaseMagicImpact
|
||||||
|
|||||||
@@ -13,9 +13,23 @@
|
|||||||
- type: CP14MagicEffect
|
- type: CP14MagicEffect
|
||||||
magicType: Life
|
magicType: Life
|
||||||
effects:
|
effects:
|
||||||
- !type:CP14SpellSpawnEntityOnTarget
|
- !type:CP14SpellArea
|
||||||
spawns:
|
affectCaster: true
|
||||||
- CP14AreaEntityEffectSpeedBallade
|
range: 5
|
||||||
|
maxTargets: 4
|
||||||
|
whitelist:
|
||||||
|
components:
|
||||||
|
- MobState
|
||||||
|
effects:
|
||||||
|
- !type:CP14SpellSpawnEntityOnTarget
|
||||||
|
spawns:
|
||||||
|
- CP14ImpactEffectSpeedBallade
|
||||||
|
- !type:CP14SpellApplyEntityEffect
|
||||||
|
effects:
|
||||||
|
- !type:MovespeedModifier
|
||||||
|
walkSpeedModifier: 1.2
|
||||||
|
sprintSpeedModifier: 1.2
|
||||||
|
statusLifetime: 1.8
|
||||||
- type: CP14MagicEffectRequiredMusicTool
|
- type: CP14MagicEffectRequiredMusicTool
|
||||||
- type: CP14MagicEffectCastingVisual
|
- type: CP14MagicEffectCastingVisual
|
||||||
proto: CP14RuneSpeedBallade
|
proto: CP14RuneSpeedBallade
|
||||||
@@ -32,30 +46,6 @@
|
|||||||
castTime: 120
|
castTime: 120
|
||||||
hidden: true
|
hidden: true
|
||||||
|
|
||||||
- type: entity
|
|
||||||
id: CP14AreaEntityEffectSpeedBallade
|
|
||||||
categories: [ HideSpawnMenu ]
|
|
||||||
save: false
|
|
||||||
components:
|
|
||||||
- type: TimedDespawn
|
|
||||||
lifetime: 1.6
|
|
||||||
- type: CP14AreaEntityEffect
|
|
||||||
range: 3
|
|
||||||
maxTargets: 4
|
|
||||||
whitelist:
|
|
||||||
components:
|
|
||||||
- MobState
|
|
||||||
effects:
|
|
||||||
- !type:CP14SpellSpawnEntityOnTarget
|
|
||||||
spawns:
|
|
||||||
- CP14ImpactEffectSpeedBallade
|
|
||||||
- !type:CP14SpellApplyEntityEffect
|
|
||||||
effects:
|
|
||||||
- !type:MovespeedModifier
|
|
||||||
walkSpeedModifier: 1.15
|
|
||||||
sprintSpeedModifier: 1.15
|
|
||||||
statusLifetime: 1.8
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: CP14ImpactEffectSpeedBallade
|
id: CP14ImpactEffectSpeedBallade
|
||||||
parent: CP14BaseMagicImpact
|
parent: CP14BaseMagicImpact
|
||||||
|
|||||||
@@ -13,9 +13,22 @@
|
|||||||
canModifyManacost: false
|
canModifyManacost: false
|
||||||
- type: CP14MagicEffect
|
- type: CP14MagicEffect
|
||||||
effects:
|
effects:
|
||||||
- !type:CP14SpellSpawnEntityOnTarget
|
- !type:CP14SpellArea
|
||||||
spawns:
|
range: 5
|
||||||
- CP14AreaEntityEffectMagicBallade
|
maxTargets: 5
|
||||||
|
whitelist:
|
||||||
|
components:
|
||||||
|
- CP14MagicEnergyContainer
|
||||||
|
- CP14MagicEnergyCrystalSlot
|
||||||
|
effects:
|
||||||
|
- !type:CP14SpellSpawnEntityOnTarget
|
||||||
|
spawns:
|
||||||
|
- CP14ImpactEffectMagicBallade
|
||||||
|
- !type:CP14SpellApplyEntityEffect
|
||||||
|
effects:
|
||||||
|
- !type:CP14ManaChange
|
||||||
|
manaDelta: 1.2
|
||||||
|
safe: true
|
||||||
- type: CP14MagicEffectRequiredMusicTool
|
- type: CP14MagicEffectRequiredMusicTool
|
||||||
- type: CP14MagicEffectCastingVisual
|
- type: CP14MagicEffectCastingVisual
|
||||||
proto: CP14RuneMagicBallade
|
proto: CP14RuneMagicBallade
|
||||||
@@ -32,30 +45,6 @@
|
|||||||
castTime: 120
|
castTime: 120
|
||||||
hidden: true
|
hidden: true
|
||||||
|
|
||||||
- type: entity
|
|
||||||
id: CP14AreaEntityEffectMagicBallade
|
|
||||||
categories: [ HideSpawnMenu ]
|
|
||||||
save: false
|
|
||||||
components:
|
|
||||||
- type: TimedDespawn
|
|
||||||
lifetime: 1.6
|
|
||||||
- type: CP14AreaEntityEffect
|
|
||||||
range: 5
|
|
||||||
maxTargets: 5
|
|
||||||
whitelist:
|
|
||||||
components:
|
|
||||||
- CP14MagicEnergyContainer
|
|
||||||
- CP14MagicEnergyCrystalSlot
|
|
||||||
effects:
|
|
||||||
- !type:CP14SpellSpawnEntityOnTarget
|
|
||||||
spawns:
|
|
||||||
- CP14ImpactEffectMagicBallade
|
|
||||||
- !type:CP14SpellApplyEntityEffect
|
|
||||||
effects:
|
|
||||||
- !type:CP14ManaChange
|
|
||||||
manaDelta: 1.2
|
|
||||||
safe: true
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: CP14ImpactEffectMagicBallade
|
id: CP14ImpactEffectMagicBallade
|
||||||
parent: CP14BaseMagicImpact
|
parent: CP14BaseMagicImpact
|
||||||
|
|||||||
Reference in New Issue
Block a user