Новые смешные эффекты для артефактов с Fire Station (#2135)

Co-authored-by: Vigers Ray <60344369+VigersRay@users.noreply.github.com>
This commit is contained in:
ThereDrD 2025-05-27 01:10:10 +03:00 committed by GitHub
parent f80d933fd7
commit f23628a833
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
58 changed files with 1508 additions and 82 deletions

View file

@ -3,6 +3,7 @@ using Content.Server.AbstractAnalyzer;
using Content.Server.Body.Components;
using Content.Server.Medical.Components;
using Content.Server.Temperature.Components;
using Content.Shared._Sunrise.Research.Artifact;
using Content.Shared.Traits.Assorted;
using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Damage;
@ -58,6 +59,10 @@ public sealed class HealthAnalyzerSystem : AbstractAnalyzerSystem<HealthAnalyzer
if (TryComp<UnrevivableComponent>(target, out var unrevivableComp) && unrevivableComp.Analyzable)
unrevivable = true;
// Sunrise edit start - новый триггер
RaiseLocalEvent(target, new EntityAnalyzedEvent ());
// Sunrise edit end
_uiSystem.ServerSendUiMessage(healthAnalyzer, HealthAnalyzerUiKey.Key, new HealthAnalyzerScannedUserMessage(
GetNetEntity(target),
bodyTemperature,

View file

@ -0,0 +1,127 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Content.Server.Atmos.EntitySystems;
using Content.Server.Station.Components;
using Content.Shared._Sunrise.Helpers;
using Content.Shared.Random.Helpers;
using Robust.Server.GameObjects;
using Robust.Shared.Collections;
using Robust.Shared.Map;
using Robust.Shared.Map.Components;
using Robust.Shared.Random;
namespace Content.Server._Sunrise.Helpers;
/// <summary>
/// Система-набор хелпер методов
/// </summary>
public sealed partial class SunriseHelpersSystem : SharedSunriseHelpersSystem
{
[Dependency] private readonly AtmosphereSystem _atmosphere = default!;
[Dependency] private readonly MapSystem _map = default!;
[Dependency] private readonly IRobustRandom _random = default!;
#region Private
private bool TryGetRandomStation([NotNullWhen(true)] out EntityUid? station, Func<EntityUid, bool>? filter = null)
{
var stations = new ValueList<EntityUid>(Count<StationEventEligibleComponent>());
filter ??= _ => true;
var query = AllEntityQuery<StationEventEligibleComponent>();
while (query.MoveNext(out var uid, out _))
{
if (!filter(uid))
continue;
stations.Add(uid);
}
if (stations.Count == 0)
{
station = null;
return false;
}
station = stations[_random.Next(stations.Count)];
return true;
}
#endregion
#region Tile
public bool TryFindRandomTile(out Vector2i tile,
[NotNullWhen(true)] out EntityUid? targetStation,
out EntityUid targetGrid,
out EntityCoordinates targetCoords)
{
tile = default;
targetStation = EntityUid.Invalid;
targetGrid = EntityUid.Invalid;
targetCoords = EntityCoordinates.Invalid;
if (TryGetRandomStation(out targetStation))
{
return TryFindRandomTileOnStation((targetStation.Value, Comp<StationDataComponent>(targetStation.Value)),
out tile,
out targetGrid,
out targetCoords);
}
return false;
}
public bool TryFindRandomTileOnStation(Entity<StationDataComponent> station,
out Vector2i tile,
out EntityUid targetGrid,
out EntityCoordinates targetCoords)
{
tile = default;
targetCoords = EntityCoordinates.Invalid;
targetGrid = EntityUid.Invalid;
var weights = new Dictionary<Entity<MapGridComponent>, float>();
foreach (var possibleTarget in station.Comp.Grids)
{
if (!TryComp<MapGridComponent>(possibleTarget, out var comp))
continue;
weights.Add((possibleTarget, comp), _map.GetAllTiles(possibleTarget, comp).Count());
}
if (weights.Count == 0)
{
targetGrid = EntityUid.Invalid;
return false;
}
(targetGrid, var gridComp) = _random.Pick(weights);
var found = false;
var aabb = gridComp.LocalAABB;
for (var i = 0; i < 10; i++)
{
var randomX = _random.Next((int) aabb.Left, (int) aabb.Right);
var randomY = _random.Next((int) aabb.Bottom, (int) aabb.Top);
tile = new Vector2i(randomX, randomY);
if (_atmosphere.IsTileSpace(targetGrid, Transform(targetGrid).MapUid, tile)
|| _atmosphere.IsTileAirBlocked(targetGrid, tile, mapGridComp: gridComp)
|| !_map.TryGetTileRef(targetGrid, gridComp, tile, out var tileRef)
|| tileRef.Tile.IsEmpty)
{
continue;
}
found = true;
targetCoords = _map.GridTileToLocal(targetGrid, gridComp, tile);
break;
}
return found;
}
#endregion
}

View file

@ -0,0 +1,39 @@
using Content.Server.Speech;
using Robust.Shared.Random;
namespace Content.Server._Sunrise.Misc.ShiftedAsciiTableAccent;
public sealed class AnomalyAccentSystem : EntitySystem
{
[Dependency] private readonly IRobustRandom _random = default!;
// Значения сдвига по юникоду
private const int ShiftMin = 5;
private const int ShiftMax = 200;
public override void Initialize()
{
SubscribeLocalEvent<AnomalyAccentComponent, AccentGetEvent>(OnAccent);
}
private void OnAccent(Entity<AnomalyAccentComponent> ent, ref AccentGetEvent args)
{
args.Message = Accentuate(args.Message);
}
private string Accentuate(string message)
{
var speechArray = message.ToCharArray();
for (var i = 0; i < speechArray.Length; i++)
{
if (!_random.Prob(0.5f))
continue;
// Сдвиг символа по алфавиту юникода
speechArray[i] = (char)(speechArray[i] + _random.Next(ShiftMin, ShiftMax));
}
return new string(speechArray);
}
}

View file

@ -0,0 +1,4 @@
namespace Content.Server._Sunrise.Misc.ShiftedAsciiTableAccent;
[RegisterComponent]
public sealed partial class AnomalyAccentComponent : Component;

View file

@ -0,0 +1,16 @@
using Robust.Shared.Prototypes;
namespace Content.Server._Sunrise.Misc.TimedRemoveComponents;
/// <summary>
/// Компонент, который автоматически убирает переданные компоненты через переданное время
/// </summary>
[RegisterComponent]
public sealed partial class TimedRemoveComponentsComponent : Component
{
[DataField(required: true)]
public ComponentRegistry Components = default!;
[DataField]
public TimeSpan RemoveAfter = TimeSpan.FromSeconds(5);
}

View file

@ -0,0 +1,41 @@
using System.Threading;
using Content.Shared.GameTicking;
using Timer = Robust.Shared.Timing.Timer;
namespace Content.Server._Sunrise.Misc.TimedRemoveComponents;
public sealed class TimedRemoveComponentsSystem : EntitySystem
{
private static CancellationTokenSource _timerDespawnToken = new ();
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<TimedRemoveComponentsComponent, ComponentInit>(OnInit);
SubscribeLocalEvent<RoundRestartCleanupEvent>(_ => Clear());
}
private void OnInit(Entity<TimedRemoveComponentsComponent> ent, ref ComponentInit args)
{
Timer.Spawn(ent.Comp.RemoveAfter, () => RemoveComponents(ent), _timerDespawnToken.Token);
}
private void RemoveComponents(Entity<TimedRemoveComponentsComponent> ent)
{
if (!Exists(ent))
return;
EntityManager.RemoveComponents(ent, ent.Comp.Components);
// блять, я себя захуярил
RemComp<TimedRemoveComponentsComponent>(ent);
}
private static void Clear()
{
_timerDespawnToken.Cancel();
_timerDespawnToken = new();
}
}

View file

@ -0,0 +1,22 @@
using Content.Shared.Examine;
using Content.Shared.Whitelist;
using Robust.Shared.Prototypes;
namespace Content.Server._Sunrise.Research.Artifact.Effects.AddComponentsInRadius;
/// <summary>
/// Добавляет всем подходящим под вайтлист сущностням в переданном радиусе переданные компоненты
/// Если вайтлист пуст, то добавляет компоненты ВСЕМ СУЩНОСТЯМ ВОКРУГ
/// </summary>
[RegisterComponent]
public sealed partial class AddComponentsInRadiusComponent : Component
{
[DataField(required: true)]
public ComponentRegistry Components = default!;
[DataField, ViewVariables]
public float Radius = ExamineSystemShared.ExamineRange;
[DataField]
public EntityWhitelist? Whitelist;
}

View file

@ -0,0 +1,24 @@
using System.Linq;
using Content.Shared.Whitelist;
using Content.Shared.Xenoarchaeology.Artifact;
using Content.Shared.Xenoarchaeology.Artifact.XAE;
namespace Content.Server._Sunrise.Research.Artifact.Effects.AddComponentsInRadius;
public sealed class AddComponentsInRadiusSystem : BaseXAESystem<AddComponentsInRadiusComponent>
{
[Dependency] private readonly EntityWhitelistSystem _whitelist = default!;
[Dependency] private readonly EntityLookupSystem _lookup = default!;
protected override void OnActivated(Entity<AddComponentsInRadiusComponent> ent, ref XenoArtifactNodeActivatedEvent args)
{
var coords = Transform(ent).Coordinates;
var targets = _lookup.GetEntitiesInRange<TransformComponent>(coords, ent.Comp.Radius)
.Where(e => _whitelist.IsWhitelistPassOrNull(ent.Comp.Whitelist, e));
foreach (var target in targets)
{
EntityManager.AddComponents(target, ent.Comp.Components, false);
}
}
}

View file

@ -0,0 +1,8 @@
namespace Content.Server._Sunrise.Research.Artifact.Effects.BoltAirlocks;
[RegisterComponent]
public sealed partial class ArtifactBoltAirlocksComponent : Component
{
[DataField] public float Range = 12f;
[DataField] public float Chance = 70f;
}

View file

@ -0,0 +1,26 @@
using Content.Server._Sunrise.Helpers;
using Content.Server.Doors.Systems;
using Content.Shared.Doors.Components;
using Content.Shared.Xenoarchaeology.Artifact;
using Content.Shared.Xenoarchaeology.Artifact.XAE;
namespace Content.Server._Sunrise.Research.Artifact.Effects.BoltAirlocks;
public sealed class ArtifactBoltAirlocksSystem : BaseXAESystem<ArtifactBoltAirlocksComponent>
{
[Dependency] private readonly DoorSystem _door = default!;
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly SunriseHelpersSystem _sunriseHelpers = default!;
protected override void OnActivated(Entity<ArtifactBoltAirlocksComponent> ent, ref XenoArtifactNodeActivatedEvent args)
{
var coords = Transform(ent).Coordinates;
var doors = _lookup.GetEntitiesInRange<DoorBoltComponent>(coords, ent.Comp.Range, LookupFlags.Static);
var reducedDoors = _sunriseHelpers.GetPercentageOfHashSet(doors, ent.Comp.Chance);
foreach (var door in reducedDoors)
{
_door.SetBoltsDown(door, true);
}
}
}

View file

@ -0,0 +1,8 @@
namespace Content.Server._Sunrise.Research.Artifact.Effects.ModifyHunger;
[RegisterComponent]
public sealed partial class ArtifactModifyHungerComponent : Component
{
[DataField] public float Range = 12f;
[DataField] public float Amount = 40f;
}

View file

@ -0,0 +1,25 @@
using Content.Shared.Nutrition.Components;
using Content.Shared.Nutrition.EntitySystems;
using Content.Shared.Xenoarchaeology.Artifact;
using Content.Shared.Xenoarchaeology.Artifact.XAE;
using Robust.Shared.Random;
namespace Content.Server._Sunrise.Research.Artifact.Effects.ModifyHunger;
public sealed class ArtifactModifyHungerSystem : BaseXAESystem<ArtifactModifyHungerComponent>
{
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly HungerSystem _hunger = default!;
[Dependency] private readonly IRobustRandom _random = default!;
protected override void OnActivated(Entity<ArtifactModifyHungerComponent> ent, ref XenoArtifactNodeActivatedEvent args)
{
var humans = _lookup.GetEntitiesInRange<HungerComponent>(Transform(ent).Coordinates, ent.Comp.Range);
foreach (var uid in humans)
{
var modifier = _random.NextFloat(-1f, 1f);
_hunger.ModifyHunger(uid, modifier * ent.Comp.Amount);
}
}
}

View file

@ -0,0 +1,8 @@
namespace Content.Server._Sunrise.Research.Artifact.Effects.ModifyThirst;
[RegisterComponent]
public sealed partial class ArtifactModifyThirstComponent : Component
{
[DataField] public float Range = 12f;
[DataField] public float Amount = 40f;
}

View file

@ -0,0 +1,25 @@
using Content.Shared.Nutrition.Components;
using Content.Shared.Nutrition.EntitySystems;
using Content.Shared.Xenoarchaeology.Artifact;
using Content.Shared.Xenoarchaeology.Artifact.XAE;
using Robust.Shared.Random;
namespace Content.Server._Sunrise.Research.Artifact.Effects.ModifyThirst;
public sealed class ArtifactModifyThirstSystem : BaseXAESystem<ArtifactModifyThirstComponent>
{
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly ThirstSystem _thirst = default!;
[Dependency] private readonly IRobustRandom _random = default!;
protected override void OnActivated(Entity<ArtifactModifyThirstComponent> ent, ref XenoArtifactNodeActivatedEvent args)
{
var humans = _lookup.GetEntitiesInRange<ThirstComponent>(Transform(ent).Coordinates, ent.Comp.Range);
foreach (var uid in humans)
{
var modifier = _random.NextFloat(-1f, 1f);
_thirst.ModifyThirst(uid, uid, modifier * ent.Comp.Amount);
}
}
}

View file

@ -0,0 +1,19 @@
using Robust.Shared.Prototypes;
namespace Content.Server._Sunrise.Research.Artifact.Effects.RandomTransformation;
[RegisterComponent]
public sealed partial class ArtifactRandomTransformationComponent : Component
{
[DataField, ViewVariables]
public float TransformationPercentRatio = 20f;
[DataField, ViewVariables]
public float Radius = 12f;
[DataField]
public HashSet<EntProtoId>? PrototypeBlacklist;
[DataField]
public HashSet<ProtoId<EntityCategoryPrototype>>? CategoryBlacklist;
}

View file

@ -0,0 +1,98 @@
using System.Linq;
using Content.Server._Sunrise.Helpers;
using Content.Shared.Inventory;
using Content.Shared.Item;
using Content.Shared.Xenoarchaeology.Artifact;
using Content.Shared.Xenoarchaeology.Artifact.XAE;
using Robust.Server.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
namespace Content.Server._Sunrise.Research.Artifact.Effects.RandomTransformation;
public sealed class ArtifactRandomTransformationSystem : BaseXAESystem<ArtifactRandomTransformationComponent>
{
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly TransformSystem _transform = default!;
[Dependency] private readonly InventorySystem _inventory = default!;
[Dependency] private readonly SunriseHelpersSystem _sunriseHelpers = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly IPrototypeManager _prototype = default!;
protected override void OnActivated(Entity<ArtifactRandomTransformationComponent> ent, ref XenoArtifactNodeActivatedEvent args)
{
var coords = Transform(ent).Coordinates;
var entities = _lookup.GetEntitiesInRange<ItemComponent>(coords, ent.Comp.Radius)
.Select(e => e.Owner)
.ToHashSet();
SearchPlayersInventoryForItems(ent, coords, out var inventoryItems);
ReduceAndTransform(ent, inventoryItems);
ReduceAndTransform(ent, entities);
}
private void SearchPlayersInventoryForItems(Entity<ArtifactRandomTransformationComponent> ent, EntityCoordinates coords, out HashSet<EntityUid> items)
{
var players = _lookup.GetEntitiesInRange<InventoryComponent>(coords, ent.Comp.Radius);
items = [];
foreach (var player in players)
{
var inventorySlots = _inventory.GetSlotEnumerator(player.Owner);
while (inventorySlots.MoveNext(out var slot))
{
if (!_inventory.TryGetSlotEntity(player, slot.ID, out var itemUid))
continue;
items.Add(itemUid.Value);
}
}
}
private void ReduceAndTransform(Entity<ArtifactRandomTransformationComponent> ent, IReadOnlyCollection<EntityUid> entities)
{
var items = _sunriseHelpers.GetPercentageOfHashSet(entities, ent.Comp.TransformationPercentRatio);
DoTransformation(ent, items);
}
private void DoTransformation(Entity<ArtifactRandomTransformationComponent> ent, IEnumerable<EntityUid> items)
{
foreach (var item in items)
{
if (!_prototype.TryGetRandom<EntityPrototype>(_random, out var prototype))
continue;
var proto = (EntityPrototype) prototype;
if (!CanSpawnEntity(ent, proto))
continue;
/*
* TODO: Обработка ентити в контейнерах
* Требуется сделать проверку, что если ентити находится в контейнере
* То после создания нового оно помещается в тот же слот контейнера
*/
Spawn(prototype.ID, _transform.GetMapCoordinates(item));
QueueDel(item);
}
}
private static bool CanSpawnEntity(Entity<ArtifactRandomTransformationComponent> ent, EntityPrototype proto)
{
if (ent.Comp.PrototypeBlacklist != null && ent.Comp.PrototypeBlacklist.Contains(proto.ID))
return false;
if (proto.Abstract)
return false;
if (ent.Comp.CategoryBlacklist != null && proto.Categories.Any(c => ent.Comp.CategoryBlacklist.Contains(c)))
return false;
return true;
}
}

View file

@ -0,0 +1,10 @@
using Robust.Shared.Prototypes;
namespace Content.Server._Sunrise.Research.Artifact.Effects.StartGamerule;
[RegisterComponent]
public sealed partial class ArtifactStartGameRuleComponent : Component
{
[DataField(required: true)]
public Dictionary<EntProtoId, int> Rules = new ();
}

View file

@ -0,0 +1,21 @@
using Content.Server.GameTicking;
using Content.Shared.Xenoarchaeology.Artifact;
using Content.Shared.Xenoarchaeology.Artifact.XAE;
namespace Content.Server._Sunrise.Research.Artifact.Effects.StartGamerule;
public sealed class ArtifactStartGameRuleSystem : BaseXAESystem<ArtifactStartGameRuleComponent>
{
[Dependency] private readonly GameTicker _gameTicker = default!;
protected override void OnActivated(Entity<ArtifactStartGameRuleComponent> ent, ref XenoArtifactNodeActivatedEvent args)
{
foreach (var (rule, amount) in ent.Comp.Rules)
{
for (var i = 0; i < amount; i++)
{
_gameTicker.StartGameRule(rule);
}
}
}
}

View file

@ -0,0 +1,10 @@
using Content.Shared.Whitelist;
namespace Content.Server._Sunrise.Research.Artifact.Effects.WhitelistSwap;
[RegisterComponent]
public sealed partial class ArtifactWhitelistSwapComponent : Component
{
[DataField(required: true)]
public EntityWhitelist TargetWhitelist;
}

View file

@ -0,0 +1,31 @@
using System.Linq;
using Content.Server._Sunrise.Helpers;
using Content.Shared.Humanoid;
using Content.Shared.Whitelist;
using Content.Shared.Xenoarchaeology.Artifact;
using Content.Shared.Xenoarchaeology.Artifact.XAE;
using Robust.Server.GameObjects;
using Robust.Shared.Random;
namespace Content.Server._Sunrise.Research.Artifact.Effects.WhitelistSwap;
public sealed class ArtifactWhitelistSwapSystem : BaseXAESystem<ArtifactWhitelistSwapComponent>
{
[Dependency] private readonly TransformSystem _transform = default!;
[Dependency] private readonly EntityWhitelistSystem _whitelist = default!;
[Dependency] private readonly SunriseHelpersSystem _sunriseHelpers = default!;
[Dependency] private readonly IRobustRandom _random = default!;
protected override void OnActivated(Entity<ArtifactWhitelistSwapComponent> ent, ref XenoArtifactNodeActivatedEvent args)
{
var humans = _sunriseHelpers.GetAll<HumanoidAppearanceComponent, TransformComponent>().ToList();
var targets = _sunriseHelpers.GetAll<TransformComponent>()
.Where(e => _whitelist.IsWhitelistPassOrNull(ent.Comp.TargetWhitelist, e))
.ToList();
var ent1 = _random.PickAndTake(humans);
var ent2 = _random.PickAndTake(targets);
_transform.SwapPositions((ent1, ent1.Comp2), (ent2, ent2));
}
}

View file

@ -0,0 +1,7 @@
namespace Content.Server._Sunrise.Research.Artifact.Triggers.HealthAnalyzerInteraction;
[RegisterComponent]
public sealed partial class ArtifactHealthAnalyzerInteractionTriggerComponent : Component
{
}

View file

@ -0,0 +1,25 @@
using Content.Shared._Sunrise.Research.Artifact;
using Content.Shared.Xenoarchaeology.Artifact.Components;
using Content.Shared.Xenoarchaeology.Artifact.XAT;
namespace Content.Server._Sunrise.Research.Artifact.Triggers.HealthAnalyzerInteraction;
public sealed class ArtifactHealthAnalyzerInteractionTriggerSystem : BaseXATSystem<ArtifactHealthAnalyzerInteractionTriggerComponent>
{
public override void Initialize()
{
base.Initialize();
XATSubscribeDirectEvent<EntityAnalyzedEvent>(OnAnalyzed);
}
private void OnAnalyzed(Entity<XenoArtifactComponent> artifact, Entity<ArtifactHealthAnalyzerInteractionTriggerComponent, XenoArtifactNodeComponent> node, ref EntityAnalyzedEvent args)
{
if (args.Handled)
return;
Trigger(artifact, node);
args.Handled = true;
}
}

View file

@ -0,0 +1,18 @@
namespace Content.Shared._Sunrise.Helpers;
public static class DictionaryExtensions
{
public static void AddOrIncrement<TKey>(this Dictionary<TKey, int> dict, TKey key, int increment = 1)
where TKey : notnull
{
if (dict.TryGetValue(key, out var currentValue))
{
dict[key] = currentValue + increment;
}
else
{
dict[key] = increment;
}
}
}

View file

@ -0,0 +1,104 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
namespace Content.Shared._Sunrise.Helpers;
public abstract partial class SharedSunriseHelpersSystem : EntitySystem
{
#region Percente
/// <summary>
/// Возвращает список с данным процентным соотношением
/// </summary>
/// <param name="sourceList">Исходный список</param>
/// <param name="percentage">Процент от 0 до 100</param>
/// <typeparam name="T">Компонент</typeparam>
[Obsolete]
public IEnumerable<T> GetPercentageOfHashSet<T>(IReadOnlyCollection<T> sourceList, float percentage) where T : IComponent
{
var countToAdd = (int) Math.Round((double) sourceList.Count * percentage / 100);
return sourceList.Where(t => !Transform(t.Owner).Anchored).Take(countToAdd).ToHashSet();
}
/// <summary>
/// Возвращает список с данным процентным соотношением
/// </summary>
/// <param name="sourceList">Исходный список</param>
/// <param name="percentage">Процент от 0 до 100</param>
/// <typeparam name="T">Ентити с компонентом</typeparam>
public IEnumerable<Entity<T>> GetPercentageOfHashSet<T>(IReadOnlyCollection<Entity<T>> sourceList, float percentage) where T : IComponent
{
var countToAdd = (int) Math.Round((double) sourceList.Count * percentage / 100);
return sourceList.Where(e => !Transform(e).Anchored).Take(countToAdd).ToHashSet();
}
/// <summary>
/// Возвращает список с данным процентным соотношением
/// </summary>
/// <param name="sourceList">Исходный список</param>
/// <param name="percentage">Процент от 0 до 100</param>
public IEnumerable<EntityUid> GetPercentageOfHashSet(IReadOnlyCollection<EntityUid> sourceList, float percentage)
{
var countToAdd = (int) Math.Round((double) sourceList.Count * percentage / 100);
return sourceList.Where(e => !Transform(e).Anchored).Take(countToAdd).ToHashSet();
}
#endregion
#region Get All/First entity
/// <summary>
/// Получает все список всех ентити с компонентами и возвращает.
/// Удобно для использования, так как не требует засорять код лишним циклом
/// </summary>
/// <typeparam name="T1">Компонент 1</typeparam>
/// <typeparam name="T2">Компонент 2</typeparam>
/// <remarks>Список может быть пустым, если ничего не найдено</remarks>
/// <returns>Полный список всех ентити в игре с данными компонентами</returns>
public IEnumerable<Entity<T1, T2>> GetAll<T1, T2>() where T1 : IComponent where T2 : IComponent
{
var query = EntityManager.AllEntityQueryEnumerator<T1, T2>();
while (query.MoveNext(out var uid, out var component1, out var component2))
{
yield return (uid, component1, component2);
}
}
/// <summary>
/// Получает все список всех ентити с компонентом и возвращает.
/// Удобно для использования, так как не требует засорять код лишним циклом
/// </summary>
/// <typeparam name="T">Компонент</typeparam>
/// <remarks>Список может быть пустым, если ничего не найдено</remarks>
/// <returns>Полный список всех ентити в игре с данным компонентом</returns>
public IEnumerable<Entity<T>> GetAll<T>() where T : IComponent
{
var query = EntityManager.AllEntityQueryEnumerator<T>();
while (query.MoveNext(out var uid, out var component))
{
yield return (uid, component);
}
}
/// <summary>
/// Возвращает первый попавшийся ентити с данным компонентом
/// </summary>
/// <param name="entity">Возвращаемый ентити</param>
/// <typeparam name="T">Компонент</typeparam>
/// <returns>Первый попавшийся ентити с данным компонентом</returns>
public bool TryGetFirst<T>([NotNullWhen(true)] out Entity<T>? entity) where T : IComponent
{
entity = null;
var query = EntityManager.AllEntityQueryEnumerator<T>();
while (query.MoveNext(out var uid, out var component))
{
entity = (uid, component);
return true;
}
return false;
}
#endregion
}

View file

@ -0,0 +1,10 @@
using Robust.Shared.GameStates;
namespace Content.Shared._Sunrise.Misc;
/// <summary>
/// Компонент маркер, что данная цель смешная.
/// Используется в <see cref="ArtifactWhitelistSwapSystem"/>
/// </summary>
[RegisterComponent, NetworkedComponent]
public sealed partial class ArtifactFunnyTargetComponent : Component;

View file

@ -0,0 +1,3 @@
namespace Content.Shared._Sunrise.Research.Artifact;
public sealed partial class EntityAnalyzedEvent : HandledEntityEventArgs;

View file

@ -0,0 +1,3 @@
artifact-trigger-hint-health-analyzer = Сканирование
artifact-effect-hint-data-deleted = ██████████ █████

View file

@ -416,6 +416,7 @@
name: lead-lined box
parent: BoxCardboard
suffix: DEBUG
categories: [ Debug ] # Sunrise added
id: BoxLeadLined
description: This box stymies the transmission of harmful radiation.
components:

View file

@ -111,6 +111,7 @@
parent: CrateEngineering
name: generator crate
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: StorageFill
contents:

View file

@ -349,6 +349,7 @@
name: wackpack
description: What the fuck is this?
suffix: Debug
categories: [ Debug ] # Sunrise added
components:
- type: Storage
grid:
@ -365,6 +366,7 @@
name: big wackpack
description: What the fuck is this?
suffix: Debug
categories: [ Debug ] # Sunrise added
components:
- type: Storage
grid:
@ -376,6 +378,7 @@
name: gay wackpack
description: What the fuck is this?
suffix: Debug
categories: [ Debug ] # Sunrise added
components:
- type: Storage
grid:
@ -397,6 +400,7 @@
name: offset wackpack
description: What the fuck is this?
suffix: Debug
categories: [ Debug ] # Sunrise added
components:
- type: Storage
grid:

View file

@ -4,6 +4,7 @@
id: WeaponPistolDebug
description: ded
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Tag
tags:
@ -46,6 +47,7 @@
name: bang, ded mag
parent: BaseMagazinePistol
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Tag
tags:
@ -76,6 +78,7 @@
name: bang, ded cartridge
parent: BaseCartridgePistol
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Tag
tags:
@ -89,6 +92,7 @@
id: MeleeDebugGib
description: hit hard ye
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Tag
tags:

View file

@ -4,6 +4,7 @@
name: meth # beer it is. coffee. beer? coff-ee? be-er? c-o... b-e
description: Just a whole glass of meth.
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Tag
tags:

View file

@ -4,6 +4,7 @@
name: weirdly shaped item
description: What is it...?
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Tag
tags:

View file

@ -1,6 +1,7 @@
- type: entity
id: OptionsVisualizerTest
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Tag
tags:

View file

@ -4,6 +4,7 @@
id: ToolDebug
description: The pain of using this is almost too great to bear.
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Tag
tags:

View file

@ -2,6 +2,7 @@
id: StressTest
name: stress test
suffix: DEBUG
categories: [ Debug, HideSpawnMenu ] # Sunrise added
components:
- type: Tag
tags:

View file

@ -3,6 +3,7 @@
id: SpawnMobHuman
parent: MarkerBase
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Sprite
layers:

View file

@ -4,6 +4,9 @@
id: NukeDisk
description: A nuclear auth disk, capable of arming a nuke if used along with a code. Note from nanotrasen reads "THIS IS YOUR MOST IMPORTANT POSESSION, SECURE DAT FUKKEN DISK!"
components:
# Sunrise added start
- type: ArtifactFunnyTarget
# Sunrise added end
- type: NukeDisk
- type: SpecialRespawn
prototype: NukeDisk

View file

@ -2,7 +2,7 @@
id: DebugMechEquipment
abstract: true
suffix: DEBUG
categories: [ HideSpawnMenu ]
categories: [ HideSpawnMenu, Debug ] # Sunrise edit
components:
- type: Tag
tags:

View file

@ -35,7 +35,7 @@
id: ResearchDiskDebug
name: research point disk
suffix: DEBUG, DO NOT MAP
categories: [ DoNotMap ]
categories: [ DoNotMap, Debug ] # Sunrise edit
description: A disk for the R&D server containing all the points you could ever need.
components:
- type: ResearchDisk

View file

@ -55,12 +55,17 @@
- type: XenoArtifact
effectsTable: !type:GroupSelector
children:
# Sunrise edit start - новые смешные эффекты
- !type:NestedSelector
tableId: XenoArtifactEffectsDefaultTable
weight: 54
tableId: SunriseArtifactEffectsDefaultTable
weight: 3
- !type:NestedSelector
tableId: XenoArtifactEffectsHandheldOnlyTable
weight: 2
tableId: SunriseArtifactEffectsVanillaDefaultReducedTable
weight: 3
- !type:NestedSelector
tableId: SunriseArtifactEffectsUltraFunnyTable
weight: 1
# Sunrise edit end
- type: entity
parent: BaseXenoArtifactItem

View file

@ -24,8 +24,19 @@
- Xenoarchaeology
# gameplay interactions
- type: XenoArtifact
effectsTable: !type:NestedSelector
tableId: XenoArtifactEffectsDefaultTable
# Sunrise edit start - новые смешные эффекты
effectsTable: !type:GroupSelector
children:
- !type:NestedSelector
tableId: SunriseArtifactEffectsDefaultTable
weight: 3
- !type:NestedSelector
tableId: SunriseArtifactEffectsVanillaDefaultReducedTable
weight: 3
- !type:NestedSelector
tableId: SunriseArtifactEffectsUltraFunnyTable
weight: 1
# Sunrise edit end
- type: Damageable
- type: Actions
- type: Physics

View file

@ -136,6 +136,7 @@
parent: BaseUplinkRadio
id: BaseUplinkRadioDebug
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Store
balance:

View file

@ -792,6 +792,7 @@
name: table
description: PUT ON THEM CODERSOCKS!!
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Tag
tags:

View file

@ -147,6 +147,7 @@
id: DebugHardBomb
name: debug bomb
suffix: DEBUG
categories: [ Debug ] # Sunrise added
description: Holy shit this is gonna explode.
components:
- type: Defusable

View file

@ -2,6 +2,7 @@
id: DebugGenerator
parent: BaseGenerator
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: PowerSupplier
supplyRate: 300000
@ -15,6 +16,7 @@
id: DebugConsumer
name: consumer
suffix: DEBUG
categories: [ Debug ] # Sunrise added
placement:
mode: SnapgridCenter
components:
@ -60,6 +62,7 @@
id: DebugBatteryStorage
name: battery storage
suffix: DEBUG
categories: [ Debug ] # Sunrise added
placement:
mode: SnapgridCenter
components:
@ -93,6 +96,7 @@
id: DebugBatteryDischarger
name: battery discharger
suffix: DEBUG
categories: [ Debug ] # Sunrise added
placement:
mode: SnapgridCenter
components:
@ -128,6 +132,7 @@
id: DebugSMES
parent: BaseSMES
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Tag
tags:
@ -146,6 +151,7 @@
id: DebugAPC
parent: BaseAPC
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Tag
tags:
@ -155,6 +161,7 @@
id: DebugPowerReceiver
name: power receiver
suffix: DEBUG
categories: [ Debug ] # Sunrise added
placement:
mode: SnapgridCenter
components:

View file

@ -116,6 +116,7 @@
id: DebugThruster
parent: BaseThruster
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Thruster
requireSpace: false
@ -215,6 +216,7 @@
id: DebugGyroscope
parent: BaseThruster
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Thruster
thrusterType: Angular

View file

@ -225,6 +225,7 @@
id: WallDebug
name: debug wall
suffix: DEBUG
categories: [ Debug ] # Sunrise added
components:
- type: Tag
tags:

View file

@ -15,6 +15,9 @@
special:
- !type:AddComponentSpecial
components:
# Sunrise added start
- type: ArtifactFunnyTarget
# Sunrise added end
- type: Clumsy
gunShootFailDamage:
types: #literally just picked semi random valus. i tested this once and tweaked it.

View file

@ -15,6 +15,9 @@
special:
- !type:AddComponentSpecial
components:
# Sunrise added start
- type: ArtifactFunnyTarget
# Sunrise added end
- type: MimePowers
preventWriting: true
- type: FrenchAccent

View file

@ -34,6 +34,9 @@
implants: [ MindShieldImplant, TrackingImplant, DeathRattleImplantBlueShield ]
- !type:AddComponentSpecial
components:
# Sunrise added start
- type: ArtifactFunnyTarget
# Sunrise added end
- type: CommandStaff
speciesBlacklist:
- Vox # Sunrise-Edit

View file

@ -142,7 +142,7 @@
- type: entity
id: BaseXenoArtifactEffect
name: effect
description: Неизвестно
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ]
abstract: true
components:
@ -154,7 +154,7 @@
id: BaseOneTimeXenoArtifactEffect
parent: BaseXenoArtifactEffect
name: one-time-effect
description: Неизвестно
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ]
abstract: true
components:
@ -169,7 +169,8 @@
- type: entity
id: XenoArtifactEffectUniversalIntercom
parent: BaseOneTimeXenoArtifactEffect
description: Обретает трансмогрификационные свойства
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
components:
@ -198,7 +199,8 @@
- type: entity
id: XenoArtifactBecomeRandomInstrument
parent: BaseOneTimeXenoArtifactEffect
description: Становится музыкальным инструментом
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
components:
@ -211,7 +213,8 @@
- type: entity
id: XenoArtifactStorage
parent: BaseOneTimeXenoArtifactEffect
description: Появляется скрытое хранилище
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
components:
@ -225,14 +228,16 @@
- type: entity
id: XenoArtifactPhasing
parent: BaseOneTimeXenoArtifactEffect
description: Теряет колизию
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAERemoveCollision
- type: entity
id: XenoArtifactWandering
parent: BaseOneTimeXenoArtifactEffect
description: Начинает спонтанно двигаться
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
components:
@ -245,7 +250,8 @@
- type: entity
id: XenoArtifactSolutionStorage
parent: BaseOneTimeXenoArtifactEffect
description: Обретает свойства кувшина
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
components:
@ -273,7 +279,8 @@
- type: entity
id: XenoArtifactSpeedUp
parent: BaseOneTimeXenoArtifactEffect
description: Увеличивает скорость движения держателя
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
components:
@ -284,7 +291,8 @@
- type: entity
id: XenoArtifactDrill
parent: BaseOneTimeXenoArtifactEffect
description: Обретает свойства бура
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
components:
@ -300,7 +308,8 @@
- type: entity
id: XenoArtifactGenerateEnergy
parent: BaseOneTimeXenoArtifactEffect # todo - increment power, but only once per node
description: Излучает энергию
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
components:
@ -316,7 +325,8 @@
- type: entity
id: XenoArtifactGun
parent: BaseOneTimeXenoArtifactEffect
description: Обретает свойства оружия
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -347,7 +357,8 @@
- type: entity
id: XenoArtifactGhost
parent: BaseOneTimeXenoArtifactEffect
description: Становится разумным
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
components:
@ -367,7 +378,8 @@
- type: entity
id: XenoArtifactOmnitool
parent: BaseOneTimeXenoArtifactEffect
description: Получается свойства омнитула
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
components:
@ -414,7 +426,8 @@
- type: entity
id: XenoArtifactEffectBadFeeling
parent: BaseXenoArtifactEffect
description: Передаёт сообщение
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAETelepathic
messages:
@ -444,7 +457,8 @@
- type: entity
id: XenoArtifactEffectGoodFeeling
parent: BaseXenoArtifactEffect
description: Передаёт сообщение
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAETelepathic
messages:
@ -473,7 +487,8 @@
- type: entity
id: XenoArtifactEffectJunkSpawn
parent: BaseXenoArtifactEffect
description: Создаёт мусор
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -496,14 +511,16 @@
- type: entity
id: XenoArtifactEffectLightFlicker
parent: BaseXenoArtifactEffect
description: Создаёт незначительные электромагнитные помехи
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAELightFlicker
- type: entity
id: XenoArtifactPotassiumWave
parent: BaseXenoArtifactEffect
description: Создаёт калий
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -530,7 +547,8 @@
- type: entity
id: XenoArtifactFloraSpawn
parent: BaseXenoArtifactEffect
description: Создаёт флору
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -545,7 +563,8 @@
- type: entity
id: XenoArtifactChemicalPuddle
parent: BaseXenoArtifactEffect
description: Создаёт лужу из химикатов # todo: make description say what exact chemical is produced, maybe add mixes into possible chemicals
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAECreatePuddle
chemAmount:
@ -581,14 +600,16 @@
- type: entity
id: XenoArtifactThrowThingsAround
parent: BaseXenoArtifactEffect
description: Создаёт незначительный взрыв
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEThrowThingsAround
- type: entity
id: XenoArtifactColdWave
parent: BaseXenoArtifactEffect
description: Охлаждает атмосферу вокруг
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAETemperature
targetTemp: 50
@ -596,7 +617,8 @@
- type: entity
id: XenoArtifactHeatWave
parent: BaseXenoArtifactEffect
description: Сильно нагревает окружающую атмосферу
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAETemperature
targetTemp: 500
@ -604,7 +626,8 @@
- type: entity
id: XenoArtifactFoamMild
parent: BaseXenoArtifactEffect
description: Создаёт пену из химикатов # todo: separate in 1 for each chemical for description? actually sounds like a very good idea
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEFoam
replaceDescription: true
@ -624,7 +647,8 @@
- type: entity
id: XenoArtifactRandomInstrumentSpawn
parent: BaseXenoArtifactEffect
description: Создаёт музыкальный инструмент
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 2
@ -644,7 +668,8 @@
- type: entity
id: XenoArtifactMonkeySpawn
parent: BaseXenoArtifactEffect
description: Создаёт обезьяну
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 3
@ -667,7 +692,8 @@
- type: entity
id: XenoArtifactRadioactive
parent: BaseOneTimeXenoArtifactEffect
description: Становится радиоактивным
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -680,7 +706,8 @@
- type: entity
id: XenoArtifactChargeBattery
parent: BaseXenoArtifactEffect
description: Заряжает батарейки
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEChargeBattery
- type: XAETelepathic
@ -690,7 +717,8 @@
- type: entity
id: XenoArtifactKnock
parent: BaseXenoArtifactEffect
description: Создаёт слабые электромагнитные помехи
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEKnock
- type: XAELightFlicker
@ -698,7 +726,8 @@
- type: entity
id: XenoArtifactMagnet
parent: BaseOneTimeXenoArtifactEffect
description: Создаёт небольшой гравитационный колодец
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -712,7 +741,8 @@
- type: entity
id: XenoArtifactMagnetNegative
parent: BaseOneTimeXenoArtifactEffect
description: Создаёт небольшой гравитационный колодец
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -726,7 +756,8 @@
- type: entity
id: XenoArtifactStealth
parent: BaseOneTimeXenoArtifactEffect
description: Создаёт световую интерференцию
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
components:
@ -740,7 +771,8 @@
- type: entity
id: XenoArtifactRareMaterialSpawn
parent: BaseXenoArtifactEffect # todo: splice into different well-named effects, amounts should reflect how rare material is
description: Создаёт редкие материалы
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -770,7 +802,8 @@
- type: entity
id: XenoArtifactRareMaterialSpawnSilver
parent: BaseXenoArtifactEffect
description: Создаёт редкие материалы
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 4
@ -793,7 +826,8 @@
- type: entity
id: XenoArtifactRareMaterialSpawnPlasma
parent: BaseXenoArtifactEffect
description: Создаёт твёрдую плазму
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 4
@ -816,7 +850,8 @@
- type: entity
id: XenoArtifactRareMaterialSpawnGold
parent: BaseXenoArtifactEffect
description: Создаёт золото
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 3
@ -839,7 +874,8 @@
- type: entity
id: XenoArtifactRareMaterialSpawnUranium
parent: BaseXenoArtifactEffect
description: Создаёт уран
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 4
@ -862,7 +898,8 @@
- type: entity
id: XenoArtifactAngryCarpSpawn
parent: BaseXenoArtifactEffect
description: Создаёт агресивную рыбу
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 3
@ -885,7 +922,8 @@
- type: entity
id: XenoArtifactFaunaSpawn
parent: BaseXenoArtifactEffect
description: Создаёт дружелюбную фауну
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 4
@ -940,7 +978,8 @@
- type: entity
id: XenoArtifactCashSpawn
parent: BaseXenoArtifactEffect
description: Создаёт деньги
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 2
@ -969,7 +1008,8 @@
- type: entity
id: XenoArtifactShatterWindows
parent: BaseXenoArtifactEffect
description: Ломает окна
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 3
@ -988,7 +1028,8 @@
- type: entity
id: XenoArtifactFoamGood
parent: BaseXenoArtifactEffect
description: Создает волну полезной пены
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 7
@ -1009,7 +1050,8 @@
- type: entity
id: XenoArtifactFoamDangerous
parent: BaseXenoArtifactEffect
description: Создает волну вредной пены
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEFoam
minFoamAmount: 20
@ -1031,7 +1073,8 @@
- type: entity
id: XenoArtifactPuddleRare
parent: BaseXenoArtifactEffect
description: Создает лужу полезных химикатов
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAECreatePuddle
chemAmount:
@ -1061,7 +1104,8 @@
- type: entity
id: XenoArtifactAnomalySpawn
parent: BaseOneTimeXenoArtifactEffect
description: Создаёт аномалию
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -1076,7 +1120,8 @@
- type: entity
id: XenoArtifactIgnite
parent: BaseXenoArtifactEffect
description: Делает пирокинез
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEIgnite
range: 7
@ -1087,14 +1132,16 @@
- type: entity
id: XenoArtifactTeleport
parent: BaseXenoArtifactEffect
description: Делает телепортацию
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAERandomTeleportInvoker
- type: entity
id: XenoArtifactEmp
parent: BaseXenoArtifactEffect
description: Создаёт опасные электромагнитные помехи
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 5
@ -1106,14 +1153,16 @@
- type: entity
id: XenoArtifactPolyMonkey
parent: BaseXenoArtifactEffect
description: Временно преобразозует плоть в мех
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEPolymorph
- type: entity
id: XenoArtifactPolyLizard
parent: BaseXenoArtifactEffect
description: Временно изменяет форму плоти в соответствии с масштабом
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEPolymorph
polymorphPrototypeName: ArtifactLizard
@ -1121,7 +1170,8 @@
- type: entity
id: XenoArtifactPolyLuminous
parent: BaseXenoArtifactEffect
description: Временно преобразовать плоть в свет
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEPolymorph
polymorphPrototypeName: ArtifactLuminous
@ -1129,7 +1179,8 @@
- type: entity
id: XenoArtifactRadioactiveStrong
parent: BaseOneTimeXenoArtifactEffect
description: Становиться сильно радиоактивным
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -1142,7 +1193,8 @@
- type: entity
id: XenoArtifactMaterialSpawnGlass
parent: BaseXenoArtifactEffect
description: Создаёт стекло
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -1157,7 +1209,8 @@
- type: entity
id: XenoArtifactMaterialSpawnSteel
parent: BaseXenoArtifactEffect
description: Создаёт сталь
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -1172,7 +1225,8 @@
- type: entity
id: XenoArtifactMaterialSpawnPlastic
parent: BaseXenoArtifactEffect
description: Создаёт пластик
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -1187,14 +1241,16 @@
- type: entity
id: XenoArtifactPortal
parent: BaseXenoArtifactEffect
description: Создаёт кратковременный блюспейс портал
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEPortal
- type: entity
id: XenoArtifactArtifactSpawn
parent: BaseXenoArtifactEffect
description: Создаёт артефакт
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XenoArtifactNode
maxDurability: 2
@ -1214,7 +1270,8 @@
- type: entity
id: XenoArtifactShuffle
parent: BaseXenoArtifactEffect
description: Меняет местами разумные существа #not ALL beings, but oh well...
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEShuffle
- type: XAETelepathic
@ -1225,7 +1282,8 @@
- type: entity
id: XenoArtifactHealAll
parent: BaseXenoArtifactEffect
description: Чудесно излечивает всех существ рядом
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEDamageInArea
damageChance: 1
@ -1241,7 +1299,8 @@
- type: entity
id: XenoArtifactTesla
parent: BaseOneTimeXenoArtifactEffect
description: Полномасштабные разрушения
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -1256,7 +1315,8 @@
- type: entity
id: XenoArtifactSingularity
parent: BaseOneTimeXenoArtifactEffect
description: Полномасштабные разрушения
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
@ -1271,7 +1331,8 @@
- type: entity
id: XenoArtifactExplosionScary
parent: BaseOneTimeXenoArtifactEffect
description: Создаёт маломасштабную высокоскоростную ядерную реакцию
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAETriggerExplosives
- type: Explosive
@ -1286,7 +1347,8 @@
- type: entity
id: XenoArtifactBoom
parent: BaseOneTimeXenoArtifactEffect
description: Создаёт взрыв
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAETriggerExplosives
- type: Explosive
@ -1300,7 +1362,8 @@
- type: entity
id: XenoArtifactEffectCreationGasPlasma
parent: BaseXenoArtifactEffect
description: Создаёт газообразную плазму
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAECreateGas
gases:
@ -1309,7 +1372,8 @@
- type: entity
id: XenoArtifactEffectCreationGasTritium
parent: BaseXenoArtifactEffect
description: Создаёт газообразный тритий
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAECreateGas
gases:
@ -1318,7 +1382,8 @@
- type: entity
id: XenoArtifactEffectCreationGasAmmonia
parent: BaseXenoArtifactEffect
description: Создаёт аммиак
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAECreateGas
gases:
@ -1327,7 +1392,8 @@
- type: entity
id: XenoArtifactEffectCreationGasFrezon
parent: BaseXenoArtifactEffect
description: Создаёт фрезон
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAECreateGas
gases:
@ -1336,7 +1402,8 @@
- type: entity
id: XenoArtifactEffectCreationGasNitrousOxide
parent: BaseXenoArtifactEffect
description: Создаёт оксид азота
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAECreateGas
gases:
@ -1345,7 +1412,8 @@
- type: entity
id: XenoArtifactEffectCreationGasCarbonDioxide
parent: BaseXenoArtifactEffect
description: Создаёт углекислый газ
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAECreateGas
gases:
@ -1355,7 +1423,8 @@
- type: entity
id: XenoArtifactEffectCreationGasBZ
parent: BaseXenoArtifactEffect
description: Создаёт БЗ
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAECreateGas
gases:
@ -1364,7 +1433,8 @@
- type: entity
id: XenoArtifactEffectCreationGasHealium
parent: BaseXenoArtifactEffect
description: Создаёт хилиум
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAECreateGas
gases:
@ -1373,7 +1443,8 @@
- type: entity
id: XenoArtifactEffectCreationGasNitrium
parent: BaseXenoArtifactEffect
description: Создаёт нитриум
description: artifact-effect-hint-data-deleted # Sunrise edit
categories: [ HideSpawnMenu ] # Sunrise added
components:
- type: XAECreateGas
gases:

