Weather gameplay effects (#1089)

* pipa

* Weather effects

* Weather in demiplanes!

* demiplane enter roofs

* Demiplane ruins

* Update weather.yml

* Update paper.yml

* Update paper.yml
This commit is contained in:
Ed
2025-03-30 17:27:05 +03:00
committed by GitHub
parent abdd46c7d5
commit 011e90a5d1
28 changed files with 3406 additions and 685 deletions

View File

@@ -0,0 +1,33 @@
using Content.Server.Explosion.EntitySystems;
using Content.Shared._CP14.FarSound;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Player;
namespace Content.Server._CP14.FarSound;
public sealed class CP14FarSoundSystem : EntitySystem
{
[Dependency] private readonly SharedTransformSystem _transform = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<CP14FarSoundComponent, TriggerEvent>(OnTrigger);
}
private void OnTrigger(Entity<CP14FarSoundComponent> ent, ref TriggerEvent args)
{
var mapPos = _transform.GetMapCoordinates(ent);
var entPos = Transform(ent).Coordinates;
//Play close sound
_audio.PlayPvs(ent.Comp.CloseSound, entPos);
//Play far sound
var farFilter = Filter.Empty().AddInRange(mapPos, ent.Comp.FarRange);
_audio.PlayGlobal(ent.Comp.FarSound, farFilter, true);
}
}

View File

@@ -0,0 +1,93 @@
using System.Threading;
using System.Threading.Tasks;
using Content.Shared._CP14.WeatherEffect;
using Content.Shared.Weather;
using Robust.Shared.CPUJob.JobQueues;
using Robust.Shared.Map;
using Robust.Shared.Map.Components;
using Robust.Shared.Random;
namespace Content.Server._CP14.WeatherEffect;
public sealed class CP14WeatherEffectJob : Job<bool>
{
private readonly IEntityManager _entManager;
private readonly EntityLookupSystem _lookup;
private readonly SharedWeatherSystem _weather;
private readonly SharedMapSystem _mapSystem;
private readonly IRobustRandom _random;
private readonly Entity<MapGridComponent> _mapUid;
private readonly MapId _mapId;
private readonly List<CP14WeatherEffect> _effects;
private EntityQuery<BlockWeatherComponent> _weatherBlockQuery;
private readonly HashSet<Entity<TransformComponent>> _entitiesOnMap = new();
private readonly HashSet<Entity<TransformComponent>> _affectedEntities = new();
public CP14WeatherEffectJob(
double maxTime,
IEntityManager entManager,
EntityLookupSystem lookup,
SharedWeatherSystem weather,
SharedMapSystem mapSystem,
IRobustRandom random,
Entity<MapGridComponent> mapUid,
MapId mapId,
List<CP14WeatherEffect> effects,
EntityQuery<BlockWeatherComponent> weatherBlockQuery,
CancellationToken cancellation = default
) : base(maxTime, cancellation)
{
_entManager = entManager;
_lookup = lookup;
_weather = weather;
_mapSystem = mapSystem;
_random = random;
_mapUid = mapUid;
_mapId = mapId;
_effects = effects;
_weatherBlockQuery = weatherBlockQuery;
}
protected override async Task<bool> Process()
{
_affectedEntities.Clear();
_entitiesOnMap.Clear();
_lookup.GetEntitiesOnMap(_mapId, _entitiesOnMap);
//Calculate all affected entities by weather
foreach (var ent in _entitiesOnMap)
{
//All weatherblocker entites should be affected by weather
if (_weatherBlockQuery.HasComp(ent))
{
_affectedEntities.Add(ent);
continue;
}
//All entities on weathered tile should be affected by weather
var tileRef = _mapSystem.GetTileRef(_mapUid, _mapUid.Comp, ent.Comp.Coordinates);
if (_weather.CanWeatherAffect(_mapUid, _mapUid.Comp, tileRef))
{
_affectedEntities.Add(ent);
continue;
}
}
//Apply weather effects to affected entities
foreach (var entity in _affectedEntities)
{
foreach (var effect in _effects)
{
effect.ApplyEffect(_entManager, _random, entity);
}
}
return true;
}
}

