Merge remote-tracking branch 'WD-core/master' into upstream-core
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
using Content.Server.Administration.Logs;
|
using Content.Server.Administration.Logs;
|
||||||
using Content.Server.Body.Components;
|
using Content.Server.Body.Components;
|
||||||
using Content.Server.Body.Systems;
|
using Content.Server.Body.Systems;
|
||||||
using Content.Server.Chemistry.Containers.EntitySystems;
|
|
||||||
using Content.Server.Medical.Components;
|
using Content.Server.Medical.Components;
|
||||||
using Content.Server.Popups;
|
using Content.Server.Popups;
|
||||||
using Content.Server.Stack;
|
using Content.Server.Stack;
|
||||||
|
using Content.Shared.Chemistry.EntitySystems;
|
||||||
using Content.Shared.Audio;
|
using Content.Shared.Audio;
|
||||||
using Content.Shared.Damage;
|
using Content.Shared.Damage;
|
||||||
using Content.Shared.Database;
|
using Content.Shared.Database;
|
||||||
@@ -36,7 +36,7 @@ public sealed class HealingSystem : EntitySystem
|
|||||||
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
|
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
|
||||||
[Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!;
|
[Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!;
|
||||||
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||||
[Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!;
|
[Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -72,7 +72,6 @@ public sealed class HealingSystem : EntitySystem
|
|||||||
_bloodstreamSystem.TryModifyBleedAmount(entity.Owner, healing.BloodlossModifier);
|
_bloodstreamSystem.TryModifyBleedAmount(entity.Owner, healing.BloodlossModifier);
|
||||||
if (isBleeding != bloodstream.BleedAmount > 0)
|
if (isBleeding != bloodstream.BleedAmount > 0)
|
||||||
{
|
{
|
||||||
dontRepeat = true;
|
|
||||||
_popupSystem.PopupEntity(Loc.GetString("medical-item-stop-bleeding"), entity, args.User);
|
_popupSystem.PopupEntity(Loc.GetString("medical-item-stop-bleeding"), entity, args.User);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -116,7 +115,7 @@ public sealed class HealingSystem : EntitySystem
|
|||||||
_audio.PlayPvs(healing.HealingEndSound, entity.Owner, AudioHelpers.WithVariation(0.125f, _random).WithVolume(1f));
|
_audio.PlayPvs(healing.HealingEndSound, entity.Owner, AudioHelpers.WithVariation(0.125f, _random).WithVolume(1f));
|
||||||
|
|
||||||
// Logic to determine the whether or not to repeat the healing action
|
// Logic to determine the whether or not to repeat the healing action
|
||||||
args.Repeat = (HasDamage(entity.Comp, healing) && !dontRepeat);
|
args.Repeat = ((HasDamage(entity.Comp, healing) || HasBleedingToHeal(entity, healing)) && !dontRepeat); // WD added HasBleedingToHeal()
|
||||||
if (!args.Repeat && !dontRepeat)
|
if (!args.Repeat && !dontRepeat)
|
||||||
_popupSystem.PopupEntity(Loc.GetString("medical-item-finished-using", ("item", args.Used)), entity.Owner, args.User);
|
_popupSystem.PopupEntity(Loc.GetString("medical-item-finished-using", ("item", args.Used)), entity.Owner, args.User);
|
||||||
args.Handled = true;
|
args.Handled = true;
|
||||||
@@ -174,6 +173,7 @@ public sealed class HealingSystem : EntitySystem
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
var anythingToDo =
|
var anythingToDo =
|
||||||
|
HasBleedingToHeal(target, component) || // WD Edit
|
||||||
HasDamage(targetDamage, component) ||
|
HasDamage(targetDamage, component) ||
|
||||||
component.ModifyBloodLevel > 0 // Special case if healing item can restore lost blood...
|
component.ModifyBloodLevel > 0 // Special case if healing item can restore lost blood...
|
||||||
&& TryComp<BloodstreamComponent>(target, out var bloodstream)
|
&& TryComp<BloodstreamComponent>(target, out var bloodstream)
|
||||||
@@ -191,17 +191,11 @@ public sealed class HealingSystem : EntitySystem
|
|||||||
|
|
||||||
var isNotSelf = user != target;
|
var isNotSelf = user != target;
|
||||||
|
|
||||||
//Amour
|
|
||||||
if (isNotSelf)
|
if (isNotSelf)
|
||||||
{
|
{
|
||||||
var msg = Loc.GetString("medical-item-popup-target", ("user", Identity.Entity(user, EntityManager)), ("item", uid));
|
var msg = Loc.GetString("medical-item-popup-target", ("user", Identity.Entity(user, EntityManager)), ("item", uid));
|
||||||
_popupSystem.PopupEntity(msg, target, target, PopupType.Medium);
|
_popupSystem.PopupEntity(msg, target, target, PopupType.Medium);
|
||||||
}
|
}
|
||||||
//Amour
|
|
||||||
|
|
||||||
var delay = isNotSelf
|
|
||||||
? component.Delay
|
|
||||||
: component.Delay * GetScaledHealingPenalty(user, component);
|
|
||||||
|
|
||||||
var doAfterEventArgs =
|
var doAfterEventArgs =
|
||||||
new DoAfterArgs(EntityManager, user, delay, new HealingDoAfterEvent(), target, target: target, used: uid)
|
new DoAfterArgs(EntityManager, user, delay, new HealingDoAfterEvent(), target, target: target, used: uid)
|
||||||
@@ -237,4 +231,21 @@ public sealed class HealingSystem : EntitySystem
|
|||||||
var modifier = percentDamage * (component.SelfHealPenaltyMultiplier - 1) + 1;
|
var modifier = percentDamage * (component.SelfHealPenaltyMultiplier - 1) + 1;
|
||||||
return Math.Max(modifier, 1);
|
return Math.Max(modifier, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// WD.
|
||||||
|
/// </summary>
|
||||||
|
private bool HasBleedingToHeal(EntityUid target, HealingComponent healing)
|
||||||
|
{
|
||||||
|
if (healing.BloodlossModifier == float.NegativeZero)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!TryComp<BloodstreamComponent>(target, out var bloodstream))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var isBleeding = bloodstream.BleedAmount > 0;
|
||||||
|
|
||||||
|
return isBleeding;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public sealed partial class ArtifactSystem
|
|||||||
|
|
||||||
_usedNodeIds.Clear();
|
_usedNodeIds.Clear();
|
||||||
|
|
||||||
var uninitializedNodes = new List<ArtifactNode> { new(){ Id = GetValidNodeId() } };
|
var uninitializedNodes = new List<ArtifactNode> { new() { Id = GetValidNodeId() } };
|
||||||
var createdNodes = 1;
|
var createdNodes = 1;
|
||||||
|
|
||||||
while (uninitializedNodes.Count > 0)
|
while (uninitializedNodes.Count > 0)
|
||||||
@@ -50,7 +50,7 @@ public sealed partial class ArtifactSystem
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
var child = new ArtifactNode {Id = GetValidNodeId(), Depth = node.Depth + 1};
|
var child = new ArtifactNode { Id = GetValidNodeId(), Depth = node.Depth + 1 };
|
||||||
node.Edges.Add(child.Id);
|
node.Edges.Add(child.Id);
|
||||||
child.Edges.Add(node.Id);
|
child.Edges.Add(node.Id);
|
||||||
|
|
||||||
@@ -240,4 +240,73 @@ public sealed partial class ArtifactSystem
|
|||||||
{
|
{
|
||||||
return nodes.First(x => x.Id == id);
|
return nodes.First(x => x.Id == id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// WD.
|
||||||
|
/// Generate an Artifact tree with fully developed nodes.
|
||||||
|
/// </summary>
|
||||||
|
private void GenerateSafeArtifactNodeTree(EntityUid artifact, ref List<ArtifactNode> allNodes, int nodesToCreate)
|
||||||
|
{
|
||||||
|
if (nodesToCreate < 1)
|
||||||
|
{
|
||||||
|
Log.Error($"nodesToCreate {nodesToCreate} is less than 1. Aborting artifact tree generation.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_usedNodeIds.Clear();
|
||||||
|
|
||||||
|
var uninitializedNodes = new List<ArtifactNode> { new() { Id = GetValidNodeId() } };
|
||||||
|
var createdNodes = 1;
|
||||||
|
|
||||||
|
while (uninitializedNodes.Count > 0)
|
||||||
|
{
|
||||||
|
var node = uninitializedNodes[0];
|
||||||
|
uninitializedNodes.Remove(node);
|
||||||
|
|
||||||
|
node.Trigger = GetRandomTrigger(artifact, ref node);
|
||||||
|
node.Effect = GetRandomEffect(artifact, ref node);
|
||||||
|
|
||||||
|
var maxChildren = _random.Next(1, MaxEdgesPerNode - 1);
|
||||||
|
|
||||||
|
for (var i = 0; i < maxChildren; i++)
|
||||||
|
{
|
||||||
|
if (nodesToCreate <= createdNodes)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
var child = new ArtifactNode { Id = GetValidNodeId(), Depth = node.Depth + 1 };
|
||||||
|
node.Edges.Add(child.Id);
|
||||||
|
child.Edges.Add(node.Id);
|
||||||
|
|
||||||
|
uninitializedNodes.Add(child);
|
||||||
|
createdNodes++;
|
||||||
|
}
|
||||||
|
|
||||||
|
allNodes.Add(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var item in allNodes)
|
||||||
|
{
|
||||||
|
if (item.Depth <= 3)
|
||||||
|
item.Effect = GetSafeRandomEffect(artifact, item.Depth);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// WD.
|
||||||
|
/// </summary>
|
||||||
|
private string GetSafeRandomEffect(EntityUid artifact, int nodeDepth)
|
||||||
|
{
|
||||||
|
var allEffects = _prototype.EnumeratePrototypes<ArtifactEffectPrototype>()
|
||||||
|
.Where(x => (x.Whitelist?.IsValid(artifact, EntityManager) ?? true) && (!x.Blacklist?.IsValid(artifact, EntityManager) ?? true) && x.Safe).ToList();
|
||||||
|
var validDepth = allEffects.Select(x => x.TargetDepth).Distinct().ToList();
|
||||||
|
|
||||||
|
var weights = GetDepthWeights(validDepth, nodeDepth);
|
||||||
|
var selectedRandomTargetDepth = GetRandomTargetDepth(weights);
|
||||||
|
var targetEffects = allEffects
|
||||||
|
.Where(x => x.TargetDepth == selectedRandomTargetDepth).ToList();
|
||||||
|
|
||||||
|
return _random.Pick(targetEffects).ID;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -296,4 +296,17 @@ public sealed partial class ArtifactSystem : EntitySystem
|
|||||||
{
|
{
|
||||||
return allNodes.First(n => n.Depth == 0);
|
return allNodes.First(n => n.Depth == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// WD. Randomize a given artifact.
|
||||||
|
/// </summary>
|
||||||
|
[PublicAPI]
|
||||||
|
public void SafeRandomizeArtifact(EntityUid uid, ref ArtifactComponent component)
|
||||||
|
{
|
||||||
|
var nodeAmount = _random.Next(component.NodesMin, component.NodesMax);
|
||||||
|
|
||||||
|
GenerateSafeArtifactNodeTree(uid, ref component.NodeTree, nodeAmount);
|
||||||
|
var firstNode = GetRootNode(component.NodeTree);
|
||||||
|
EnterNode(uid, ref firstNode, component);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
namespace Content.Server._White.RandomArtifactDesc
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// WD.
|
||||||
|
/// Добавляет описание предмету.
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed partial class RandomArtifactDescComponent : Component
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using Content.Shared.Examine;
|
||||||
|
|
||||||
|
namespace Content.Server._White.RandomArtifactDesc;
|
||||||
|
|
||||||
|
public sealed class RandomArtifactDescSystem : EntitySystem
|
||||||
|
{
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<RandomArtifactDescComponent, ExaminedEvent>(OnExamined);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnExamined(EntityUid uid, RandomArtifactDescComponent component, ExaminedEvent args)
|
||||||
|
{
|
||||||
|
if (args.IsInDetailsRange)
|
||||||
|
{
|
||||||
|
args.PushMarkup("С этим предметом что-то не так.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,10 +2,16 @@
|
|||||||
using Content.Server.Station.Components;
|
using Content.Server.Station.Components;
|
||||||
using Content.Server.Station.Systems;
|
using Content.Server.Station.Systems;
|
||||||
using Content.Server.Xenoarchaeology.XenoArtifacts;
|
using Content.Server.Xenoarchaeology.XenoArtifacts;
|
||||||
|
using Content.Server._White.RandomArtifactDesc;
|
||||||
using Content.Shared._White;
|
using Content.Shared._White;
|
||||||
|
using Content.Shared.Damage;
|
||||||
|
using Content.Shared.Stacks;
|
||||||
using Content.Shared.Item;
|
using Content.Shared.Item;
|
||||||
using Robust.Shared.Configuration;
|
using Robust.Shared.Configuration;
|
||||||
using Robust.Shared.Random;
|
using Robust.Shared.Random;
|
||||||
|
using Robust.Server.GameObjects;
|
||||||
|
using Content.Shared.Body.Organ;
|
||||||
|
using Content.Shared.Body.Part;
|
||||||
|
|
||||||
namespace Content.Server._White.RandomArtifacts;
|
namespace Content.Server._White.RandomArtifacts;
|
||||||
|
|
||||||
@@ -15,8 +21,9 @@ public sealed class RandomArtifactsSystem : EntitySystem
|
|||||||
[Dependency] private readonly IRobustRandom _random = default!;
|
[Dependency] private readonly IRobustRandom _random = default!;
|
||||||
[Dependency] private readonly IConfigurationManager _configurationManager = default!;
|
[Dependency] private readonly IConfigurationManager _configurationManager = default!;
|
||||||
[Dependency] private readonly StationSystem _station = default!;
|
[Dependency] private readonly StationSystem _station = default!;
|
||||||
|
[Dependency] private readonly IComponentFactory _componentFactory = default!;
|
||||||
|
|
||||||
private float _itemToArtifactRatio; // from 0 to 100. In % percents. Default is 0.7%
|
private float _itemToArtifactRatio; // from 0 to 100. In % percents. Default is 0.4%
|
||||||
private bool _artifactsEnabled;
|
private bool _artifactsEnabled;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
@@ -34,11 +41,12 @@ public sealed class RandomArtifactsSystem : EntitySystem
|
|||||||
if (!_artifactsEnabled)
|
if (!_artifactsEnabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Removing old artifact-items and replace it with new funny stealthy items
|
// No we don't
|
||||||
foreach (var oldArtifact in EntityQuery<ArtifactComponent>())
|
// // Removing old artifact-items and replace it with new funny stealthy items
|
||||||
{
|
// foreach (var oldArtifact in EntityQuery<ArtifactComponent>())
|
||||||
QueueDel(oldArtifact.Owner);
|
// {
|
||||||
}
|
// QueueDel(oldArtifact.Owner);
|
||||||
|
// }
|
||||||
|
|
||||||
var items = EntityQuery<ItemComponent>().ToList();
|
var items = EntityQuery<ItemComponent>().ToList();
|
||||||
_random.Shuffle(items);
|
_random.Shuffle(items);
|
||||||
@@ -55,8 +63,26 @@ public sealed class RandomArtifactsSystem : EntitySystem
|
|||||||
if (!HasComp<StationDataComponent>(station))
|
if (!HasComp<StationDataComponent>(station))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var artifactComponent = EnsureComp<ArtifactComponent>(entity);
|
if (HasComp<StackComponent>(entity))
|
||||||
_artifactsSystem.RandomizeArtifact(entity, artifactComponent);
|
continue;
|
||||||
|
|
||||||
|
if (HasComp<PointLightComponent>(entity))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (HasComp<OrganComponent>(entity))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (HasComp<BodyPartComponent>(entity))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// var artifactComponent = EnsureComp<ArtifactComponent>(entity);
|
||||||
|
var comp = (ArtifactComponent) _componentFactory.GetComponent("Artifact");
|
||||||
|
comp.Owner = entity;
|
||||||
|
_artifactsSystem.SafeRandomizeArtifact(entity, ref comp);
|
||||||
|
AddComp(entity, comp);
|
||||||
|
|
||||||
|
EnsureComp<RandomArtifactDescComponent>(entity);
|
||||||
|
EnsureComp<DamageableComponent>(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,7 +101,11 @@ public sealed class RandomArtifactsSystem : EntitySystem
|
|||||||
|
|
||||||
foreach (var (_, artifact) in items)
|
foreach (var (_, artifact) in items)
|
||||||
{
|
{
|
||||||
RemComp<ArtifactComponent>(artifact.Owner);
|
if (HasComp<RandomArtifactDescComponent>(artifact.Owner))
|
||||||
|
{
|
||||||
|
RemComp<ArtifactComponent>(artifact.Owner);
|
||||||
|
RemComp<RandomArtifactDescComponent>(artifact.Owner);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,9 @@ namespace Content.Server._White._Engi.PacifiedOnChaplainAction
|
|||||||
|
|
||||||
private void Action(PacifiedOnChaplainActionComponent component, EntityUid target, EntityUid user)
|
private void Action(PacifiedOnChaplainActionComponent component, EntityUid target, EntityUid user)
|
||||||
{
|
{
|
||||||
|
if (!HasComp<PacifiedOnChaplainActionComponent>(target))
|
||||||
|
return;
|
||||||
|
|
||||||
var popup = "";
|
var popup = "";
|
||||||
|
|
||||||
if (HasComp<PacifiedComponent>(target))
|
if (HasComp<PacifiedComponent>(target))
|
||||||
|
|||||||
@@ -41,4 +41,10 @@ public sealed partial class ArtifactEffectPrototype : IPrototype
|
|||||||
|
|
||||||
[DataField("blacklist")]
|
[DataField("blacklist")]
|
||||||
public EntityWhitelist? Blacklist;
|
public EntityWhitelist? Blacklist;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// WD. Is it safe for random items?
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public bool Safe = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,4 @@
|
|||||||
Entries:
|
Entries:
|
||||||
- author: RavMorgan
|
|
||||||
changes:
|
|
||||||
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u043F\u0440\u0438\u0437\
|
|
||||||
\u0440\u0430\u043A \u0434\u043B\u044F merkkaa!"
|
|
||||||
type: Add
|
|
||||||
id: 146
|
|
||||||
time: '2023-04-27T20:09:54.0000000+00:00'
|
|
||||||
- author: RavMorgan
|
|
||||||
changes:
|
|
||||||
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u043F\u0440\u0438\u0437\
|
|
||||||
\u0440\u0430\u043A \u0434\u043B\u044F nairsark!"
|
|
||||||
type: Add
|
|
||||||
id: 147
|
|
||||||
time: '2023-04-27T20:30:38.0000000+00:00'
|
|
||||||
- author: RavMorgan
|
- author: RavMorgan
|
||||||
changes:
|
changes:
|
||||||
- message: "\u041A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0435 \u043F\u0440\u0438\
|
- message: "\u041A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0435 \u043F\u0440\u0438\
|
||||||
@@ -8908,3 +8894,28 @@
|
|||||||
id: 645
|
id: 645
|
||||||
time: '2024-12-29T20:51:07.0000000+00:00'
|
time: '2024-12-29T20:51:07.0000000+00:00'
|
||||||
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/861
|
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/861
|
||||||
|
- author: BIG_Zi_348
|
||||||
|
changes:
|
||||||
|
- message: "\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0430 \u0441\u0438\u0441\u0442\
|
||||||
|
\u0435\u043C\u0430 \u0440\u0430\u043D\u0434\u043E\u043C\u043D\u044B\u0445 \u0430\
|
||||||
|
\u0440\u0442\u0435\u0444\u0430\u043A\u0442\u043E\u0432."
|
||||||
|
type: Tweak
|
||||||
|
- message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0430 \u043B\u043E\
|
||||||
|
\u0433\u0438\u043A\u0430 \u043B\u0435\u0447\u0435\u043D\u0438\u044F \u043A\u0440\
|
||||||
|
\u043E\u0432\u043E\u0442\u0435\u0447\u0435\u043D\u0438\u044F."
|
||||||
|
type: Fix
|
||||||
|
id: 646
|
||||||
|
time: '2024-12-31T17:11:33.0000000+00:00'
|
||||||
|
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/864
|
||||||
|
- author: Hero_010
|
||||||
|
changes:
|
||||||
|
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u044B \u043F\u0435\u0440\
|
||||||
|
\u0435\u0432\u043E\u0434\u044B \u043C\u0435\u043B\u043E\u0447\u0435\u0439."
|
||||||
|
type: Add
|
||||||
|
- message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u044B \u043F\u0435\
|
||||||
|
\u0440\u0435\u0432\u043E\u0434\u044B \u043C\u0435\u043B\u043E\u0447\u0435\u0439\
|
||||||
|
."
|
||||||
|
type: Fix
|
||||||
|
id: 647
|
||||||
|
time: '2025-01-01T13:55:57.0000000+00:00'
|
||||||
|
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/855
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ ent-SpyCrewMonitor = шпионский монитор
|
|||||||
.desc = Шпионское устройство, способное подключаться к серверам мониторинга экипажа.
|
.desc = Шпионское устройство, способное подключаться к серверам мониторинга экипажа.
|
||||||
ent-SyndiCrewMonitor = синдикатский монитор экипажа
|
ent-SyndiCrewMonitor = синдикатский монитор экипажа
|
||||||
.desc = Синдицированная версия монитора экипажа, перехватывает информацию с сервера.
|
.desc = Синдицированная версия монитора экипажа, перехватывает информацию с сервера.
|
||||||
|
ent-SyndiCrewMonitorEmpty = { ent-SyndiCrewMonitor }
|
||||||
|
.desc = { ent-SyndiCrewMonitor.desc }
|
||||||
ent-Tourniquet = жгут
|
ent-Tourniquet = жгут
|
||||||
.desc = Останавливает кровотечение! Надеюсь.
|
.desc = Останавливает кровотечение! Надеюсь.
|
||||||
ent-HealingToolbox = набор инструментов для лечения
|
ent-HealingToolbox = набор инструментов для лечения
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ ent-SyndiAgentPDA = ПДА агента синдиката
|
|||||||
.desc = Для тех случаев, когда исцеление обычных членов синдиката недостаточно, попробуйте исцелить ядерных оперативников!
|
.desc = Для тех случаев, когда исцеление обычных членов синдиката недостаточно, попробуйте исцелить ядерных оперативников!
|
||||||
ent-PinpointerSyndicateNuclear = указатель синдиката
|
ent-PinpointerSyndicateNuclear = указатель синдиката
|
||||||
.desc = Разработан специально для миссий ядерных оперативников, найдите диск!
|
.desc = Разработан специально для миссий ядерных оперативников, найдите диск!
|
||||||
|
ent-PinpointerStationNuclear = { ent-PinpointerSyndicateNuclear }
|
||||||
|
.desc = { ent-PinpointerSyndicateNuclear.desc }
|
||||||
ent-PinpointerStation = станционный указатель
|
ent-PinpointerStation = станционный указатель
|
||||||
.desc = Ручной трекинг-устройство, указывающее направление на любую близлежащую станцию.
|
.desc = Ручной трекинг-устройство, указывающее направление на любую близлежащую станцию.
|
||||||
.suffix = Станции
|
.suffix = Станции
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
ent-PlushieRainbowCarp = плюшевая радужная карпа
|
ent-PlushieRainbowCarp = плюшевый радужный карп
|
||||||
.desc = Милая плюшевая игрушка, напоминающая легендарную радужную карпу.
|
.desc = Милая плюшевая игрушка, напоминающая легендарного радужного карпа.
|
||||||
ent-PlushieHolocarp = плюшевый голокарп
|
ent-PlushieHolocarp = плюшевый голокарп
|
||||||
.desc = Голографическая плюшевая игрушка, напоминающая научного врага - голокарпа.
|
.desc = Голографическая плюшевая игрушка, напоминающая научного врага - голокарпа.
|
||||||
ent-PlushiePenguin = плюшевый пингвин
|
ent-PlushiePenguin = плюшевый пингвин
|
||||||
|
|||||||
@@ -24,23 +24,35 @@ ent-ShardCrystalRandom = случайный кристаллический ос
|
|||||||
.desc = случайный кристаллический осколок
|
.desc = случайный кристаллический осколок
|
||||||
ent-MaterialHideCorgi = шкура корги
|
ent-MaterialHideCorgi = шкура корги
|
||||||
.desc = Роскошная шкура, используемая только в самых элитных модных вещах. По слухам, ее можно найти, когда корги отправляют на хорошую ферму.
|
.desc = Роскошная шкура, используемая только в самых элитных модных вещах. По слухам, ее можно найти, когда корги отправляют на хорошую ферму.
|
||||||
ent-MaterialPyrotton = пироттон
|
ent-MaterialPyrotton = пирохлопок
|
||||||
.desc = пироттон
|
.desc = { ent-MaterialBase.desc }
|
||||||
.suffix = Полный
|
.suffix = Полный
|
||||||
|
ent-MaterialPyrotton1 = { ent-MaterialPyrotton }
|
||||||
|
.desc = { ent-MaterialPyrotton.desc }
|
||||||
ent-MaterialWebSilk = шелк
|
ent-MaterialWebSilk = шелк
|
||||||
.desc = Паутинный материал.
|
.desc = Паутинный материал.
|
||||||
.suffix = Полный
|
.suffix = Полный
|
||||||
|
ent-MaterialWebSilk1 = { ent-MaterialWebSilk }
|
||||||
|
.desc = { ent-MaterialWebSilk.desc }
|
||||||
|
ent-MaterialWebSilk25 = { ent-MaterialWebSilk }
|
||||||
|
.desc = { ent-MaterialWebSilk.desc }
|
||||||
ent-MaterialBones = кости
|
ent-MaterialBones = кости
|
||||||
.desc = кости
|
.desc = { ent-MaterialBase.desc }
|
||||||
.suffix = Полный
|
.suffix = Полный
|
||||||
|
ent-MaterialBones1 = { ent-MaterialBones }
|
||||||
|
.desc = { ent-MaterialBones.desc }
|
||||||
ent-MaterialGunpowder = порох
|
ent-MaterialGunpowder = порох
|
||||||
.desc = Взрывчатое вещество.
|
.desc = Взрывчатое вещество.
|
||||||
|
ent-MaterialGunpowder60 = { ent-MaterialGunpowder }
|
||||||
|
.desc = { ent-MaterialGunpowder.desc }
|
||||||
ent-Coal = уголь
|
ent-Coal = уголь
|
||||||
.desc = уголь
|
.desc = { ent-OreBase.desc }
|
||||||
.suffix = Полный
|
.suffix = Полный
|
||||||
|
ent-Coal1 = { ent-Coal }
|
||||||
|
.desc = { ent-Coal.desc }
|
||||||
ent-SaltOre = соль
|
ent-SaltOre = соль
|
||||||
.desc = соль
|
.desc = { ent-OreBase.desc }
|
||||||
.suffix = Полный
|
.suffix = Полный
|
||||||
ent-PartRodMetal10 = металлический стержень
|
ent-PartRodMetal10 = { ent-PartRodMetal }
|
||||||
.desc = металлический стержень
|
.desc = { ent-PartRodMetal.desc }
|
||||||
.suffix = 10
|
.suffix = 10
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
construction-component-to-create-header = Чтобы создать { $targetName }...
|
construction-component-to-create-header = Чтобы создать { $targetName }...
|
||||||
node-machine = машину
|
node-machine = машину
|
||||||
node-ripley = рипли
|
node-ripley = рипли
|
||||||
|
deconstruction-header-text = Чтобы разобрать...
|
||||||
@@ -21,8 +21,8 @@ ent-GrapeSeeds = пакет виноградных косточек
|
|||||||
.desc = { ent-SeedBase.desc }
|
.desc = { ent-SeedBase.desc }
|
||||||
ent-MopBucketFull = Ведро для мытья пола
|
ent-MopBucketFull = Ведро для мытья пола
|
||||||
.desc = { ent-MopBucket.desc }
|
.desc = { ent-MopBucket.desc }
|
||||||
ent-WetFloorSignMineExplosive = табличка 'Мокрый пол'
|
ent-WetFloorSignMineExplosive = знак "Мокрый пол"
|
||||||
.desc = Осторожность! Мокрый пол!
|
.desc = Осторожно! Мокрый пол!
|
||||||
ent-Plunger = вантуз
|
ent-Plunger = вантуз
|
||||||
.desc = Вантуз с красной пластиковой присоской и деревянной ручкой. Используется для прочистки стоков.
|
.desc = Вантуз с красной пластиковой присоской и деревянной ручкой. Используется для прочистки стоков.
|
||||||
ent-MegaSprayBottle = мега распылитель
|
ent-MegaSprayBottle = мега распылитель
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ ent-HandheldCrewMonitorEmpty = { ent-HandheldCrewMonitor }
|
|||||||
.desc = { ent-HandheldCrewMonitor.desc }
|
.desc = { ent-HandheldCrewMonitor.desc }
|
||||||
ent-Ointment1 = { ent-Ointment }
|
ent-Ointment1 = { ent-Ointment }
|
||||||
.desc = { ent-Ointment.desc }
|
.desc = { ent-Ointment.desc }
|
||||||
|
ent-Ointment10Lingering = { ent-Ointment }
|
||||||
|
.desc = { ent-Ointment.desc }
|
||||||
ent-RegenerativeMesh = регенеративная сетка
|
ent-RegenerativeMesh = регенеративная сетка
|
||||||
.desc = Используется для лечения даже самых неприятных ожогов. Также эффективен против щелочных ожогов.
|
.desc = Используется для лечения даже самых неприятных ожогов. Также эффективен против щелочных ожогов.
|
||||||
ent-OintmentAdvanced1 = продвинутая мазь
|
ent-OintmentAdvanced1 = продвинутая мазь
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ ent-VariedXenoArtifactItem = { ent-BaseXenoArtifactItem }
|
|||||||
.desc = { ent-BaseXenoArtifactItem.desc }
|
.desc = { ent-BaseXenoArtifactItem.desc }
|
||||||
ent-ArtifactFragment = фрагмент артефакта
|
ent-ArtifactFragment = фрагмент артефакта
|
||||||
.desc = Обломок артефакта. Возможно, вы могли бы починить его, если бы у вас было больше.
|
.desc = Обломок артефакта. Возможно, вы могли бы починить его, если бы у вас было больше.
|
||||||
|
ent-ArtifactFragment1 = { ent-ArtifactFragment }
|
||||||
|
.desc = { ent-ArtifactFragment.desc }
|
||||||
ent-CableHVStack10 = { ent-CableHVStack }
|
ent-CableHVStack10 = { ent-CableHVStack }
|
||||||
.desc = { ent-CableHVStack.desc }
|
.desc = { ent-CableHVStack.desc }
|
||||||
ent-CableMVStack10 = { ent-CableMVStack }
|
ent-CableMVStack10 = { ent-CableMVStack }
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ ent-PaperBin5 = { ent-PaperBin }
|
|||||||
.desc = { ent-PaperBin.desc }
|
.desc = { ent-PaperBin.desc }
|
||||||
ent-PaperBin10 = { ent-PaperBin }
|
ent-PaperBin10 = { ent-PaperBin }
|
||||||
.desc = { ent-PaperBin.desc }
|
.desc = { ent-PaperBin.desc }
|
||||||
|
ent-PaperBin20 = { ent-PaperBin }
|
||||||
|
.desc = { ent-PaperBin.desc }
|
||||||
ent-SuitStorageBase = отделение для хранения скафандров
|
ent-SuitStorageBase = отделение для хранения скафандров
|
||||||
.desc = Причудливое высокотехнологичное хранилище, предназначенное для хранения скафандров.
|
.desc = Причудливое высокотехнологичное хранилище, предназначенное для хранения скафандров.
|
||||||
ent-SuitStorageEVA = { ent-SuitStorageBase }
|
ent-SuitStorageEVA = { ent-SuitStorageBase }
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
medical-item-finished-using = Вы закончили исцеление с помощью { $item }
|
medical-item-finished-using = Вы закончили исцеление с помощью { $item }
|
||||||
medical-item-cant-use = Нет никаких повреждений, которые вы могли бы залечить с помощью { $item }
|
medical-item-cant-use = Нет никаких повреждений, которые вы могли бы залечить с помощью { $item }
|
||||||
medical-item-stop-bleeding = Оно перестало кровоточить
|
medical-item-stop-bleeding = Кровотечение было остановлено
|
||||||
# Amour
|
medical-item-popup-target = { CAPITALIZE($user) } пытается лечить вас при помощи { $item }!
|
||||||
medical-item-popup-target = {CAPITALIZE(THE($user))} пытается исцелить тебя с помощью {$item}!
|
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ ent-DrinkCanBaseFull = { ent-BaseItem }
|
|||||||
.desc = { ent-BaseItem.desc }
|
.desc = { ent-BaseItem.desc }
|
||||||
ent-DrinkColaCan = космическая кола
|
ent-DrinkColaCan = космическая кола
|
||||||
.desc = Прохладительный напиток.
|
.desc = Прохладительный напиток.
|
||||||
|
ent-DrinkColaCanEmpty = { ent-DrinkColaCan }
|
||||||
|
.desc = { ent-DrinkColaCan.desc }
|
||||||
ent-DrinkIcedTeaCan = банка холодного чая
|
ent-DrinkIcedTeaCan = банка холодного чая
|
||||||
.desc = Освежающая банка холодного чая.
|
.desc = Освежающая банка холодного чая.
|
||||||
ent-DrinkLemonLimeCan = банка лимон-лайма
|
ent-DrinkLemonLimeCan = банка лимон-лайма
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ ent-MaterialWoodPlank = древесина
|
|||||||
ent-MaterialWoodPlank1 = { ent-MaterialWoodPlank }
|
ent-MaterialWoodPlank1 = { ent-MaterialWoodPlank }
|
||||||
.suffix = Один
|
.suffix = Один
|
||||||
.desc = { ent-MaterialWoodPlank.desc }
|
.desc = { ent-MaterialWoodPlank.desc }
|
||||||
|
ent-MaterialWoodPlank10 = { ent-MaterialWoodPlank }
|
||||||
|
.desc = { ent-MaterialWoodPlank.desc }
|
||||||
ent-MaterialBiomass = биомасса
|
ent-MaterialBiomass = биомасса
|
||||||
.suffix = Полный
|
.suffix = Полный
|
||||||
.desc = { ent-MaterialBase.desc }
|
.desc = { ent-MaterialBase.desc }
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
ent-PartBase = { ent-BaseItem }
|
ent-PartBase = { ent-BaseItem }
|
||||||
.desc = { ent-BaseItem.desc }
|
.desc = { ent-BaseItem.desc }
|
||||||
ent-PartRodMetal = металлические стержни
|
ent-PartRodMetal = металлический стержень
|
||||||
.suffix = Полный
|
.suffix = Полный
|
||||||
.desc = { ent-PartBase.desc }
|
.desc = { ent-PartBase.desc }
|
||||||
ent-PartRodMetal1 = металлический стержень
|
ent-PartRodMetal1 = { ent-PartRodMetal }
|
||||||
.suffix = Один
|
.suffix = Один
|
||||||
.desc = { ent-PartRodMetal.desc }
|
.desc = { ent-PartRodMetal.desc }
|
||||||
|
ent-PartRodMetalLingering0 = { ent-PartRodMetal }
|
||||||
|
.desc = { ent-PartRodMetal.desc }
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ ent-SheetGlass1 = { ent-SheetGlass }
|
|||||||
.suffix = Один
|
.suffix = Один
|
||||||
.desc = { ent-SheetGlass.desc }
|
.desc = { ent-SheetGlass.desc }
|
||||||
ent-SheetGlassLingering0 = { ent-SheetGlass }
|
ent-SheetGlassLingering0 = { ent-SheetGlass }
|
||||||
.suffix = Не исчезают закончившись, 0
|
|
||||||
.desc = { ent-SheetGlass.desc }
|
.desc = { ent-SheetGlass.desc }
|
||||||
ent-SheetRGlass = бронестекло
|
ent-SheetRGlass = бронестекло
|
||||||
.suffix = Полный
|
.suffix = Полный
|
||||||
@@ -47,4 +46,4 @@ ent-SheetClockworkGlass = заводное стекло
|
|||||||
.suffix = Полный
|
.suffix = Полный
|
||||||
ent-SheetClockworkGlass1 = заводное стекло
|
ent-SheetClockworkGlass1 = заводное стекло
|
||||||
.suffix = Один
|
.suffix = Один
|
||||||
.desc = { ent-SheetClockworkGlass.desc }
|
.desc = { ent-SheetClockworkGlass.desc }
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ ent-SheetSteel = сталь
|
|||||||
ent-SheetSteel1 = сталь
|
ent-SheetSteel1 = сталь
|
||||||
.suffix = Один
|
.suffix = Один
|
||||||
.desc = { ent-SheetSteel.desc }
|
.desc = { ent-SheetSteel.desc }
|
||||||
|
ent-SheetSteelLingering0 = сталь
|
||||||
|
.desc = { ent-SheetSteel.desc }
|
||||||
ent-SheetPlasteel = пласталь
|
ent-SheetPlasteel = пласталь
|
||||||
.suffix = Полный
|
.suffix = Полный
|
||||||
.desc = { ent-SheetMetalBase.desc }
|
.desc = { ent-SheetMetalBase.desc }
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ ent-FloorTileItemBase = { ent-BaseItem }
|
|||||||
.desc = Может послужить неплохим метательным оружием.
|
.desc = Может послужить неплохим метательным оружием.
|
||||||
ent-FloorTileItemSteel = стальная плитка
|
ent-FloorTileItemSteel = стальная плитка
|
||||||
.desc = { ent-FloorTileItemBase.desc }
|
.desc = { ent-FloorTileItemBase.desc }
|
||||||
|
ent-FloorTileItemSteelLingering0 = стальная плитка
|
||||||
|
.desc = { ent-FloorTileItemBase.desc }
|
||||||
ent-FloorTileItemMetalDiamond = стальная плитка
|
ent-FloorTileItemMetalDiamond = стальная плитка
|
||||||
.desc = { ent-FloorTileItemBase.desc }
|
.desc = { ent-FloorTileItemBase.desc }
|
||||||
ent-FloorTileItemWood = деревянный пол
|
ent-FloorTileItemWood = деревянный пол
|
||||||
|
|||||||
@@ -14,7 +14,11 @@ ent-BaseSyringe = шприц
|
|||||||
.desc = Используется для забора образцов крови у существ, или для введения им реагентов.
|
.desc = Используется для забора образцов крови у существ, или для введения им реагентов.
|
||||||
ent-Syringe = { ent-BaseSyringe }
|
ent-Syringe = { ent-BaseSyringe }
|
||||||
.desc = { ent-BaseSyringe.desc }
|
.desc = { ent-BaseSyringe.desc }
|
||||||
|
ent-PrefilledSyringe = { ent-BaseSyringe }
|
||||||
|
.desc = { ent-BaseSyringe.desc }
|
||||||
ent-Pill = таблетка
|
ent-Pill = таблетка
|
||||||
.desc = Это не свеча.
|
.desc = Это не свеча.
|
||||||
ent-PillCanister = баночка для таблеток
|
ent-PillCanister = баночка для таблеток
|
||||||
.desc = Вмещает до 10 таблеток.
|
.desc = Вмещает до 10 таблеток.
|
||||||
|
ent-PillCanisterRandom = { ent-PillCanister }
|
||||||
|
.desc = { ent-PillCanister.desc }
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ ent-Gauze = марлевый бинт
|
|||||||
ent-Gauze1 = { ent-Gauze }
|
ent-Gauze1 = { ent-Gauze }
|
||||||
.desc = { ent-Gauze.desc }
|
.desc = { ent-Gauze.desc }
|
||||||
.suffix = Один
|
.suffix = Один
|
||||||
|
ent-Gauze10Lingering = { ent-Gauze }
|
||||||
|
.desc = { ent-Gauze.desc }
|
||||||
ent-AloeCream = алоэ крем
|
ent-AloeCream = алоэ крем
|
||||||
.desc = Крем для наружного применения при ожогах.
|
.desc = Крем для наружного применения при ожогах.
|
||||||
ent-PillDexalin = таблетка дексалина
|
ent-PillDexalin = таблетка дексалина
|
||||||
|
|||||||
@@ -25,3 +25,5 @@ ent-BaseUplinkRadio40TC = { ent-BaseUplinkRadio }
|
|||||||
ent-BaseUplinkRadioDebug = { ent-BaseUplinkRadio }
|
ent-BaseUplinkRadioDebug = { ent-BaseUplinkRadio }
|
||||||
.suffix = Дебаг
|
.suffix = Дебаг
|
||||||
.desc = { ent-BaseUplinkRadio.desc }
|
.desc = { ent-BaseUplinkRadio.desc }
|
||||||
|
ent-BaseUplinkRadio60TC = { ent-BaseUplinkRadio }
|
||||||
|
.desc = { ent-BaseUplinkRadio.desc }
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ uplink-grenade-frag-desc = Большой радиус поражения, ма
|
|||||||
# Utility
|
# Utility
|
||||||
uplink-holopara-kit-name = Набор Голопаразита
|
uplink-holopara-kit-name = Набор Голопаразита
|
||||||
uplink-holopara-kit-desc =
|
uplink-holopara-kit-desc =
|
||||||
Гордость и радость Cybersyn. Содержит инжектор, в котором находится разумный метафизический страж, сделанный из жесткого света, который находится в теле пользователя, когда он не активен.
|
Гордость и радость Cybersun. Содержит инжектор, в котором находится разумный метафизический страж, сделанный из жесткого света, который находится в теле пользователя, когда он не активен.
|
||||||
Страж может быстро наносить удары и невосприимчив к опасным средам и пулям, но любой наносимый им урон делится с пользователем.
|
Страж может быстро наносить удары и невосприимчив к опасным средам и пулям, но любой наносимый им урон делится с пользователем.
|
||||||
|
|
||||||
uplink-holoclown-kit-name = Набор Голоклоуна
|
uplink-holoclown-kit-name = Набор Голоклоуна
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
id: EffectBadFeeling
|
id: EffectBadFeeling
|
||||||
targetDepth: 0
|
targetDepth: 0
|
||||||
effectHint: artifact-effect-hint-mental
|
effectHint: artifact-effect-hint-mental
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: TelepathicArtifact
|
- type: TelepathicArtifact
|
||||||
messages:
|
messages:
|
||||||
@@ -32,6 +33,7 @@
|
|||||||
id: EffectGoodFeeling
|
id: EffectGoodFeeling
|
||||||
targetDepth: 0
|
targetDepth: 0
|
||||||
effectHint: artifact-effect-hint-mental
|
effectHint: artifact-effect-hint-mental
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: TelepathicArtifact
|
- type: TelepathicArtifact
|
||||||
messages:
|
messages:
|
||||||
@@ -61,6 +63,7 @@
|
|||||||
id: EffectJunkSpawn
|
id: EffectJunkSpawn
|
||||||
targetDepth: 0
|
targetDepth: 0
|
||||||
effectHint: artifact-effect-hint-creation
|
effectHint: artifact-effect-hint-creation
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: SpawnArtifact
|
- type: SpawnArtifact
|
||||||
maxSpawns: 10
|
maxSpawns: 10
|
||||||
@@ -100,12 +103,14 @@
|
|||||||
id: EffectLightFlicker
|
id: EffectLightFlicker
|
||||||
targetDepth: 0
|
targetDepth: 0
|
||||||
effectHint: artifact-effect-hint-electrical-interference
|
effectHint: artifact-effect-hint-electrical-interference
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: LightFlickerArtifact
|
- type: LightFlickerArtifact
|
||||||
|
|
||||||
- type: artifactEffect
|
- type: artifactEffect
|
||||||
id: EffectPointLight
|
id: EffectPointLight
|
||||||
targetDepth: 0
|
targetDepth: 0
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: PointLight
|
- type: PointLight
|
||||||
radius: 8
|
radius: 8
|
||||||
@@ -137,6 +142,7 @@
|
|||||||
id: EffectFloraSpawn
|
id: EffectFloraSpawn
|
||||||
targetDepth: 1
|
targetDepth: 1
|
||||||
effectHint: artifact-effect-hint-creation
|
effectHint: artifact-effect-hint-creation
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: SpawnArtifact
|
- type: SpawnArtifact
|
||||||
maxSpawns: 3
|
maxSpawns: 3
|
||||||
@@ -186,6 +192,7 @@
|
|||||||
id: EffectCold
|
id: EffectCold
|
||||||
targetDepth: 1
|
targetDepth: 1
|
||||||
effectHint: artifact-effect-hint-consumption
|
effectHint: artifact-effect-hint-consumption
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: TemperatureArtifact
|
- type: TemperatureArtifact
|
||||||
targetTemp: 50
|
targetTemp: 50
|
||||||
@@ -222,6 +229,7 @@
|
|||||||
id: EffectInstrumentSpawn
|
id: EffectInstrumentSpawn
|
||||||
targetDepth: 1
|
targetDepth: 1
|
||||||
effectHint: artifact-effect-hint-creation
|
effectHint: artifact-effect-hint-creation
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: SpawnArtifact
|
- type: SpawnArtifact
|
||||||
maxSpawns: 5
|
maxSpawns: 5
|
||||||
@@ -232,6 +240,7 @@
|
|||||||
id: EffectMonkeySpawn
|
id: EffectMonkeySpawn
|
||||||
targetDepth: 1
|
targetDepth: 1
|
||||||
effectHint: artifact-effect-hint-creation
|
effectHint: artifact-effect-hint-creation
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: SpawnArtifact
|
- type: SpawnArtifact
|
||||||
spawns:
|
spawns:
|
||||||
@@ -246,6 +255,7 @@
|
|||||||
id: EffectChargeBatteries
|
id: EffectChargeBatteries
|
||||||
targetDepth: 1
|
targetDepth: 1
|
||||||
effectHint: artifact-effect-hint-release
|
effectHint: artifact-effect-hint-release
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: ChargeBatteryArtifact
|
- type: ChargeBatteryArtifact
|
||||||
- type: TelepathicArtifact
|
- type: TelepathicArtifact
|
||||||
@@ -265,6 +275,7 @@
|
|||||||
id: EffectKnock
|
id: EffectKnock
|
||||||
targetDepth: 1
|
targetDepth: 1
|
||||||
effectHint: artifact-effect-hint-electrical-interference
|
effectHint: artifact-effect-hint-electrical-interference
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: KnockArtifact
|
- type: KnockArtifact
|
||||||
|
|
||||||
@@ -292,6 +303,7 @@
|
|||||||
id: EffectInvisibility
|
id: EffectInvisibility
|
||||||
targetDepth: 2
|
targetDepth: 2
|
||||||
effectHint: artifact-effect-hint-visual
|
effectHint: artifact-effect-hint-visual
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: Stealth
|
- type: Stealth
|
||||||
hadOutline: true
|
hadOutline: true
|
||||||
@@ -318,6 +330,7 @@
|
|||||||
id: EffectRareMaterialSpawn
|
id: EffectRareMaterialSpawn
|
||||||
targetDepth: 2
|
targetDepth: 2
|
||||||
effectHint: artifact-effect-hint-creation
|
effectHint: artifact-effect-hint-creation
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: SpawnArtifact
|
- type: SpawnArtifact
|
||||||
spawns:
|
spawns:
|
||||||
@@ -415,6 +428,7 @@
|
|||||||
id: EffectCashSpawn
|
id: EffectCashSpawn
|
||||||
targetDepth: 2
|
targetDepth: 2
|
||||||
effectHint: artifact-effect-hint-creation
|
effectHint: artifact-effect-hint-creation
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: SpawnArtifact
|
- type: SpawnArtifact
|
||||||
maxSpawns: 10
|
maxSpawns: 10
|
||||||
@@ -462,6 +476,7 @@
|
|||||||
id: EffectBlink
|
id: EffectBlink
|
||||||
targetDepth: 2
|
targetDepth: 2
|
||||||
effectHint: artifact-effect-hint-displacement
|
effectHint: artifact-effect-hint-displacement
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: RandomTeleportArtifact
|
- type: RandomTeleportArtifact
|
||||||
|
|
||||||
@@ -593,6 +608,7 @@
|
|||||||
id: EffectHealAll
|
id: EffectHealAll
|
||||||
targetDepth: 3
|
targetDepth: 3
|
||||||
effectHint: artifact-effect-hint-environment
|
effectHint: artifact-effect-hint-environment
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: DamageNearbyArtifact
|
- type: DamageNearbyArtifact
|
||||||
damageChance: 1
|
damageChance: 1
|
||||||
@@ -618,6 +634,7 @@
|
|||||||
id: EffectMaterialSpawn
|
id: EffectMaterialSpawn
|
||||||
targetDepth: 3
|
targetDepth: 3
|
||||||
effectHint: artifact-effect-hint-creation
|
effectHint: artifact-effect-hint-creation
|
||||||
|
safe: true # WD
|
||||||
components:
|
components:
|
||||||
- type: SpawnArtifact
|
- type: SpawnArtifact
|
||||||
maxSpawns: 5
|
maxSpawns: 5
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
id: EffectIntercom
|
id: EffectIntercom
|
||||||
targetDepth: 2
|
targetDepth: 2
|
||||||
effectHint: artifact-effect-hint-communication
|
effectHint: artifact-effect-hint-communication
|
||||||
|
safe: true # WD
|
||||||
permanentComponents:
|
permanentComponents:
|
||||||
- type: RadioMicrophone
|
- type: RadioMicrophone
|
||||||
powerRequired: false
|
powerRequired: false
|
||||||
@@ -31,6 +32,7 @@
|
|||||||
id: EffectRandomInstrument
|
id: EffectRandomInstrument
|
||||||
targetDepth: 2
|
targetDepth: 2
|
||||||
effectHint: artifact-effect-hint-mental
|
effectHint: artifact-effect-hint-mental
|
||||||
|
safe: true # WD
|
||||||
permanentComponents:
|
permanentComponents:
|
||||||
- type: Instrument
|
- type: Instrument
|
||||||
- type: ActivatableUI
|
- type: ActivatableUI
|
||||||
@@ -43,6 +45,7 @@
|
|||||||
id: EffectStorage
|
id: EffectStorage
|
||||||
targetDepth: 2
|
targetDepth: 2
|
||||||
effectHint: artifact-effect-hint-storage
|
effectHint: artifact-effect-hint-storage
|
||||||
|
safe: true # WD
|
||||||
whitelist:
|
whitelist:
|
||||||
components:
|
components:
|
||||||
- Item # it doesnt necessarily have to be restricted from structures, but i think it'll be better that way
|
- Item # it doesnt necessarily have to be restricted from structures, but i think it'll be better that way
|
||||||
@@ -62,6 +65,7 @@
|
|||||||
id: EffectPhasing
|
id: EffectPhasing
|
||||||
targetDepth: 2
|
targetDepth: 2
|
||||||
effectHint: artifact-effect-hint-phasing
|
effectHint: artifact-effect-hint-phasing
|
||||||
|
safe: true # WD
|
||||||
permanentComponents:
|
permanentComponents:
|
||||||
- type: PhasingArtifact
|
- type: PhasingArtifact
|
||||||
|
|
||||||
@@ -83,6 +87,7 @@
|
|||||||
id: EffectSolutionStorage
|
id: EffectSolutionStorage
|
||||||
targetDepth: 2
|
targetDepth: 2
|
||||||
effectHint: artifact-effect-hint-storage
|
effectHint: artifact-effect-hint-storage
|
||||||
|
safe: true # WD
|
||||||
whitelist:
|
whitelist:
|
||||||
components:
|
components:
|
||||||
- Item
|
- Item
|
||||||
@@ -112,6 +117,7 @@
|
|||||||
id: EffectSpeedUp
|
id: EffectSpeedUp
|
||||||
targetDepth: 2
|
targetDepth: 2
|
||||||
effectHint: artifact-effect-hint-displacement
|
effectHint: artifact-effect-hint-displacement
|
||||||
|
safe: true # WD
|
||||||
whitelist:
|
whitelist:
|
||||||
components:
|
components:
|
||||||
- Item
|
- Item
|
||||||
@@ -124,6 +130,7 @@
|
|||||||
id: EffectDrill
|
id: EffectDrill
|
||||||
targetDepth: 3
|
targetDepth: 3
|
||||||
effectHint: artifact-effect-hint-drill
|
effectHint: artifact-effect-hint-drill
|
||||||
|
safe: true # WD
|
||||||
whitelist:
|
whitelist:
|
||||||
components:
|
components:
|
||||||
- Item
|
- Item
|
||||||
@@ -142,6 +149,7 @@
|
|||||||
id: EffectPowerGen20K
|
id: EffectPowerGen20K
|
||||||
targetDepth: 3
|
targetDepth: 3
|
||||||
effectHint: artifact-effect-hint-release
|
effectHint: artifact-effect-hint-release
|
||||||
|
safe: true # WD
|
||||||
blacklist:
|
blacklist:
|
||||||
components:
|
components:
|
||||||
- Item
|
- Item
|
||||||
@@ -159,6 +167,7 @@
|
|||||||
id: EffectBigIron
|
id: EffectBigIron
|
||||||
targetDepth: 3
|
targetDepth: 3
|
||||||
effectHint: artifact-effect-hint-gun
|
effectHint: artifact-effect-hint-gun
|
||||||
|
safe: true # WD
|
||||||
whitelist:
|
whitelist:
|
||||||
components:
|
components:
|
||||||
- Item
|
- Item
|
||||||
@@ -192,6 +201,7 @@
|
|||||||
id: EffectSentience
|
id: EffectSentience
|
||||||
targetDepth: 3
|
targetDepth: 3
|
||||||
effectHint: artifact-effect-hint-sentience
|
effectHint: artifact-effect-hint-sentience
|
||||||
|
safe: true # WD
|
||||||
permanentComponents:
|
permanentComponents:
|
||||||
- type: GhostRole
|
- type: GhostRole
|
||||||
allowMovement: true
|
allowMovement: true
|
||||||
@@ -208,6 +218,7 @@
|
|||||||
id: EffectMultitool
|
id: EffectMultitool
|
||||||
targetDepth: 3
|
targetDepth: 3
|
||||||
effectHint: artifact-effect-hint-multitool
|
effectHint: artifact-effect-hint-multitool
|
||||||
|
safe: true # WD
|
||||||
whitelist:
|
whitelist:
|
||||||
components:
|
components:
|
||||||
- Item
|
- Item
|
||||||
|
|||||||
Reference in New Issue
Block a user