* multi-node xeno artifacts * refactor existing artifact effects * more tweaks to generation * more shit plus fix tests * more generation stuff plus threat levels * doink * now make it build * defer the artifact activation to not cause errors also pricing * some changes * all of the yaml + ui stuff for artifact analyzer * machine linking and starting to make the ui functional * artifact analyzer display * a shit ton of artifact analyzer stuff * more changes; making destroy work properly; progress bar tweaks * getting shit going! ALL RIGHT * small tweaks that didn't help much * Komm susser todd: the end of analysis * recipes and hints and ui, oh my! * add some in-game sources gotta prepare for day 1 launch * node data + ditch random seed in place of id * bunch of triggers * finish off the last few triggers * implement machine examine verb * knock, flicker, blink, throw * shatter, foam, shuffle, heat * fix all the shit i broke * *some* of these have to be good, no? 25 effects * callin' it there for effects * comments + reword some trigger hints * don't mind this little commit here * byref event * fix brokey node entry * fix low pressure trigger * mirror review plus fixing 0x40's bug also the throw artifact threw incorrectly * randomize the event message a teeny bit
46 lines
1.8 KiB
C#
46 lines
1.8 KiB
C#
using Content.Server.Chemistry.Components;
|
|
using Content.Server.Coordinates.Helpers;
|
|
using Content.Shared.Audio;
|
|
using Content.Shared.Chemistry.Components;
|
|
using JetBrains.Annotations;
|
|
using Robust.Server.GameObjects;
|
|
using Robust.Shared.Audio;
|
|
using Robust.Shared.Map;
|
|
using Robust.Shared.Player;
|
|
|
|
namespace Content.Server.Chemistry.ReactionEffects
|
|
{
|
|
[UsedImplicitly]
|
|
[DataDefinition]
|
|
public sealed class FoamAreaReactionEffect : AreaReactionEffect
|
|
{
|
|
protected override SolutionAreaEffectComponent? GetAreaEffectComponent(EntityUid entity)
|
|
{
|
|
return IoCManager.Resolve<IEntityManager>().GetComponentOrNull<FoamSolutionAreaEffectComponent>(entity);
|
|
}
|
|
|
|
public static void SpawnFoam(string entityPrototype, EntityCoordinates coords, Solution? contents, int amount, float duration, float spreadDelay,
|
|
float removeDelay, SoundSpecifier? sound = null, IEntityManager? entityManager = null)
|
|
{
|
|
entityManager ??= IoCManager.Resolve<IEntityManager>();
|
|
var ent = entityManager.SpawnEntity(entityPrototype, coords.SnapToGrid());
|
|
|
|
var areaEffectComponent = entityManager.GetComponentOrNull<FoamSolutionAreaEffectComponent>(ent);
|
|
|
|
if (areaEffectComponent == null)
|
|
{
|
|
Logger.Error("Couldn't get AreaEffectComponent from " + entityPrototype);
|
|
IoCManager.Resolve<IEntityManager>().QueueDeleteEntity(ent);
|
|
return;
|
|
}
|
|
|
|
if (contents != null)
|
|
areaEffectComponent.TryAddSolution(contents);
|
|
areaEffectComponent.Start(amount, duration, spreadDelay, removeDelay);
|
|
|
|
entityManager.EntitySysManager.GetEntitySystem<AudioSystem>()
|
|
.PlayPvs(sound, ent, AudioParams.Default.WithVariation(0.125f));
|
|
}
|
|
}
|
|
}
|