View File

@@ -0,0 +1,88 @@
using System.Threading;
using Content.Shared.Weather;
using Robust.Shared.CPUJob.JobQueues;
using Robust.Shared.CPUJob.JobQueues.Queues;
using Robust.Shared.Map.Components;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Timing;
namespace Content.Server._CP14.WeatherEffect;
public sealed class CP14WeatherEffectSystem : EntitySystem
{
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly SharedWeatherSystem _weather = default!;
[Dependency] private readonly SharedMapSystem _mapSystem = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly IGameTiming _timing = default!;
private readonly JobQueue _weatherQueue = new();
private readonly List<(CP14WeatherEffectJob Job, CancellationTokenSource CancelToken)> _weatherJobs = new();
private const double JobMaxTime = 0.002;
private readonly TimeSpan ProcessFreq = TimeSpan.FromSeconds(5f);
private TimeSpan NextProcessTime = TimeSpan.Zero;
private EntityQuery<BlockWeatherComponent> _weatherBlockQuery;
public override void Initialize()
{
base.Initialize();
_weatherBlockQuery = GetEntityQuery<BlockWeatherComponent>();
NextProcessTime = _timing.CurTime + ProcessFreq;
}
public override void Update(float frameTime)
{
base.Update(frameTime);
_weatherQueue.Process();
foreach (var (job, cancelToken) in _weatherJobs.ToArray())
{
switch (job.Status)
{
case JobStatus.Finished:
_weatherJobs.Remove((job, cancelToken));
break;
}
}
if (_timing.CurTime <= NextProcessTime)
return;
NextProcessTime = _timing.CurTime + ProcessFreq;
ProcessWeather();
}
private void ProcessWeather()
{
var query = EntityQueryEnumerator<WeatherComponent, MapGridComponent>();
while (query.MoveNext(out var mapUid, out var weather, out var mapComp))
{
foreach (var (proto, data) in weather.Weather)
{
if (!_proto.TryIndex(proto, out var indexedWeather))
continue;
var cancelToken = new CancellationTokenSource();
var job = new CP14WeatherEffectJob(
JobMaxTime,
EntityManager,
_lookup,
_weather,
_mapSystem,
_random,
(mapUid, mapComp),
Transform(mapUid).MapID,
indexedWeather.Effects,
_weatherBlockQuery);
_weatherJobs.Add((job, cancelToken));
_weatherQueue.EnqueueJob(job);
}
}
}
}

View File

@@ -1,4 +1,5 @@
using System.Numerics;
using Content.Shared._CP14.WeatherEffect;
using Robust.Shared.Audio;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
@@ -33,4 +34,10 @@ public sealed partial class WeatherPrototype : IPrototype
/// </summary>
[DataField]
public float Alpha = 1f;
/// <summary>
/// CP14 Effects
/// </summary>
[DataField]
public List<CP14WeatherEffect> Effects = new();
}

View File

@@ -0,0 +1,16 @@
using Robust.Shared.Audio;
namespace Content.Shared._CP14.FarSound;
[RegisterComponent]
public sealed partial class CP14FarSoundComponent : Component
{
[DataField]
public SoundSpecifier? CloseSound;
[DataField]
public SoundSpecifier? FarSound;
[DataField]
public float FarRange = 50f;
}

View File