View file

@ -48,6 +48,7 @@
parent: MechPaintBase
suffix: DEBUG, Ripley, Aluminizer
id: MechPaintRipleyAluminizer
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
@ -78,6 +79,7 @@
parent: MechPaintBase
suffix: DEBUG, Ripley, Combat Ripley
id: MechPaintRipleyCombatRipley
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
@ -108,6 +110,7 @@
parent: MechPaintBase
suffix: DEBUG, Ripley, Firestarter
id: MechPaintRipleyFirestarter
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
@ -138,6 +141,7 @@
parent: MechPaintBase
suffix: DEBUG, Ripley, Hauler
id: MechPaintRipleyHauler
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
@ -168,6 +172,7 @@
parent: MechPaintBase
suffix: DEBUG, Ripley, Reaper
id: MechPaintRipleyReaper
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
@ -198,6 +203,7 @@
parent: MechPaintBase
suffix: DEBUG, Ripley, Zairjah
id: MechPaintRipleyZairjah
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
@ -259,6 +265,7 @@
parent: MechPaintBase
suffix: DEBUG, Clarke, Orangey
id: MechPaintClarkeOrangey
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/clarke.rsi
@ -289,6 +296,7 @@
parent: MechPaintBase
suffix: DEBUG, Gygax, Molot
id: MechPaintGygaxMolot
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/gygax.rsi
@ -319,6 +327,7 @@
parent: MechPaintBase
suffix: DEBUG, Gygax, Contraband
id: MechPaintGygaxBlack
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/gygax.rsi
@ -349,6 +358,7 @@
parent: MechPaintBase
suffix: DEBUG, Gygax, Legal
id: MechPaintGygaxWhite
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/gygax.rsi
@ -379,6 +389,7 @@
parent: MechPaintBase
suffix: DEBUG, Gygax, Pirate
id: MechPaintGygaxPirate
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/gygax.rsi
@ -410,6 +421,7 @@
parent: MechPaintBase
suffix: DEBUG, Gygax, Old
id: MechPaintGygaxOld
categories: [ Debug ]
components:
- type: Sprite
sprite: Objects/Fun/spraycans.rsi
@ -440,6 +452,7 @@
parent: MechPaintBase
suffix: DEBUG, Durand, Unathi
id: MechPaintDurandUnathi
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi
@ -470,6 +483,7 @@
parent: MechPaintBase
suffix: DEBUG, Durand , Shire
id: MechPaintDurandShire
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi
@ -500,6 +514,7 @@
parent: MechPaintBase
suffix: DEBUG, Durand , Dollhouse
id: MechPaintDurandDollhouse
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi
@ -530,6 +545,7 @@
parent: MechPaintBase
suffix: DEBUG, Durand , Executor
id: MechPaintDurandExecutor
categories: [ Debug ]
components:
- type: Sprite
sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi
@ -559,6 +575,7 @@
- type: entity
parent: MechPaintBase
suffix: DEBUG, Mauler , Meowler
categories: [ Debug ]
id: MechPaintMaulerMeowler
components:
- type: Sprite