@@ -8,22 +8,22 @@ namespace Content.Shared._CP14.MagicEnergy.Components;
/// <summary>
/// Allows an item to store magical energy within itself.
/// </summary>
[RegisterComponent, NetworkedComponent]
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
[Access(typeof(SharedCP14MagicEnergySystem))]
public sealed partial class CP14MagicEnergyContainerComponent : Component
{
[DataField]
[DataField, AutoNetworkedField]
public FixedPoint2 Energy = 0f;
[DataField]
[DataField, AutoNetworkedField]
public FixedPoint2 MaxEnergy = 100f;
[DataField]
[DataField, AutoNetworkedField]
public ProtoId<AlertPrototype>? MagicAlert = null;
/// <summary>
/// Does this container support unsafe energy manipulation?
/// </summary>
[DataField]
[DataField, AutoNetworkedField]
public bool UnsafeSupport = false;
}

View File

@@ -0,0 +1,21 @@
using Content.Shared.EntityEffects;
using Robust.Shared.Random;
namespace Content.Shared._CP14.WeatherEffect;
public sealed partial class ApplyEntityEffect : CP14WeatherEffect
{
[DataField(required: true, serverOnly: true)]
public List<EntityEffect> Effects = new();
public override void ApplyEffect(IEntityManager entManager, IRobustRandom random, EntityUid target)
{
if (!random.Prob(Prob))
return;
foreach (var effect in Effects)
{
effect.Effect(new EntityEffectBaseArgs(target, entManager));
}
}
}

View File

@@ -0,0 +1,14 @@
using JetBrains.Annotations;
using Robust.Shared.Random;
namespace Content.Shared._CP14.WeatherEffect;
[ImplicitDataDefinitionForInheritors]
[MeansImplicitUse]
public abstract partial class CP14WeatherEffect
{
[DataField]
public float Prob = 0.05f;
public abstract void ApplyEffect(IEntityManager entManager, IRobustRandom random, EntityUid target);
}

View File

@@ -0,0 +1,19 @@
using Content.Shared.EntityEffects;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
namespace Content.Shared._CP14.WeatherEffect;
public sealed partial class SpawnEntityOnTop : CP14WeatherEffect
{
[DataField(required: true)]
public EntProtoId Entity;
public override void ApplyEffect(IEntityManager entManager, IRobustRandom random, EntityUid target)
{
if (!random.Prob(Prob))
return;
entManager.SpawnAtPosition(Entity, entManager.GetComponent<TransformComponent>(target).Coordinates);
}
}

View File

@@ -0,0 +1,19 @@
- files: ["lightning_far1.ogg"]
license: "CC-BY-NC-4.0"
copyright: 'by GregorQuendel of Freesound.org.'
source: "https://freesound.org/people/GregorQuendel/sounds/705710/"
- files: ["lightning_far2.ogg"]
license: "CC-BY-4.0"
copyright: 'by csigusz_foxoup of Freesound.org.'
source: "https://freesound.org/people/csigusz_foxoup/sounds/659389/"
- files: ["lightning_far3.ogg"]
license: "CC-BY-4.0"
copyright: 'by LukeIRL of Freesound.org.'
source: "https://freesound.org/people/LukeIRL/sounds/176021/"
- files: ["lightning_close1.ogg"]
license: "CC0-1.0"
copyright: 'by bajko of Freesound.org.'
source: "https://freesound.org/people/bajko/sounds/399656/"

View File

@@ -24,4 +24,10 @@ cp14-modifier-chasm = bottomless chasms
cp14-modifier-air-lily = air lilies
cp14-modifier-time-limit-10 = temporary disintegration (10 minutes)
cp14-modifier-shadow-kudzu = spreading astral haze
cp14-modifier-night = darkness
cp14-modifier-night = darkness
cp14-modifier-storm = storm
cp14-modifier-fire-storm = fire storm
cp14-modifier-snow-storm = snow storm
cp14-modifier-mana-mist = magic mist
cp14-modifier-anti-mana-mist = antimagic mist

View File

@@ -24,4 +24,10 @@ cp14-modifier-chasm = бездонных пропастей
cp14-modifier-air-lily = воздушных лилий
cp14-modifier-time-limit-10 = временного распада (10 минут)
cp14-modifier-shadow-kudzu = распространяющгося астрального мрака
cp14-modifier-night = темноты
cp14-modifier-night = темноты
cp14-modifier-storm = грозы
cp14-modifier-fire-storm = огненный шторм
cp14-modifier-snow-storm = снежный шторм
cp14-modifier-mana-mist = магического тумана
cp14-modifier-anti-mana-mist = антимагического тумана

File diff suppressed because it is too large Load Diff

View File

@@ -678,18 +678,18 @@
tags:
- Trash
- Document
#- type: Appearance, hide stamp marks until we have some kind of displacement
- type: Flammable
fireSpread: true
canResistFire: false
alwaysCombustible: true
canExtinguish: true
damage:
types:
Heat: 1
- type: FireVisuals
sprite: Effects/fire.rsi
normalState: fire
#- type: Appearance
#- type: Flammable
# fireSpread: true
# canResistFire: false
# alwaysCombustible: true
# canExtinguish: true
# damage:
# types:
# Heat: 1
#- type: FireVisuals
# sprite: Effects/fire.rsi
# normalState: fire
- type: Damageable
damageModifierSet: Wood
- type: Destructible

View File

@@ -0,0 +1,59 @@
- type: entity
id: CP14SkyLightning
categories: [ ForkFiltered ]
save: false
components:
- type: Sprite
sprite: _CP14/Effects/sky_lightning.rsi
drawdepth: Mobs
noRot: true
offset: 0,2.5
layers:
- state: bombom
shader: unshaded
- type: TimedDespawn
lifetime: 2
- type: EffectVisuals
- type: Tag
tags:
- HideContextMenu
- type: AnimationPlayer
- type: PointLight
color: "#73efff"
enabled: true
radius: 50
energy: 8
netsync: false
- type: LightFade
duration: 1
- type: CP14Lighthouse
- type: CP14AreaEntityEffect
range: 1
effects:
- !type:CP14SpellApplyEntityEffect
effects:
- !type:Electrocute
electrocuteTime: 6
- !type:HealthChange
damage:
types:
Shock: 30
- !type:FlammableReaction
multiplier: 2.5
- !type:AdjustTemperature
amount: 30000
- !type:Ignite
- type: TriggerOnSpawn
- type: FlashOnTrigger
range: 4
- type: CP14FarSound
closeSound:
path: /Audio/_CP14/Ambience/Lightning/lightning_close1.ogg
params:
variation: 0.2
maxDistance: 20
volume: 20
farSound:
collection: CP14LightningFar
params:
variation: 0.2

View File

@@ -39,8 +39,9 @@
- type: cp14DemiplaneModifier
id: WeatherStorm
levels:
min: 4
min: 3
max: 10
name: cp14-modifier-storm
categories:
Weather: 1
requiredTags:
@@ -55,6 +56,12 @@
duration:
min: 10000
max: 10000
layers:
- !type:OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 10
minGroupSize: 1
maxGroupSize: 1
- type: cp14DemiplaneModifier
id: WeatherSnowLight
@@ -80,6 +87,7 @@
id: WeatherSnowMedium
categories:
Weather: 1
name: cp14-modifier-snow-storm
requiredTags:
- CP14DemiplaneCold
components:
@@ -92,12 +100,19 @@
duration:
min: 10000
max: 10000
layers:
- !type:OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 10
minGroupSize: 1
maxGroupSize: 1
- type: cp14DemiplaneModifier
id: WeatherSnowHeavy
levels:
min: 5
max: 10
name: cp14-modifier-snow-storm
categories:
Weather: 1
requiredTags:
@@ -111,4 +126,87 @@
- visuals: CP14SnowHeavy
duration:
min: 10000
max: 10000
max: 10000
layers:
- !type:OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 10
minGroupSize: 1
maxGroupSize: 1
- type: cp14DemiplaneModifier
id: CP14ManaMist
name: cp14-modifier-mana-mist
levels:
min: 0
max: 10
categories:
Weather: 1
components:
- type: CP14WeatherController
clearDuration:
min: 0
max: 0
entries:
- visuals: CP14ManaMist
duration:
min: 10000
max: 10000
layers:
- !type:OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 10
minGroupSize: 1
maxGroupSize: 1
- type: cp14DemiplaneModifier
id: CP14AntiManaMist
name: cp14-modifier-anti-mana-mist
levels:
min: 4
max: 10
categories:
Weather: 1
components:
- type: CP14WeatherController
clearDuration:
min: 0
max: 0
entries:
- visuals: CP14AntiManaMist
duration:
min: 10000
max: 10000
layers:
- !type:OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 10
minGroupSize: 1
maxGroupSize: 1
- type: cp14DemiplaneModifier
id: CP14FireStorm
name: cp14-modifier-fire-storm
levels:
min: 4
max: 10
requiredTags:
- CP14DemiplaneHot
categories:
Weather: 1
components:
- type: CP14WeatherController
clearDuration:
min: 0
max: 0
entries:
- visuals: CP14FireStorm
duration:
min: 10000
max: 10000
layers:
- !type:OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 10
minGroupSize: 1
maxGroupSize: 1