View file

@ -208,7 +208,7 @@
parent: WeaponMeleeMoltenCollider
id: WeaponMeleeMoltenColliderDEBUG
suffix: DEBUG
categories: [ HideSpawnMenu ]
categories: [ HideSpawnMenu, Debug ]
components:
- type: MeleeWeapon
damage:

View file

@ -0,0 +1,66 @@
- type: polymorph
id: SunriseEffectChair
configuration:
entity: ChairFolding
forced: true
transferName: false
transferHumanoidAppearance: false
inventory: None
revertOnDeath: true
revertOnCrit: true
revertOnEat: true
duration: 120
- type: polymorph
id: SunriseEffectWatermelon
configuration:
entity: FoodWatermelon
forced: true
transferName: false
transferHumanoidAppearance: false
inventory: None
revertOnDeath: true
revertOnCrit: true
revertOnEat: true
duration: 120
- type: polymorph
id: SunriseEffectAppendix
configuration:
entity: OrganHumanAppendix
forced: true
transferName: false
transferHumanoidAppearance: false
inventory: None
revertOnDeath: true
revertOnCrit: true
revertOnEat: true
duration: 120
- type: polymorph
id: SunriseEffectDisposal
configuration:
entity: DisposalUnit
forced: true
transferName: false
transferHumanoidAppearance: false
inventory: None
revertOnDeath: true
revertOnCrit: true
revertOnEat: true
duration: 120
- type: polymorph
id: SunriseEffectTable
configuration:
entity: Table
forced: true
transferName: false
transferHumanoidAppearance: false
inventory: None
revertOnDeath: true
revertOnCrit: true
revertOnEat: true
duration: 120
# TODO: отдельные СМЕШНЫЕ полиморфы для LUST STATION