View File

@@ -8,6 +8,21 @@
minGroupSize: 1
maxGroupSize: 1
- type: cp14DemiplaneModifier
id: Ruins
levels:
min: 0
max: 10
categories:
Reward: 0.1
generationProb: 0.8
layers:
- !type:OreDunGen
entity: CP14DemiplaneRuinsRoomSpawner
count: 8
minGroupSize: 1
maxGroupSize: 1
- type: cp14DemiplaneModifier
id: Exit
generationProb: 0

View File

@@ -5,7 +5,7 @@
id: CP14DemiplanEnterRoomMarker
categories: [ ForkFiltered ]
parent: BaseRoomMarker
name: Demiplan enter room marker
name: Demiplane enter room marker
components:
- type: RoomFill
clearExisting: true
@@ -13,9 +13,8 @@
tags:
- CP14DemiplanEnterRoom
# 7x7
- type: dungeonRoom
id: CP14DemiplanEnterRoom_7x7_a
id: CP14DemiplanEnterRoom_1
size: 7,7
atlas: /Maps/_CP14/Dungeon/demiplan_enter.yml
ignoreTile: FloorShuttlePurple
@@ -24,7 +23,7 @@
- CP14DemiplanEnterRoom
- type: dungeonRoom
id: CP14DemiplanEnterRoom_7x7_b
id: CP14DemiplanEnterRoom_2
size: 7,7
atlas: /Maps/_CP14/Dungeon/demiplan_enter.yml
ignoreTile: FloorShuttlePurple
@@ -33,7 +32,7 @@
- CP14DemiplanEnterRoom
- type: dungeonRoom
id: CP14DemiplanEnterRoom_7x7_c
id: CP14DemiplanEnterRoom_3
size: 7,7
atlas: /Maps/_CP14/Dungeon/demiplan_enter.yml
ignoreTile: FloorShuttlePurple
@@ -42,10 +41,28 @@
- CP14DemiplanEnterRoom
- type: dungeonRoom
id: CP14DemiplanEnterRoom_7x7_d
id: CP14DemiplanEnterRoom_4
size: 7,7
atlas: /Maps/_CP14/Dungeon/demiplan_enter.yml
ignoreTile: FloorShuttlePurple
offset: 24,0
tags:
- CP14DemiplanEnterRoom
- type: dungeonRoom
id: CP14DemiplanEnterRoom_5
size: 7,7
atlas: /Maps/_CP14/Dungeon/demiplan_enter.yml
ignoreTile: FloorShuttlePurple
offset: 0,8
tags:
- CP14DemiplanEnterRoom
- type: dungeonRoom
id: CP14DemiplanEnterRoom_6
size: 9,7
atlas: /Maps/_CP14/Dungeon/demiplan_enter.yml
ignoreTile: FloorShuttlePurple
offset: 8,8
tags:
- CP14DemiplanEnterRoom