View file

@ -0,0 +1,306 @@
# Базовые эффекты
- type: entity
id: SunriseEffectHeal
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEDamageInArea
damageChance: 1
radius: 8
whitelist:
components:
- MobState
damage:
groups:
Brute: -300
Burn: -300
- type: entity
id: SunriseArtifactGenerateEnergy
parent: BaseOneTimeXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEApplyComponents
components:
- type: PowerSupplier
supplyRate: 20000
- type: NodeContainer
examinable: true
nodes:
output_hv:
!type:CableDeviceNode
nodeGroupID: HVPower
- type: entity
id: SunriseArtifactWandering
parent: BaseOneTimeXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEApplyComponents
components:
- type: RandomWalk
minSpeed: 12
maxSpeed: 20
minStepCooldown: 1
maxStepCooldown: 3
- type: entity
id: SunriseArtifactThrowThingsAround
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEThrowThingsAround
- type: entity
id: SunriseArtifactKnock
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEKnock
- type: XAELightFlicker
- type: entity
id: SunriseArtifactEffectJunkSpawn
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEApplyComponents
applyIfAlreadyHave: true
refreshOnReactivate: true
components:
- type: EntityTableSpawner
deleteSpawnerAfterSpawn: false
offset: 5
table: !type:GroupSelector
rolls: !type:RangeNumberSelector
range: 10, 40
children:
- !type:NestedSelector
tableId: GenericTrashItems
weight: 35
- type: entity
id: SunriseArtifactShatterWindows
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XenoArtifactNode
maxDurability: 3
maxDurabilityCanDecreaseBy:
min: 0
max: 2
- type: XAEDamageInArea
damageChance: 0.75
whitelist:
tags:
- Window
damage:
types:
Structural: 200
- type: entity
id: SunriseEffectBoltAirlocks
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: ArtifactBoltAirlocks
- type: entity
id: SunriseArtifactHunger
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: ArtifactModifyHunger
- type: entity
id: SunriseEffectThirst
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: ArtifactModifyThirst
- type: entity
id: SunriseEffectTeslaDischarge
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEApplyComponents
components:
- type: LightningArcShooter
maxLightningArc: 4
shootMaxInterval: 4
shootRange: 6
- type: TimedRemoveComponents
removeAfter: 10
components:
- type: LightningArcShooter
- type: entity
id: SunriseEffectSpawnEvilTwin
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: ArtifactStartGameRule
rules:
EvilTwinSpawn: 2
- type: entity
id: SunriseArtifactTeleport
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEApplyComponents
components:
- type: XAERandomTeleportInvoker
- type: entity
id: SunriseArtifactEmp
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XenoArtifactNode
maxDurability: 5
maxDurabilityCanDecreaseBy:
min: 0
max: 3
- type: XAEEmpInArea
- type: entity
id: SunriseEffectIgnite
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEIgnite
range: 7
fireStack:
min: 3
max: 6
- type: entity
id: SunriseEffectShuffleUltra
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEShuffle
radius: 70
- type: entity
id: SunriseEffectPolyChair
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEPolymorph
polymorphPrototypeName: SunriseEffectChair
- type: entity
id: SunriseEffectPolyWatermelon
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEPolymorph
polymorphPrototypeName: SunriseEffectWatermelon
- type: entity
id: SunriseEffectPolyAppendix
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEPolymorph
polymorphPrototypeName: SunriseEffectAppendix
- type: entity
id: SunriseEffectPolyDisposal
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEPolymorph
polymorphPrototypeName: SunriseEffectDisposal
- type: entity
id: SunriseEffectPolyTable
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEPolymorph
polymorphPrototypeName: SunriseEffectTable
- type: entity
id: SunriseEffectSwap
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: ArtifactWhitelistSwap
targetWhitelist:
components:
- ArtifactFunnyTarget
- type: entity
id: SunriseEffectRandomTransformation
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: ArtifactRandomTransformation
prototypeBlacklist:
- Singularity
- TeslaEnergyBall
- TeslaMiniEnergyBall
categoryBlacklist:
- HideSpawnMenu
- Debug
- Spawner
- type: entity
id: SunriseEffectMagnetUltra
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: XAEApplyComponents
components:
- type: GravityWell
maxRange: 80
baseRadialAcceleration: 90
- type: TimedRemoveComponents
components:
- type: GravityWell
- type: entity
id: SunriseEffectShiftedAsciiTableAccent
parent: BaseXenoArtifactEffect
description: artifact-effect-hint-data-deleted
categories: [ HideSpawnMenu ]
components:
- type: AddComponentsInRadius
whitelist:
components:
- HumanoidAppearance
components:
- type: AnomalyAccent
- type: TimedRemoveComponents
removeAfter: 600
components:
- type: AnomalyAccent