View File

@@ -1,79 +1,68 @@
- type: Tag
id: CP14DemiplanRuins
id: CP14DemiplaneRuins
#- type: entity
# id: CP14DemiplanRuinsRoomSpawner
# categories: [ ForkFiltered ]
# parent: BaseRoomMarker
# name: Demiplan ruins room spawner
# components:
# - type: RoomFill
# clearExisting: true
# roomWhitelist:
# tags:
# - CP14DemiplanRuins
- type: entity
id: CP14DemiplaneRuinsRoomSpawner
categories: [ ForkFiltered ]
parent: BaseRoomMarker
name: Demiplane ruins room spawner
components:
- type: RoomFill
clearExisting: true
roomWhitelist:
tags:
- CP14DemiplaneRuins
# 7x7
- type: dungeonRoom
id: CP14GrasslandIslandExterior_7x7_a
size: 7,7
atlas: /Maps/_CP14/Dungeon/demiplan_ruins.yml
id: CP14DemiplaneRuins_1
size: 5,5
atlas: /Maps/_CP14/Dungeon/demiplane_ruins.yml
ignoreTile: FloorShuttlePurple
offset: 0,0
tags:
- CP14DemiplanRuins
# 5x5
- type: dungeonRoom
id: CP14GrasslandIslandExterior_5x5_a
size: 5,5
atlas: /Maps/_CP14/Dungeon/demiplan_ruins.yml
ignoreTile: FloorShuttlePurple
offset: 0,8
tags:
- CP14DemiplanRuins
- CP14DemiplaneRuins
- type: dungeonRoom
id: CP14GrasslandIslandExterior_5x5_b
id: CP14DemiplaneRuins_2
size: 5,5
atlas: /Maps/_CP14/Dungeon/demiplan_ruins.yml
atlas: /Maps/_CP14/Dungeon/demiplane_ruins.yml
ignoreTile: FloorShuttlePurple
offset: 6,8
offset: 6,0
tags:
- CP14DemiplanRuins
- CP14DemiplaneRuins
- type: dungeonRoom
id: CP14GrasslandIslandExterior_5x5_c
id: CP14DemiplaneRuins_3
size: 5,5
atlas: /Maps/_CP14/Dungeon/demiplan_ruins.yml
atlas: /Maps/_CP14/Dungeon/demiplane_ruins.yml
ignoreTile: FloorShuttlePurple
offset: 12,8
offset: 12,0
tags:
- CP14DemiplanRuins
- CP14DemiplaneRuins
- type: dungeonRoom
id: CP14GrasslandIslandExterior_5x5_d
id: CP14DemiplaneRuins_4
size: 5,5
atlas: /Maps/_CP14/Dungeon/demiplan_ruins.yml
atlas: /Maps/_CP14/Dungeon/demiplane_ruins.yml
ignoreTile: FloorShuttlePurple
offset: 18,8
offset: 18,0
tags:
- CP14DemiplanRuins
- CP14DemiplaneRuins
- type: dungeonRoom
id: CP14GrasslandIslandExterior_5x5_e
id: CP14DemiplaneRuins_5
size: 5,5
atlas: /Maps/_CP14/Dungeon/demiplan_ruins.yml
atlas: /Maps/_CP14/Dungeon/demiplane_ruins.yml
ignoreTile: FloorShuttlePurple
offset: 24,8
offset: 24,0
tags:
- CP14DemiplanRuins
- CP14DemiplaneRuins
- type: dungeonRoom
id: CP14GrasslandIslandExterior_5x5_g
id: CP14DemiplaneRuins_6
size: 5,5
atlas: /Maps/_CP14/Dungeon/demiplan_ruins.yml
atlas: /Maps/_CP14/Dungeon/demiplane_ruins.yml
ignoreTile: FloorShuttlePurple
offset: 30,8
offset: 30,0
tags:
- CP14DemiplanRuins
- CP14DemiplaneRuins

View File

@@ -19,4 +19,11 @@
- /Audio/_CP14/Effects/skill_up1.ogg
- /Audio/_CP14/Effects/skill_up2.ogg
- /Audio/_CP14/Effects/skill_up3.ogg
- /Audio/_CP14/Effects/skill_up4.ogg
- /Audio/_CP14/Effects/skill_up4.ogg
- type: soundCollection
id: CP14LightningFar
files:
- /Audio/_CP14/Ambience/Lightning/lightning_far1.ogg
- /Audio/_CP14/Ambience/Lightning/lightning_far2.ogg
- /Audio/_CP14/Ambience/Lightning/lightning_far3.ogg

View File

@@ -8,6 +8,11 @@
params:
loop: true
volume: -6
effects:
- !type:ApplyEntityEffect
prob: 0.2
effects:
- !type:ExtinguishReaction
- type: weather
id: CP14Storm
@@ -19,6 +24,14 @@
params:
loop: true
volume: -6
effects:
- !type:ApplyEntityEffect
prob: 0.4
effects:
- !type:ExtinguishReaction
- !type:SpawnEntityOnTop
prob: 0.0001
entity: CP14SkyLightning
- type: weather
id: CP14Mist
@@ -29,11 +42,54 @@
sprite: /Textures/_CP14/Effects/parallax.rsi
state: noise
- type: weather
id: CP14ManaMist
offsetSpeed: 0.56, -0.36
color: "#3d81ff"
alpha: 0.7
sprite:
sprite: /Textures/_CP14/Effects/parallax.rsi
state: noise
effects:
- !type:ApplyEntityEffect
prob: 0.5
effects:
- !type:CP14ManaChange
manaDelta: 8
safe: false
- type: weather
id: CP14AntiManaMist
offsetSpeed: -0.56, -0.31
color: "#d929d9"
alpha: 0.8
sprite:
sprite: /Textures/_CP14/Effects/parallax.rsi
state: noise
sound:
path: /Audio/Ambience/anomaly_scary.ogg
params:
loop: true
volume: -18
effects:
- !type:ApplyEntityEffect
prob: 0.5
effects:
- !type:CP14ManaChange
manaDelta: -10
safe: false
- type: weather
id: CP14SnowLight
sprite:
sprite: /Textures/_CP14/Effects/weather.rsi
state: snowfall_light
#effects:
#- !type:ApplyEntityEffect
# prob: 1
# effects:
# - !type:AdjustTemperature
# amount: -20000
- type: weather
id: CP14SnowMedium
@@ -45,6 +101,12 @@
params:
loop: true
volume: -18
#effects:
#- !type:ApplyEntityEffect
# prob: 1
# effects:
# - !type:AdjustTemperature
# amount: -40000
- type: weather
id: CP14SnowHeavy
@@ -55,4 +117,33 @@
path: /Audio/Effects/Weather/snowstorm.ogg
params:
loop: true
volume: -6
volume: -6
#effects:
#- !type:ApplyEntityEffect
# prob: 1
# effects:
# - !type:AdjustTemperature
# amount: -60000
- type: weather
id: CP14FireStorm
sprite:
sprite: /Textures/Effects/weather.rsi
state: ashfall
alpha: 0.6
sound:
path: /Audio/Effects/Weather/snowstorm.ogg
params:
loop: true
volume: -6
effects:
#- !type:ApplyEntityEffect
# prob: 1
# effects:
# - !type:AdjustTemperature
# amount: 40000
- !type:ApplyEntityEffect
effects:
- !type:FlammableReaction
multiplier: 1
- !type:Ignite

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,30 @@
{
"version": 1,
"copyright": "Created bby TheShuEd",
"license": "CC-BY-SA-3.0",
"size": {
"x": 32,
"y": 200
},
"states": [
{
"name": "bombom",
"delays": [
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
2
]
]
}
]
}