View file

@ -0,0 +1,167 @@
# Эффекты
- type: entityTable
id: SunriseArtifactEffectsDefaultTable
table: !type:GroupSelector
children:
- id: SunriseEffectHeal
weight: 2
- id: SunriseArtifactGenerateEnergy
weight: 2
- id: SunriseArtifactWandering
weight: 3
- id: SunriseArtifactThrowThingsAround
weight: 3
- id: SunriseArtifactKnock
weight: 3
- id: SunriseArtifactEffectJunkSpawn
weight: 3
- id: SunriseArtifactShatterWindows
weight: 3
- id: SunriseEffectBoltAirlocks
weight: 3
- id: SunriseArtifactHunger
weight: 2
- id: SunriseEffectThirst
weight: 2
- id: SunriseEffectTeslaDischarge
weight: 1
- id: SunriseEffectSpawnEvilTwin
weight: 1
- id: SunriseArtifactTeleport
weight: 2
- id: SunriseArtifactEmp
weight: 2
- id: SunriseEffectIgnite
weight: 1
- type: entityTable
id: SunriseArtifactEffectsUltraFunnyTable
table: !type:GroupSelector
children:
- id: SunriseEffectShuffleUltra
weight: 2
- id: SunriseEffectPolyChair
weight: 3
- id: SunriseEffectPolyWatermelon
weight: 3
- id: SunriseEffectPolyAppendix
weight: 3
- id: SunriseEffectPolyDisposal
weight: 3
- id: SunriseEffectPolyTable
weight: 3
- id: SunriseEffectSwap
weight: 3
- id: SunriseEffectRandomTransformation
weight: 1
- id: SunriseEffectMagnetUltra
weight: 2
- id: SunriseEffectShiftedAsciiTableAccent
weight: 3
# Ванильная, которую я чуть подрезал
- type: entityTable
id: SunriseArtifactEffectsVanillaDefaultReducedTable
table: !type:GroupSelector
children:
- id: XenoArtifactSpeedUp
weight: 4.0
- id: XenoArtifactGhost
weight: 4.0
- id: XenoArtifactPotassiumWave
weight: 7.0
- id: XenoArtifactFloraSpawn
weight: 7.0
- id: XenoArtifactChemicalPuddle
weight: 7.0
- id: XenoArtifactThrowThingsAround
weight: 7.0
- id: XenoArtifactColdWave
weight: 7.0
- id: XenoArtifactHeatWave
weight: 4.0
- id: XenoArtifactFoamMild
weight: 5.0
- id: XenoArtifactRandomInstrumentSpawn
weight: 7.0
- id: XenoArtifactRadioactive
weight: 5.0
- id: XenoArtifactChargeBattery
weight: 7.0
- id: XenoArtifactStealth
weight: 1.0
- id: XenoArtifactRareMaterialSpawnSilver
weight: 1.8
- id: XenoArtifactRareMaterialSpawnPlasma
weight: 2.0
- id: XenoArtifactRareMaterialSpawnGold
weight: 1.8
- id: XenoArtifactRareMaterialSpawnUranium
weight: 1.0
- id: XenoArtifactAngryCarpSpawn
weight: 4.0
- id: XenoArtifactFaunaSpawn
weight: 7.0
- id: XenoArtifactCashSpawn
weight: 7.0
- id: XenoArtifactFoamGood
weight: 4.0
- id: XenoArtifactFoamDangerous
weight: 2.0
- id: XenoArtifactPuddleRare
weight: 2.0
- id: XenoArtifactAnomalySpawn
weight: 7.0
- id: XenoArtifactRadioactiveStrong
weight: 3.0
- id: XenoArtifactMaterialSpawnGlass
weight: 3.3
- id: XenoArtifactMaterialSpawnSteel
weight: 3.3
- id: XenoArtifactMaterialSpawnPlastic
weight: 3.3
- id: XenoArtifactArtifactSpawn
weight: 0.5
- id: XenoArtifactExplosionScary
weight: 1.0
- id: XenoArtifactBoom
weight: 5.0
- id: XenoArtifactEffectCreationGasPlasma
weight: 2.0
- id: XenoArtifactEffectCreationGasTritium
weight: 2.0
- id: XenoArtifactEffectCreationGasAmmonia
weight: 3.0
- id: XenoArtifactEffectCreationGasFrezon
weight: 1.0
- id: XenoArtifactEffectCreationGasNitrousOxide
weight: 4.0
- id: XenoArtifactEffectCreationGasCarbonDioxide
weight: 4.0
# Триггеры
- type: weightedRandomXenoArchTrigger
id: SunriseDefaultTriggers
weights:
TriggerMusic: 1
TriggerHeat: 1
TriggerCold: 0.5
TriggerPlasma: 0.5
TriggerRadiation: 0.5
TriggerPressureHigh: 0.5
TriggerPressureLow: 1
TriggerExamine: 1
TriggerBruteDamage: 1
TriggerWrenching: 1
TriggerPrying: 1
TriggerScrewing: 1
TriggerPulsing: 1
TriggerTimer: 0.25
TriggerBlood: 1
TriggerThrow: 1
TriggerDeath: 1
TriggerMagnet: 1
# Дальше наши самописные
TriggerHealthAnalyzer: 1

View file

@ -0,0 +1,5 @@
- type: xenoArchTrigger
id: TriggerHealthAnalyzer
tip: artifact-trigger-hint-health-analyzer
components:
- type: ArtifactHealthAnalyzerInteractionTrigger