Revert "Не должно ебануть (#170)"

This reverts commit aabdcec60c.
This commit is contained in:
BIGZi0348
2024-11-12 20:48:25 +03:00
parent aabdcec60c
commit 55fe86dde4
70 changed files with 186 additions and 1097 deletions

View File

@@ -6,7 +6,7 @@ using Robust.Shared.Prototypes;
namespace Content.Client.Overlays;
public sealed class ShowAntagonistIconsSystem : EquipmentHudSystem<ShowAntagonistIconsComponent>
public sealed class ShowSyndicateIconsSystem : EquipmentHudSystem<ShowSyndicateIconsComponent>
{
[Dependency] private readonly IPrototypeManager _prototype = default!;

View File

@@ -1,8 +1,10 @@
using System.IO.Compression;
using Content.Client.Administration.Managers;
using Content.Client.Launcher;
using Content.Client.MainMenu;
using Content.Client.Replay.Spectator;
using Content.Client.Replay.UI.Loading;
using Content.Client.Stylesheets;
using Content.Client.UserInterface.Systems.Chat;
using Content.Shared.Chat;
using Content.Shared.Effects;
@@ -24,6 +26,8 @@ using Robust.Client.Replays.Playback;
using Robust.Client.State;
using Robust.Client.Timing;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Shared;
using Robust.Shared.Configuration;
using Robust.Shared.ContentPack;
@@ -56,7 +60,7 @@ public sealed class ContentReplayPlaybackManager
public bool IsScreenshotMode = false;
private bool _initialized;
/// <summary>
/// Most recently loaded file, for re-attempting the load with error tolerance.
/// Required because the zip reader auto-disposes and I'm too lazy to change it so that
@@ -92,18 +96,32 @@ public sealed class ContentReplayPlaybackManager
return;
}
if (_client.RunLevel == ClientRunLevel.SinglePlayerGame)
_client.StopSinglePlayer();
ReturnToDefaultState();
Action? retryAction = null;
Action? cancelAction = null;
// Show a popup window with the error message
var text = Loc.GetString("replay-loading-failed", ("reason", exception));
var box = new BoxContainer
{
Orientation = BoxContainer.LayoutOrientation.Vertical,
Children = {new Label {Text = text}}
};
var popup = new DefaultWindow { Title = "Error!" };
popup.Contents.AddChild(box);
// Add button for attempting to re-load the replay while ignoring some errors.
if (!_cfg.GetCVar(CVars.ReplayIgnoreErrors) && LastLoad is { } last)
if (!_cfg.GetCVar(CVars.ReplayIgnoreErrors) && LastLoad is {} last)
{
retryAction = () =>
var button = new Button
{
Text = Loc.GetString("replay-loading-retry"),
StyleClasses = { StyleBase.ButtonCaution }
};
button.OnPressed += _ =>
{
_cfg.SetCVar(CVars.ReplayIgnoreErrors, true);
popup.Dispose();
IReplayFileReader reader = last.Zip == null
? new ReplayFileReaderResources(_resMan, last.Folder)
@@ -111,19 +129,11 @@ public sealed class ContentReplayPlaybackManager
_loadMan.LoadAndStartReplay(reader);
};
box.AddChild(button);
}
// If we have an explicit menu to get back to (e.g. replay browser UI), show a cancel button.
if (DefaultState != null)
{
cancelAction = () =>
{
_stateMan.RequestStateChange(DefaultState);
};
}
// Switch to a new game state to present the error and cancel/retry options.
var state = _stateMan.RequestStateChange<ReplayLoadingFailed>();
state.SetData(exception, cancelAction, retryAction);
popup.OpenCentered();
}
public void ReturnToDefaultState()

View File

@@ -1,30 +0,0 @@
using Content.Client.Stylesheets;
using Robust.Client.State;
using Robust.Client.UserInterface;
using Robust.Shared.Utility;
namespace Content.Client.Replay.UI.Loading;
/// <summary>
/// State used to display an error message if a replay failed to load.
/// </summary>
/// <seealso cref="ReplayLoadingFailedControl"/>
/// <seealso cref="ContentReplayPlaybackManager"/>
public sealed class ReplayLoadingFailed : State
{
[Dependency] private readonly IStylesheetManager _stylesheetManager = default!;
[Dependency] private readonly IUserInterfaceManager _userInterface = default!;
private ReplayLoadingFailedControl? _control;
public void SetData(Exception exception, Action? cancelPressed, Action? retryPressed)
{
DebugTools.Assert(_control != null);
_control.SetData(exception, cancelPressed, retryPressed);
}
protected override void Startup()
{
_control = new ReplayLoadingFailedControl(_stylesheetManager);
_userInterface.StateRoot.AddChild(_control);
}
protected override void Shutdown()
{
_control?.Orphan();
}
}

View File

@@ -1,14 +0,0 @@
<Control xmlns="https://spacestation14.io"
xmlns:pllax="clr-namespace:Content.Client.Parallax">
<pllax:ParallaxControl />
<Control HorizontalAlignment="Center" VerticalAlignment="Center">
<PanelContainer StyleClasses="AngleRect" />
<BoxContainer Orientation="Vertical" SetSize="800 600" Margin="2">
<ScrollContainer Name="what" VerticalExpand="True" HScrollEnabled="False" Margin="0 0 0 2" ReturnMeasure="True">
<RichTextLabel Name="ReasonLabel" VerticalAlignment="Top" />
</ScrollContainer>
<Button Name="RetryButton" StyleClasses="Caution" Text="{Loc 'replay-loading-retry'}" Visible="False" />
<Button Name="CancelButton" Text="{Loc 'replay-loading-cancel'}" Visible="False" />
</BoxContainer>
</Control>
</Control>

View File

@@ -1,38 +0,0 @@
using Content.Client.Stylesheets;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.Utility;
namespace Content.Client.Replay.UI.Loading;
[GenerateTypedNameReferences]
public sealed partial class ReplayLoadingFailedControl : Control
{
public ReplayLoadingFailedControl(IStylesheetManager stylesheet)
{
RobustXamlLoader.Load(this);
Stylesheet = stylesheet.SheetSpace;
LayoutContainer.SetAnchorPreset(this, LayoutContainer.LayoutPreset.Wide);
}
public void SetData(Exception exception, Action? cancelPressed, Action? retryPressed)
{
ReasonLabel.SetMessage(
FormattedMessage.FromUnformatted(Loc.GetString("replay-loading-failed", ("reason", exception))));
if (cancelPressed != null)
{
CancelButton.Visible = true;
CancelButton.OnPressed += _ =>
{
cancelPressed();
};
}
if (retryPressed != null)
{
RetryButton.Visible = true;
RetryButton.OnPressed += _ =>
{
retryPressed();
};
}
}
}

View File

@@ -93,12 +93,12 @@ namespace Content.Client._White.Medical.BodyScanner
CurrentThirst.Text = Loc.GetString("body-scanner-console-window-thirst-current-thirst-text",
("amount", $"{state.CurrentThirst:f1}"));
CurrentThirstStatus.Text = Loc.GetString("body-scanner-console-window-thirst-current-thirst-status-text",
("status", Loc.GetString("body-scanner-console-window-thirst-current-thirst-status-" + state.CurrentThirstThreshold)));
("status", Loc.GetString("body-scanner-console-window-hunger-current-hunger-status-" + state.CurrentThirstThreshold)));
CurrentHunger.Text = Loc.GetString("body-scanner-console-window-hunger-current-hunger-text",
("amount", $"{state.CurrentHunger:f1}"));
CurrentHungerStatus.Text = Loc.GetString("body-scanner-console-window-hunger-current-hunger-status-text",
("status", Loc.GetString("body-scanner-console-window-hunger-current-hunger-status-" + state.CurrentHungerThreshold)));
("status", Loc.GetString("body-scanner-console-window-thirst-current-thirst-status-" + state.CurrentHungerThreshold)));
BloodSolutionVolume.Text = Loc.GetString("body-scanner-console-window-blood-solutions-volume-group-text",
("amount", $"{state.BloodSolution.Volume.Float():f1}"),
@@ -127,9 +127,6 @@ namespace Content.Client._White.Medical.BodyScanner
});
// Third column.
if (state.DeadThreshold == FixedPoint2.Zero)
state.DeadThreshold = 0.01;
HealthBar.Value = 1 - (state.TotalDamage / state.DeadThreshold).Float();
HealthBar.ForegroundStyleBoxOverride = new StyleBoxFlat()

View File

@@ -9,7 +9,6 @@ using Content.Shared.Mobs.Components;
using Content.Shared.Mobs.Systems;
using Content.Shared.Salvage.Expeditions;
using Content.Shared.Shuttles.Components;
using Content.Shared.Localizations;
using Robust.Shared.Map.Components;
using Robust.Shared.Player;
@@ -104,10 +103,8 @@ public sealed partial class SalvageSystem
Announce(args.MapUid, Loc.GetString("salvage-expedition-announcement-countdown-minutes", ("duration", (component.EndTime - _timing.CurTime).Minutes)));
var directionLocalization = ContentLocalizationManager.FormatDirection(component.DungeonLocation.GetDir()).ToLower(); // WD Ahead of wizden
if (component.DungeonLocation != Vector2.Zero)
Announce(args.MapUid, Loc.GetString("salvage-expedition-announcement-dungeon", ("direction", directionLocalization))); // WD Ahead of wizden
Announce(args.MapUid, Loc.GetString("salvage-expedition-announcement-dungeon", ("direction", component.DungeonLocation.GetDir())));
component.Stage = ExpeditionStage.Running;
Dirty(args.MapUid, component);

View File

@@ -1,53 +0,0 @@
using Content.Shared._White.Implants.VoiceActivatedBomb;
using Content.Shared.Implants.Components;
using Content.Server.Explosion.Components;
using Content.Server.Speech.Components;
using Content.Shared.Popups;
using Content.Shared.Implants;
namespace Content.Server._White.Implants.VoiceActivatedBomb;
public sealed class VoiceActivatedBombSystem : SharedVoiceActivatedBombSystem
{
[Dependency] private readonly SharedPopupSystem _popup = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<SubdermalImplantComponent, InsertVoiceActivatedBombEvent>(OnTryInsertVoiceActivatedBombServer);
SubscribeLocalEvent<SubdermalImplantComponent, ImplanterUsed>(OnVoiceActivatedBombInserted);
}
private void OnTryInsertVoiceActivatedBombServer(Entity<SubdermalImplantComponent> ent, ref InsertVoiceActivatedBombEvent args)
{
if (!TryComp<TriggerOnVoiceComponent>(args.Implanter, out var implanterTrigger))
return;
if (implanterTrigger.KeyPhrase == null)
{
// TODO find some way to make it look good
// Right now it's overlaps with implanter-component-implant-failed popup
//var message = Loc.GetString("voice-activated-bomb-no-key-phrase");
//_popup.PopupEntity(message, args.Implanter, args.User);
args.Cancel();
return;
}
}
private void OnVoiceActivatedBombInserted(Entity<SubdermalImplantComponent> ent, ref ImplanterUsed args)
{
if (!Tag.HasTag(args.Implanter, VoiceActivatedBombTag))
return;
if (!TryComp<TriggerOnVoiceComponent>(args.Implanter, out var implanterTrigger))
return;
if (!TryComp<TriggerOnVoiceComponent>(args.Implant, out var implantTrigger))
return;
implantTrigger.KeyPhrase = implanterTrigger.KeyPhrase;
EnsureComp<ActiveListenerComponent>(args.Implant);
RemComp<TriggerOnVoiceComponent>(args.Implanter);
Tag.RemoveTag(args.Implanter, VoiceActivatedBombTag);
}
}

View File

@@ -76,41 +76,40 @@ public sealed class MeatyOreStoreSystem : EntitySystem
SubscribeLocalEvent<RoundRestartCleanupEvent>(OnPostRoundCleanup);
SubscribeNetworkEvent<MeatyOreShopRequestEvent>(OnShopRequested);
// SubscribeLocalEvent<GetVerbsEvent<Verb>>(MeatyOreVerbs);
//SubscribeLocalEvent<GetVerbsEvent<Verb>>(MeatyOreVerbs);
}
// private void MeatyOreVerbs(GetVerbsEvent<Verb> ev)
// {
// if (!_antagGrantEnabled)
// return;
//
// if (!EntityManager.TryGetComponent<ActorComponent>(ev.User, out var actorComponent))
// return;
//
// if (!_sponsorsManager.TryGetInfo(actorComponent.PlayerSession.UserId, out _))
// return;
//
// if (!HasComp<HumanoidAppearanceComponent>(ev.Target))
// return;
//
// if (!TryGetStore(actorComponent.PlayerSession, out var store, out var storeEntity))
// return;
//
// var verb = new Verb
// {
// Text = "Выдать роль.",
// ConfirmationPopup = true,
// Message = $"Цена - {MeatyOreCurrencyPrototype}:10",
// Act = () =>
// {
// TryAddRole(ev.User, ev.Target, store, storeEntity.Value);
// },
// Category = VerbCategory.MeatyOre
// };
//
// ev.Verbs.Add();
// }
// private void MeatyOreVerbs(GetVerbsEvent<Verb> ev)
// {
// if (!_antagGrantEnabled)
// return;
//
// if (!EntityManager.TryGetComponent<ActorComponent>(ev.User, out var actorComponent))
// return;
//
// if (!_sponsorsManager.TryGetInfo(actorComponent.PlayerSession.UserId, out _))
// return;
//
// if (!HasComp<HumanoidAppearanceComponent>(ev.Target))
// return;
//
// if (!TryGetStore(actorComponent.PlayerSession, out var store, out var storeEntity))
// return;
//
// var verb = new Verb
// {
// Text = "Выдать роль.",
// ConfirmationPopup = true,
// Message = $"Цена - {MeatyOreCurrencyPrototype}:10",
// Act = () =>
// {
// TryAddRole(ev.User, ev.Target, store, storeEntity.Value);
// },
// Category = VerbCategory.MeatyOre
// };
//
// ev.Verbs.Add();
// }
private void OnPanelEnableChanged(bool enabled)
{
@@ -270,21 +269,21 @@ public sealed class MeatyOreStoreSystem : EntitySystem
}
}
// private async void TryBanDolboeb(ICommonSession session)
// {
// if(_banManager.GetServerBans(session.UserId).Count > 0)
// return;
//
// _banManager.CreateServerBan(session.UserId,
// session.Name,
// null,
// null,
// null,
// 2880,
// NoteSeverity.Minor,
// "Кусок дерьма, блядина нахуй! У НАС АНТАЖКУ ВЫДАВАТЬ ЗАПРЕЩЕНО НАХУЙ!!!! ЧТОБ ТЯ ВЫЕБАЛИ СТО НЕГРОВ НАХУЙ!",
// false);
// }
// private async void TryBanDolboeb(ICommonSession session)
// {
// if(_banManager.GetServerBans(session.UserId).Count > 0)
// return;
//
// _banManager.CreateServerBan(session.UserId,
// session.Name,
// null,
// null,
// null,
// 2880,
// NoteSeverity.Minor,
// "Кусок дерьма, блядина нахуй! У НАС АНТАЖКУ ВЫДАВАТЬ ЗАПРЕЩЕНО НАХУЙ!!!! ЧТОБ ТЯ ВЫЕБАЛИ СТО НЕГРОВ НАХУЙ!",
// false);
// }
private async Task<bool> GrantAntagonist(string ckey, bool isFriend)
{

View File

@@ -354,7 +354,7 @@ namespace Content.Server._White.Medical.BodyScanner
("amount", $"{state.CurrentThirst:f1}")));
text.AppendLine(Loc.GetString("body-scanner-console-window-thirst-current-thirst-status-text",
("status",
Loc.GetString("body-scanner-console-window-thirst-current-thirst-status-" +
Loc.GetString("body-scanner-console-window-hunger-current-hunger-status-" +
state.CurrentThirstThreshold))));
text.AppendLine();
@@ -363,7 +363,7 @@ namespace Content.Server._White.Medical.BodyScanner
("amount", $"{state.CurrentHunger:f1}")));
text.AppendLine(Loc.GetString("body-scanner-console-window-hunger-current-hunger-status-text",
("status",
Loc.GetString("body-scanner-console-window-hunger-current-hunger-status-" +
Loc.GetString("body-scanner-console-window-thirst-current-thirst-status-" +
state.CurrentHungerThreshold))));
text.AppendLine();

View File

@@ -44,18 +44,6 @@ public sealed class SubdermalImplantRemoved(EntityUid user, EntityUid target, Su
public SubdermalImplantComponent Component = component;
}
public sealed class ImplanterUsed(EntityUid implant, EntityUid implanter) : EventArgs
{
/// <summary>
/// Implant which was used
/// </summary>
public EntityUid Implant = implant;
/// <summary>
/// Implanter which was used
/// </summary>
public EntityUid Implanter = implanter;
}
//WD EDIT END
public abstract class SharedImplanterSystem : EntitySystem
@@ -125,7 +113,6 @@ public abstract class SharedImplanterSystem : EntitySystem
var ev = new TransferDnaEvent { Donor = target, Recipient = implanter };
RaiseLocalEvent(target, ref ev);
RaiseLocalEvent(implant.Value, new ImplanterUsed(implant.Value, implanter)); // WD
Dirty(implanter, component);
}

View File

@@ -54,7 +54,7 @@ public partial class InventorySystem
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowHungerIconsComponent>>(RelayInventoryEvent);
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowThirstIconsComponent>>(RelayInventoryEvent);
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowMindShieldIconsComponent>>(RelayInventoryEvent);
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowAntagonistIconsComponent>>(RelayInventoryEvent);
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowSyndicateIconsComponent>>(RelayInventoryEvent);
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowCriminalRecordIconsComponent>>(RelayInventoryEvent);
SubscribeLocalEvent<InventoryComponent, GetVerbsEvent<EquipmentVerb>>(OnGetEquipmentVerbs);

View File

@@ -14,26 +14,9 @@ public sealed class MobStateActionsSystem : EntitySystem
public override void Initialize()
{
SubscribeLocalEvent<MobStateActionsComponent, MobStateChangedEvent>(OnMobStateChanged);
SubscribeLocalEvent<MobStateComponent, ComponentInit>(OnMobStateComponentInit); // WD ahead of wizden
}
private void OnMobStateChanged(EntityUid uid, MobStateActionsComponent component, MobStateChangedEvent args)
{
ComposeActions(uid, component, args.NewMobState); // WD ahead of wizden
}
private void OnMobStateComponentInit(EntityUid uid, MobStateComponent component, ComponentInit args) // WD ahead of wizden
{
if (!TryComp<MobStateActionsComponent>(uid, out var mobStateActionsComp))
return;
ComposeActions(uid, mobStateActionsComp, component.CurrentState);
}
/// <summary>
/// Adds or removes actions from a mob based on mobstate.
/// </summary>
private void ComposeActions(EntityUid uid, MobStateActionsComponent component, MobState newMobState) // WD ahead of wizden
{
if (!TryComp<ActionsComponent>(uid, out var action))
return;
@@ -44,7 +27,7 @@ public sealed class MobStateActionsSystem : EntitySystem
}
component.GrantedActions.Clear();
if (!component.Actions.TryGetValue(newMobState, out var toGrant))
if (!component.Actions.TryGetValue(args.NewMobState, out var toGrant))
return;
foreach (var id in toGrant)

View File

@@ -6,4 +6,4 @@ namespace Content.Shared.Overlays;
/// This component allows you to identify members of the Syndicate faction.
/// </summary>
[RegisterComponent, NetworkedComponent]
public sealed partial class ShowAntagonistIconsComponent : Component {}
public sealed partial class ShowSyndicateIconsComponent : Component {}

View File

@@ -1,35 +0,0 @@
using Content.Shared.Body.Components;
using Content.Shared.Implants;
using Content.Shared.Tag;
namespace Content.Shared._White.Implants.VoiceActivatedBomb;
public abstract class SharedVoiceActivatedBombSystem : EntitySystem
{
[Dependency] protected readonly TagSystem Tag = default!;
protected const string VoiceActivatedBombTag = "VoiceActivatedBombImplant";
public override void Initialize()
{
SubscribeLocalEvent<BodyComponent, AddImplantAttemptEvent>(OnTryInsertVoiceActivatedBomb);
}
private void OnTryInsertVoiceActivatedBomb(Entity<BodyComponent> ent, ref AddImplantAttemptEvent args)
{
if (!Tag.HasTag(args.Implant, VoiceActivatedBombTag))
return;
var ev = new InsertVoiceActivatedBombEvent(args.User, args.Implant, args.Implanter);
RaiseLocalEvent(args.Implant, ev);
if (ev.Cancelled)
args.Cancel();
return;
}
}
public sealed class InsertVoiceActivatedBombEvent(EntityUid user, EntityUid implant, EntityUid implanter)
: CancellableEntityEventArgs
{
public readonly EntityUid User = user;
public readonly EntityUid Implant = implant;
public readonly EntityUid Implanter = implanter;
}

View File

@@ -1,4 +1,71 @@
Entries:
- author: hailrakes
changes:
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0430 \u0430\u0432\u0442\
\u043E\u0433\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u044F \u0441\u043F\u0438\
\u0441\u043A\u0430 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0432\
\ Discord."
type: Add
id: 97
time: '2023-03-01T12:37:40.0000000+00:00'
- author: RavMorgan
changes:
- message: "\u041F\u0430\u043D\u0435\u043B\u044C \u0441 \u044D\u043C\u043E\u0443\
\u0442\u0430\u043C\u0438 \u0442\u0435\u043F\u0435\u0440\u044C \u043E\u0442\u0441\
\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0430!"
type: Add
- message: "\u0412\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u0443\u0431\u0440\u0430\
\u043D\u044B \u043B\u0438\u043D\u043A\u0438 \u043D\u0430 \u043F\u0440\u043E\u0444\
\u0435\u0441\u0441\u0438\u0438 \u0432 \u0447\u0430\u0442\u0435!"
type: Remove
id: 98
time: '2023-03-01T19:21:18.0000000+00:00'
- author: rhailrake
changes:
- message: "\u0422\u0435\u043F\u0435\u0440\u044C \u0431\u043E\u0440\u0433\u0430\
\ \u043C\u043E\u0436\u043D\u043E \u0437\u0430\u0441\u0442\u0430\u043D\u0438\u0442\
\u044C \u0444\u043B\u0435\u0448\u043A\u043E\u0439!"
type: Add
- message: "\u0422\u0440\u0438 \u043D\u043E\u0432\u044B\u0445 \u0431\u043E\u0440\
\u0433\u0430: Sec, Eng, Syndi"
type: Add
- message: "\u0422\u0435\u043F\u0435\u0440\u044C \u043E\u0433\u043D\u0435\u0442\u0443\
\u0448\u0438\u0442\u0435\u043B\u044C \u0437\u0430\u043F\u0440\u0430\u0432\u043B\
\u044F\u0435\u0442\u0441\u044F \u0441\u043E \u0432\u0440\u0435\u043C\u0435\u043D\
\u0435\u043C."
type: Add
id: 99
time: '2023-03-02T13:00:53.0000000+00:00'
- author: RavMorgan
changes:
- message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D \u0422\u0422\u0421\
\ \u0443 \u043A\u043B\u043E\u0443\u043D\u0430!"
type: Add
id: 100
time: '2023-03-02T13:25:24.0000000+00:00'
- author: RavMorgan
changes:
- message: "\u0424\u0438\u043A\u0441 \u043F\u0430\u043D\u0435\u043B\u0438 \u0441\
\ \u044D\u043C\u043E\u0443\u0442\u0430\u043C\u0438!"
type: Add
id: 101
time: '2023-03-03T21:17:20.0000000+00:00'
- author: KettlebellOfCreation
changes:
- message: "\u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0430 \u0437\u0430\u0434\
\u0435\u0440\u0436\u043A\u0430 \u0432 90 \u0441\u0435\u043A\u0443\u043D\u0434\
\ \u043C\u0435\u0436\u0434\u0443 \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u043E\
\u0439 LOOC \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439."
type: Add
id: 102
time: '2023-03-03T21:19:04.0000000+00:00'
- author: BronyUraj
changes:
- message: "Bomb Cap \u0434\u043B\u044F \u0433\u0430\u0437\u043E\u0432\u044B\u0445\
\ \u0431\u043E\u043C\u0431."
type: Add
id: 103
time: '2023-03-04T15:46:44.0000000+00:00'
- author: NCast
changes:
- message: "\u0414\u043E\u0431\u0430\u0432\u0438\u043B \u0440\u0435\u0446\u0435\u043F\
@@ -8784,103 +8851,3 @@
id: 596
time: '2024-11-05T11:52:29.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/770
- author: Valtos
changes:
- message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0430 \u043F\u0440\
\u043E\u0431\u043B\u0435\u043C\u0430 \u0441 \u0437\u0430\u0433\u0440\u0443\u0437\
\u043A\u043E\u0439 \u0440\u0435\u043F\u043B\u0435\u0435\u0432. \u041E\u043D\u0438\
\ \u0432\u0441\u0451 \u0435\u0449\u0451 \u043C\u043E\u0433\u0443\u0442 \u0432\
\u044B\u0434\u0430\u0432\u0430\u0442\u044C \u043E\u0448\u0438\u0431\u043A\u0443\
, \u043E\u0434\u043D\u0430\u043A\u043E \u0442\u0435\u043F\u0435\u0440\u044C\
\ \u0442\u043E\u0447\u043D\u043E \u0434\u043E\u043B\u0436\u043D\u044B \u0437\
\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044C\u0441\u044F."
type: Fix
id: 597
time: '2024-11-05T20:04:51.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/772
- author: BIG_Zi_348
changes:
- message: "\u0412\u0437\u0440\u044B\u0432\u043D\u0430\u044F \u0440\u0443\u0447\u043A\
\u0430 \u0441\u0438\u043D\u0434\u0438\u043A\u0430\u0442\u0430 \u0442\u0435\u043F\
\u0435\u0440\u044C \u0432\u0437\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F\
."
type: Fix
id: 598
time: '2024-11-05T21:28:42.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/771
- author: Valtos
changes:
- message: "\u041E\u043F\u0442\u0438\u043C\u0438\u0437\u0438\u0440\u043E\u0432\u0430\
\u043D \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u043D\u0433 \u044D\u043D\u0442\
\u0438\u0442\u0438 \u0432 \u043A\u043E\u0441\u043C\u043E\u0441\u0435"
type: Tweak
- message: "\u0422\u0432\u0438\u043A\u043D\u0443\u0442\u0430 \u043F\u0440\u043E\u0438\
\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\
\u044C \u0431\u0434"
type: Tweak
- message: "\u0414\u043E\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u0430 \u0441\u0438\
\u0441\u0442\u0435\u043C\u0430 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\
\u0438 \u0441\u043E\u0431\u044B\u0442\u0438\u0439"
type: Tweak
id: 599
time: '2024-11-07T23:21:53.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/775
- author: BIG_Zi_348
changes:
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u044B \u0443\u043B\u0438\
\u0442\u043A\u0438. \u0427\u0435\u0441\u0442\u043D\u043E, \u043F\u0440\u043E\
\u0441\u0442\u043E \u0443\u043B\u0438\u0442\u043A\u0438, \u043E\u043D\u0438\
\ \u043D\u0438\u043A\u0430\u043A \u043D\u0435 \u043C\u043E\u0433\u0443\u0442\
\ \u043F\u043E\u0432\u043B\u0438\u044F\u0442\u044C \u043D\u0430 \u0440\u0430\
\u0431\u043E\u0442\u0443 \u0441\u0442\u0430\u043D\u0446\u0438\u0438. \u041D\u0435\
\ \u043D\u0430\u0434\u043E \u0432\u044B\u0437\u044B\u0432\u0430\u0442\u044C\
\ \u044D\u0432\u0430\u043A\u0443\u0430\u0446\u0438\u044E, \u0432\u044B \u0441\
\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u0441\u044C."
type: Add
id: 600
time: '2024-11-11T06:54:23.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/774
- author: BIG_Zi_348
changes:
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u044B \u043D\u0435\u0434\
\u043E\u0441\u0442\u0430\u044E\u0449\u0438\u0435 \u043F\u0435\u0440\u0435\u0432\
\u043E\u0434\u044B \u043E\u0440\u0443\u0436\u0435\u0439\u043D\u044B\u043C \u0441\
\u0435\u0439\u0444\u0430\u043C."
type: Add
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u044B \u043D\u0435\u0434\
\u043E\u0441\u0442\u0430\u044E\u0449\u0438\u0435 \u043F\u0435\u0440\u0435\u0432\
\u043E\u0434\u044B \u0441\u043A\u0430\u043D\u0435\u0440\u0443 \u0430\u043D\u043E\
\u043C\u0430\u043B\u0438\u0439."
type: Add
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u044B \u043D\u0435\u0434\
\u043E\u0441\u0442\u0430\u044E\u0449\u0438\u0435 \u043F\u0435\u0440\u0435\u0432\
\u043E\u0434\u044B \u0441\u043A\u0430\u043D\u0435\u0440\u0443 \u0437\u0434\u043E\
\u0440\u043E\u0432\u044C\u044F."
type: Add
- message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D \u043F\u0438\u043A\
\u0441\u0435\u043B\u044C \u0432 \u0441\u043F\u0440\u0430\u0439\u0442\u0435 \u0434\
\u0438\u0437\u0435\u0439\u0431\u043B\u0435\u0440\u0430."
type: Fix
id: 601
time: '2024-11-11T06:55:45.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/778
- author: BIG_Zi_348
changes:
- message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0430 \u0440\u0430\
\u0431\u043E\u0442\u0430 \u0441\u043A\u0430\u043D\u0435\u0440\u0430 \u0442\u0435\
\u043B\u0430."
type: Fix
id: 602
time: '2024-11-11T06:59:00.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/781
- author: BIG_Zi_348
changes:
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u043D\u043E\u0432\u044B\
\u0439 \u0438\u043C\u043F\u043B\u0430\u043D\u0442 \u0434\u043B\u044F \u0441\u0438\
\u043D\u0434\u0438\u043A\u0430\u0442\u0430 - \u0431\u043E\u043C\u0431\u0430\
\ \u0441 \u0433\u043E\u043B\u043E\u0441\u043E\u0432\u043E\u0439 \u0430\u043A\
\u0442\u0438\u0432\u0430\u0446\u0438\u0435\u0439."
type: Add
id: 603
time: '2024-11-11T07:02:02.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/782

View File

@@ -10,13 +10,6 @@ ghost-role-information-mouse-description = A hungry and mischievous mouse.
ghost-role-information-mothroach-name = Mothroach
ghost-role-information-mothroach-description = A cute but mischievous mothroach.
ghost-role-information-snail-name = Snail
ghost-role-information-snail-description = A little snail who doesn't mind a bit of space. Just stay on grid!
ghost-role-information-snailspeed-name = Snail
ghost-role-information-snailspeed-description = A little snail with snailborn thrusters.
ghost-role-information-snoth-name = Snoth
ghost-role-information-snoth-description = A little snoth who doesn't mind a bit of space. Just stay on grid!
ghost-role-information-giant-spider-name = Giant spider
ghost-role-information-giant-spider-description = This station's inhabitants look mighty tasty, and your sticky web is perfect to catch them!

View File

@@ -9,7 +9,6 @@ replay-loading-starting= Starting Entities
replay-loading-failed = Failed to load replay. Error:
{$reason}
replay-loading-retry = Try load with more exception tolerance - MAY CAUSE BUGS!
replay-loading-cancel = Cancel
# Main Menu
replay-menu-subtext = Replay Client

View File

@@ -9,7 +9,3 @@ species-name-arachnid = Arachnid
species-name-moth = Moth Person
species-name-skeleton = Skeleton
species-name-vox = Vox
## Misc species things
snail-hurt-by-salt-popup = The salty solution burns like acid!

View File

@@ -1,7 +0,0 @@
uplink-voice-activated-bomb-implant = Имплант бомбы с голосовым триггером
uplink-voice-activated-bomb-implant-desc = Имплант микробомбы с триггером, заставляющим сработать по заданной голосовой команде.
ent-VoiceActivatedBombImplant = Имплант бомбы с голосовым триггером
.desc = Имплант микробомбы с триггером, заставляющим сработать по заданной голосовой команде.
voice-activated-bomb-no-key-phrase = Голосовой триггер не инициализирован, ввод импланта заблокирован.

View File

@@ -52,11 +52,5 @@ ent-MobDionaNymph = нимфа дионы
.desc = Это как кошка, только… более ветвистая.
ent-MobDionaNymphAccent = { ent-MobDionaNymph }
.desc = { ent-MobDionaNymph.desc }
ent-OrganDionaNymphBrain = { ent-MobDionaNymph }
.desc = Содержит мозг ранее полностью сформированной дионы. Убив её, ты убьёшь диону навсегда, монстр.
ent-OrganDionaNymphStomach = { ent-MobDionaNymph }
.desc = Содержит желудок ранее полностью сформированной дионы. Вкус от этого лучше не будет.
ent-OrganDionaNymphLungs = { ent-MobDionaNymph }
.desc = Содержит лёгкие ранее полностью сформированной дионы. Захватывает дух.
ent-MobArgocyteSlurva = slurva
.desc = Жалкие создания, не способные на многое.

View File

@@ -37,8 +37,8 @@ spellbook-mime-desc = { ent-ActionMimeTouchSpell.desc }
spellbook-recall-name = { ent-ActionInstantRecallSpell }
spellbook-recall-desc = { ent-ActionInstantRecallSpell.desc }
spellbook-smite-name = { ent-ActionSmiteWizard }
spellbook-smite-desc = { ent-ActionSmiteWizard.desc }
spellbook-smite-name = { ent-ActionSmite }
spellbook-smite-desc = { ent-ActionSmite.desc }
spellbook-mindswap-name = { ent-ActionMindswapSpell }
spellbook-mindswap-desc = { ent-ActionMindswapSpell.desc }

View File

@@ -40,7 +40,7 @@ ent-ActionTeleportSpell = Телепортация
ent-ActionKnock = Стук
.desc = Открывает все двери, шлюзы и шкафы в радиусе 5 тайлов.
ent-ActionSmiteWizard = Кара
ent-ActionSmite = Кара
.desc = Заряжает вашу руку мерзкой энергией, которую можно использовать для взрыва жертв. Заклинание требует, чтобы вы коснулись своей цели, поэтому вы не сможете использовать его в наручниках или будучи оглушённым. Не работает без волшебной мантии и шляпы.
ent-ActionMindswapSpell = Подмена сознания

View File

@@ -1 +0,0 @@
suicide-action-popup = ЭТО ДЕЙСТВИЕ УБЬЁТ ВАС! Используйте его ещё раз, если вы уверены.

View File

@@ -8,7 +8,6 @@ anomaly-particles-delta = Дельта-частицы
anomaly-particles-epsilon = Эпсилон-частицы
anomaly-particles-zeta = Зета-частицы
anomaly-particles-omega = Омега-частицы
anomaly-particles-sigma = Сигма-частицы
anomaly-scanner-component-scan-complete = Сканирование завершено!
@@ -23,11 +22,6 @@ anomaly-scanner-particle-readout = Анализ реакции на частиц
anomaly-scanner-particle-danger = - [color=crimson]Опасный тип:[/color] { $type }
anomaly-scanner-particle-unstable = - [color=plum]Нестабильный тип:[/color] { $type }
anomaly-scanner-particle-containment = - [color=goldenrod]Сдерживающий тип:[/color] { $type }
anomaly-scanner-particle-transformation = - [color=#6b75fa]Трансформирующий тип:[/color] { $type }
anomaly-scanner-particle-danger-unknown = - [color=crimson]Опасный тип:[/color] [color=red]ОШИБКА[/color]
anomaly-scanner-particle-unstable-unknown = - [color=plum]Нестабильный тип:[/color] [color=red]ОШИБКА[/color]
anomaly-scanner-particle-containment-unknown = - [color=goldenrod]Сдерживающий тип:[/color] [color=red]ОШИБКА[/color]
anomaly-scanner-particle-transformation-unknown = - [color=#6b75fa]Трансформирующий тип:[/color] [color=red]ОШИБКА[/color]
anomaly-scanner-pulse-timer = Время до следующего импульса: [color=gray]{ $time }[/color]
anomaly-gorilla-core-slot-name = Ядро аномалии
@@ -75,24 +69,3 @@ anomaly-command-supercritical = Доводит аномалию до супер
# Flavor text on the footer
anomaly-generator-flavor-left = Аномалия может возникнуть внутри пользователя.
anomaly-generator-flavor-right = v1.1
anomaly-behavior-unknown = [color=red]ОШИБКА. Невозможно считать.[/color]
anomaly-behavior-title = Анализ отклонений поведения:
anomaly-behavior-point = [color=gold]Аномалия генерирует { $mod }% очков[/color]
anomaly-behavior-safe = [color=forestgreen]Аномалия чрезвычайно стабильна. Крайне редкие импульсы.[/color]
anomaly-behavior-slow = [color=forestgreen]Частота импульсов значительно снижена.[/color]
anomaly-behavior-light = [color=forestgreen]Мощность импульсов значительно снижена.[/color]
anomaly-behavior-balanced = Отклонения поведения не обнаружены.
anomaly-behavior-delayed-force = Частота пульсаций значительно снижена, но их сила повышена.
anomaly-behavior-rapid = Частота пульсаций значительно повышена, но их сила снижена.
anomaly-behavior-reflect = Обнаружено защитное покрытие.
anomaly-behavior-nonsensivity = Обнаружена слабая реакция на частицы.
anomaly-behavior-sensivity = Обнаружена сильная реакция на частицы.
anomaly-behavior-invisibility = Обнаружено искажение светового потока.
anomaly-behavior-secret = Обнаружены помехи. Некоторые данные не могут быть считаны
anomaly-behavior-inconstancy = [color=crimson]Обнаружено непостоянство. Со временем типы частиц могут поменяться.[/color]
anomaly-behavior-fast = [color=crimson]Частота импульсов значительно повышена.[/color]
anomaly-behavior-strenght = [color=crimson]Мощность импульсов значительно повышена.[/color]
anomaly-behavior-moving = [color=crimson]Обнаружена координатная нестабильность.[/color]

View File

@@ -30,7 +30,6 @@ cargo-console-snip-snip = Заказ урезан до вместимости
cargo-console-insufficient-funds = Недостаточно средств (требуется { $cost })
cargo-console-unfulfilled = Нет места для выполнения заказа
cargo-console-trade-station = Отправить на {$destination}
cargo-console-unlock-approved-order-broadcast = [bold]{$productName} x{$orderAmount}[/bold], стоимостью [bold]{$cost}[/bold], одобрено [bold]{$approverName}, {$approverJob}[/bold]
cargo-console-paper-print-name = Заказ #{$orderNumber}
cargo-console-paper-print-text =

View File

@@ -10,15 +10,6 @@ ghost-role-information-mouse-description = Голодная и озорная м
ghost-role-information-mothroach-name = Таракамоль
ghost-role-information-mothroach-description = Милая озорная таракамоль.
ghost-role-information-snail-name = Улитка
ghost-role-information-snail-description = Маленькая улитка, которая не против немного побыть на свободе. Только не убегай за пределы клетки!
ghost-role-information-snailspeed-name = Улитка
ghost-role-information-snailspeed-description = Маленькая улитка с турбоулиточными ускорителями.
ghost-role-information-snoth-name = Молитка
ghost-role-information-snoth-description = Маленькая молитка, которая не против немного побыть на свободе. Только не убегай за пределы клетки!
ghost-role-information-deathsnail-name = Улитка забвения
ghost-role-information-deathsnail-description = Маленькая улитка, предвестник Конца, последний адепт Элегиста. Вся жизнь будет окончена, все звёзды - потухнут, но она останется.
ghost-role-information-giant-spider-name = Гигантский паук
ghost-role-information-giant-spider-description = Устройте хаос обитателям станции!

View File

@@ -51,13 +51,3 @@ ent-MobKangarooSpace = космо-кенгуру
.desc = Это выглядит дружелюбно. Почему бы тебе не обнять его?
ent-MobSpiderSpace = космо-паук
.desc = Он так светится, что выглядит опасным.
ent-MobSnail = улитка
.desc = Отвратительна, только если вы не француз.
ent-MobSnailInstantDeath = { ent-MobSnail }
.suffix = Кара
.desc = Древнее существо, пришедшее из ниоткуда и которое останется, пока последний атом не будет расчеплён.
ent-MobSnailSpeed = { ent-MobSnail }
.suffix = Скорость
.desc = { ent-MobSnail.desc }
ent-MobSnailMoth = молитка
.desc = Отвратительна, только если вы не моль-француз.

View File

@@ -70,24 +70,6 @@ ent-LockerParamedic = шкаф парамедика
.desc = { ent-LockerBase.desc }
ent-GunSafe = оружейный сейф
.desc = { ent-LockerBase.desc }
ent-GunSafeDisabler = сейф с дизейблерами
.desc = { ent-GunSafe.desc }
ent-GunSafeSubMachineGunDrozd = сейф с пистолетами-пулемётами Дрозд
.desc = { ent-GunSafe.desc }
ent-GunSafeShotgunEnforcer = сейф с дробовиками Силовик
.desc = { ent-GunSafe.desc }
ent-GunSafeShotgunKammerer = сейф с дробовиками Каммерер
.desc = { ent-GunSafe.desc }
ent-GunSafeLaserCarbine = сейф с лазерными винтовками
.desc = { ent-GunSafe.desc }
ent-GunSafeRifleLecter = сейф с винтовками Лектер
.desc = { ent-GunSafe.desc }
ent-GunSafePistolMk58 = сейф с пистолетами МК 58
.desc = { ent-GunSafe.desc }
ent-GunSafeTempGun = сейф с температурными пушками
.desc = { ent-GunSafe.desc }
ent-GunSafeSubMachineGunWt550 = сейф с пистолетами-пулемётами WT550
.desc = { ent-GunSafe.desc }
ent-LockerBluespaceStation = блюспейс шкаф
.desc = Усовершенствованная технология шкафчиков.
ent-CrateChemistrySecure = надежный химический ящик

View File

@@ -13,28 +13,28 @@ health-analyzer-window-scan-mode-text = Режим сканирования:
health-analyzer-window-scan-mode-active = ВКЛЮЧЕН
health-analyzer-window-scan-mode-inactive = ВЫКЛЮЧЕН
damage-group-brute = Механические
damage-type-blunt = Удары
damage-type-slash = Разрезы
damage-type-piercing = Уколы
health-analyzer-window-damage-group-Brute = Механические:
health-analyzer-window-damage-type-Blunt = Удары:
health-analyzer-window-damage-type-Slash = Разрезы:
health-analyzer-window-damage-type-Piercing = Уколы:
damage-group-burn = Ожоги
damage-type-heat = Термические
damage-type-laser = Лазерный
damage-type-shock = Электрические
damage-type-cold = Обморожение
damage-type-caustic = Кислотные
health-analyzer-window-damage-group-Burn = Ожоги:
health-analyzer-window-damage-type-Heat = Термические:
health-analyzer-window-damage-type-Laser = Лазерный:
health-analyzer-window-damage-type-Shock = Электрические:
health-analyzer-window-damage-type-Cold = Обморожение:
health-analyzer-window-damage-type-Caustic = Кислотные:
damage-group-airloss = Нехватка воздуха
damage-type-asphyxiation = Удушение
damage-type-bloodloss = Кровопотеря
health-analyzer-window-damage-group-Airloss = Нехватка воздуха:
health-analyzer-window-damage-type-Asphyxiation = Удушение:
health-analyzer-window-damage-type-Bloodloss = Кровопотеря:
damage-group-toxin = Токсины
damage-type-poison = Яды
damage-type-radiation = Радиация
health-analyzer-window-damage-group-Toxin = Токсины:
health-analyzer-window-damage-type-Poison = Яды:
health-analyzer-window-damage-type-Radiation = Радиация:
damage-group-genetic = Генетические
damage-type-cellular = Клеточные
health-analyzer-window-damage-group-Genetic = Генетические:
health-analyzer-window-damage-type-Cellular = Клеточные:
health-analyzer-window-malnutrition = Тяжёлое недоедание

View File

@@ -2,25 +2,12 @@ pai-system-pai-installed = пИИ установлен.
pai-system-off = пИИ не установлен.
pai-system-still-searching = Всё ещё ищем пИИ.
pai-system-searching = Ищем пИИ...
pai-system-role-name = персональный ИИ
pai-system-role-description =
Станьте чьим-то персональным Искуственным Интеллектом!
(Воспоминания *не* прилагаются.)
pai-system-role-name-syndicate = персональный ИИ Синдиката
pai-system-role-description-syndicate = Станьте чьим-то персональным Искуственным Интеллектом!
(Воспоминания *не* прилагаются.)
pai-system-role-name-potato = картофельный искусственный интеллект
pai-system-role-description-potato = Это игрушка для детей. И теперь ваша жизнь в ней.
pai-system-wipe-device-verb-text = Удалить пИИ
pai-system-wiped-device = пИИ был стерт с устройства.
pai-system-stop-searching-verb-text = Прекратить поиск
pai-system-stopped-searching = Устройство прекратило поиск пИИ.
pai-system-pai-name = пИИ { CAPITALIZE($owner) }
pai-system-pai-name-raw = пИИ {$name}
pai-system-brick-popup = Микросхемы пИИ громко хлопают и перегорают!
pai-system-scramble-popup = Микросхемы пИИ перенапряжены электричеством!

View File

@@ -4,7 +4,6 @@ salvage-expedition-structure-remaining =
[one] { $count } структура осталась.
*[other] { $count } структур осталось.
}
salvage-expedition-type = Миссия
salvage-expedition-megafauna-remaining = { $count } мегафауны остаётся.
salvage-expedition-window-title = Экспедиции
salvage-expedition-window-difficulty = Сложность:
@@ -36,43 +35,11 @@ salvage-expedition-difficulty-Minor = Незначительная
salvage-expedition-difficulty-Moderate = Умеренная
salvage-expedition-difficulty-Hazardous = Опасная
salvage-expedition-difficulty-Extreme = Экстремальная
salvage-expedition-difficulty-players = Рекомендуется утилизаторов:
# Runner
salvage-expedition-not-all-present = Не все утилизаторы находятся на борту шаттла!
# Runner
salvage-expedition-announcement-countdown-minutes = { $duration } минут осталось до завершения экспедиции.
salvage-expedition-announcement-countdown-seconds = { $duration } секунд осталось до завершения экспедиции.
salvage-expedition-reward-description = Награда за выполнение миссии
salvage-expedition-announcement-dungeon = Подземелье обнаружено. Местоположение: { $direction }.
salvage-expedition-announcement-dungeon = Подземелье расположено на { $direction }.
salvage-expedition-completed = Экспедиция завершена.
salvage-faction-xenos = Ксено
salvage-faction-carps = Карпы
salvage-biome-mod-caves = Пещеры
salvage-biome-mod-grasslands = Луга
salvage-biome-mod-snow = Снег
salvage-biome-mod-lava = Лава
salvage-light-mod-daylight = День
salvage-light-mod-evening = Вечер
salvage-light-mod-night = Ночь
salvage-temperature-mod-room-temperature = Комнатная температура
salvage-temperature-mod-hot = Жара
salvage-temperature-mod-high-temperature = Высокая температура
salvage-temperature-mod-extreme-heat = Экстремальная жара
salvage-temperature-mod-cold = Холод
salvage-temperature-mod-low-temperature = Низкая температура
salvage-temperature-mod-extreme-cold = Экстремальный холод
salvage-air-mod-no-atmosphere = Отсутствие атмосферы
salvage-air-mod-breathable-atmosphere = Пригодная атмосфера
salvage-air-mod-dangerous-atmosphere = Опасная атмосфера
salvage-air-mod-toxic-atmosphere = Токсичная атмосфера
salvage-air-mod-volatile-atmosphere = Изменчивая атмосфера
salvage-dungeon-mod-lava-brig = Лавовый бриг
salvage-dungeon-mod-snowy-labs = Снежная лаборатория
salvage-dungeon-mod-experiment = Эксперимент
salvage-dungeon-mod-haunted = Призраки
salvage-dungeon-mod-mineshaft = Шахта

View File

@@ -10,7 +10,3 @@ species-name-skrell = Скрелл
species-name-moth = Моль
species-name-skeleton = Скелет
species-name-felinid = Фелинид
## Misc species things
snail-hurt-by-salt-popup = Соленый раствор жжет, как кислота!

View File

@@ -48,8 +48,6 @@ ent-FoodMeatMeatball = фрикаделька
.desc = Шарик сырого мяса. Ноу хомо.
ent-FoodMeatSlime = шар слизи
.desc = Студенистая масса из слаймового желе.
ent-FoodMeatSnail = сырое мясо улитки
.desc = Лучше с солью.
ent-FoodMeatCooked = стейк
.desc = Зажаренный кусок мяса. Аромат первобытности.
ent-FoodMeatBaconCooked = бекон
@@ -74,8 +72,6 @@ ent-FoodMeatSpiderlegCooked = приготовленная паучья нога
.desc = Нога гигантского паука, которая все еще дергается после приготовления. Отвратительно!
ent-FoodMeatMeatballCooked = фрикаделька
.desc = Приготовленная фрикаделька. Идеально подходит для добавления в другие блюда... кроме фруктовых.
ent-FoodMeatSnailCooked = варёная улитка
.desc = Лучше с солью.
ent-FoodMeatCutlet = сырая котлета
.desc = Котлета из сырого мяса.
ent-FoodMeatBearCutlet = сырая котлета из медведя

View File

@@ -84,5 +84,3 @@ ent-FoodSaladColeslaw = салат коул слоу
.desc = Нашинкованную капусту и красный лук заправить винегретом.
ent-FoodSaladKimchi = салат кимчи
.desc = На самом деле это просто острый салат.
ent-FoodSoupEscargot = эскарго
.desc = Сытное сливочное блюдо с улитками, бон апетит!

View File

@@ -56,6 +56,3 @@ ent-ImplanterSyndi = { ent-BaseImplanter }
.desc = { ent-BaseImplanter.desc }
ent-NeuroStabilizationImplanter = { ent-BaseImplanter }
.desc = { ent-BaseImplanter.desc }
ent-VoiceActivatedBombImplanter = { ent-BaseImplanter }
.desc = { ent-BaseImplanter.desc }
.suffix = бомба с голосовым триггером

View File

@@ -10,5 +10,3 @@ ent-SoapHomemade = мыло
.desc = Самодельный брусок мыла. Пахнет... уф....
ent-SoapOmega = омега мыло
.desc = Самое совершенное мыло, известное человечеству. Пахнет блюспейсом.
ent-SoapletSyndie = кусочек мыла
.desc = Крохотный кусочек мыла синдиката.

View File

@@ -1,2 +0,0 @@
ent-ActionSmite = Кара
.desc = Мгновенно поражает цель.

View File

@@ -254,7 +254,7 @@
id: ClothingEyesGlassesThermalNukie
suffix: "Хамелеон, Ядерные Оперативники"
components:
- type: ShowAntagonistIcons
- type: ShowSyndicateIcons
- type: entity
parent: ClothingEyesBase

View File

@@ -167,7 +167,7 @@
damageContainers:
- Biological
- Inorganic
- type: ShowAntagonistIcons
- type: ShowSyndicateIcons
- type: entity
parent: [ClothingEyesBase, ShowSecurityIcons, ShowMedicalIcons]
@@ -185,7 +185,7 @@
- Inorganic
- type: ShowHungerIcons
- type: ShowThirstIcons
- type: ShowAntagonistIcons
- type: ShowSyndicateIcons
- type: entity
parent: [ClothingEyesBase, ShowSecurityIcons]
@@ -197,7 +197,7 @@
sprite: Clothing/Eyes/Hud/synd.rsi
- type: Clothing
sprite: Clothing/Eyes/Hud/synd.rsi
- type: ShowAntagonistIcons
- type: ShowSyndicateIcons
- type: entity
parent: [ClothingEyesBase, ShowSecurityIcons]
@@ -209,7 +209,7 @@
sprite: Clothing/Eyes/Hud/syndagent.rsi
- type: Clothing
sprite: Clothing/Eyes/Hud/syndagent.rsi
- type: ShowAntagonistIcons
- type: ShowSyndicateIcons
- type: ShowHealthBars
damageContainers:
- Biological

View File

@@ -278,7 +278,7 @@
- type: ActiveRadio
channels:
- Syndicate
- type: ShowAntagonistIcons
- type: ShowSyndicateIcons
- type: MovementAlwaysTouching
- type: TTS
- type: PointLight

View File

@@ -375,239 +375,3 @@
suffix: "Salvage Ruleset"
components:
- type: SalvageMobRestrictions
- type: entity # WD Ahead of wizden
parent: SimpleSpaceMobBase
id: MobSnail
name: snail
description: Revolting unless you're french.
components:
- type: Body
prototype: Mouse
- type: GhostRole
makeSentient: true
allowSpeech: false
allowMovement: true
name: ghost-role-information-snail-name
description: ghost-role-information-snail-description
# rules: ghost-role-information-freeagent-rules # WD TODO later
- type: GhostTakeoverAvailable
- type: Emoting
- type: Sprite
drawdepth: SmallMobs
sprite: Mobs/Animals/snail.rsi
layers:
- map: ["enum.DamageStateVisualLayers.Base"]
state: snail
- type: Item
size: Tiny
- type: NpcFactionMember
factions:
- Mouse
- type: HTN
rootTask:
task: MouseCompound
- type: Physics
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeCircle
radius: 0.2
density: 100
mask:
- SmallMobMask
layer:
- SmallMobLayer
- type: MobState
- type: Deathgasp
- type: MobStateActions
actions:
Critical:
- ActionCritSuccumb
- ActionCritFakeDeath
- ActionCritLastWords
- type: MobThresholds
thresholds:
0: Alive
10: Critical
20: Dead
- type: MovementSpeedModifier
baseWalkSpeed : 2
baseSprintSpeed : 3
- type: DamageStateVisuals
states:
Alive:
Base: snail
Critical:
Base: dead
Dead:
Base: dead
- type: Food
- type: Thirst
startingThirst: 25 # spawn with Okay thirst state
thresholds:
OverHydrated: 35
Okay: 25
Thirsty: 15
Parched: 10
Dead: 0
baseDecayRate: 0.04
- type: Hunger
currentHunger: 25 # spawn with Okay hunger state
thresholds:
Overfed: 35
Okay: 25
Peckish: 15
Starving: 10
Dead: 0
baseDecayRate: 0.1
- type: Extractable
grindableSolutionName: food
- type: SolutionContainerManager
solutions:
food:
reagents:
- ReagentId: UncookedAnimalProteins
Quantity: 3
- type: Butcherable
spawned:
- id: FoodMeatSnail
amount: 1
- type: Tag
tags:
- Trash
- VimPilot
- ChefPilot
- Meat
- type: CombatMode
combatToggleAction: ActionCombatModeToggleOff
- type: Bloodstream
bloodMaxVolume: 30
bloodReagent: Cryoxadone
- type: CanEscapeInventory
- type: MobPrice
price: 50
- type: BadFood
- type: NonSpreaderZombie
- type: PreventSpiller
- type: FireVisuals
sprite: Mobs/Effects/onfire.rsi
normalState: Mouse_burning
- type: Temperature
heatDamageThreshold: 500
coldDamageThreshold: 0
- type: Reactive
reactions:
- reagents: [TableSalt, Saline]
methods: [Touch, Ingestion, Injection]
effects:
- !type:HealthChange
scaleByQuantity: true
damage:
types:
Caustic: 1
- !type:PopupMessage
type: Local
visualType: Large
messages: [ "snail-hurt-by-salt-popup" ]
probability: 0.66
- type: entity # WD Ahead of wizden
parent: MobSnail
id: MobSnailInstantDeath
suffix: Smite
components:
- type: MobStateActions
actions:
Alive:
- ActionSmite
Critical:
- ActionCritSuccumb
- ActionCritFakeDeath
- ActionCritLastWords
# - type: Godmode # WD Removed - not funny
- type: MovementAlwaysTouching
# WD EDIT START
- type: MobThresholds
thresholds:
0: Alive
1900: Critical
2000: Dead
- type: Bloodstream
maxBleedAmount: 1
bloodMaxVolume: 100
bloodReagent: Necrosol
- type: GhostRole
name: ghost-role-information-deathsnail-name
description: ghost-role-information-deathsnail-description
raffle:
settings: default
- type: Sprite
layers:
- map: ["enum.DamageStateVisualLayers.Base"]
state: deathsnail
- type: PointLight
color: red
energy: 2
range: 3
- type: AmbientSound
range: 5
volume: 30
sound:
path: /Audio/White/Supermatter/calm.ogg
- type: MovementSpeedModifier
baseWalkSpeed : 0.5
baseSprintSpeed : 1
# WD EDIT END
- type: entity # WD Ahead of wizden
parent: MobSnail
id: MobSnailSpeed
suffix: Speed
components:
- type: GhostRole
name: ghost-role-information-snailspeed-name
description: ghost-role-information-snailspeed-description
# rules: ghost-role-information-freeagent-rules # WD TODO later
- type: Sprite
layers:
- map: ["enum.DamageStateVisualLayers.Base"]
state: spacesnail
- type: DamageStateVisuals
states:
Alive:
Base: spacesnail
Critical:
Base: spacedead
Dead:
Base: spacedead
- type: MovementSpeedModifier
baseWalkSpeed : 5 #he go fast, also they cant slip so its probably fine.
baseSprintSpeed : 7
# - type: ActiveJetpack # I think this will need a custom component to not make tests angry.
- type: MovementAlwaysTouching
- type: entity # WD Ahead of wizden
parent: MobSnail
id: MobSnailMoth
name: Snoth
components:
- type: Body
prototype: Mothroach
- type: GhostRole
name: ghost-role-information-snoth-name
description: ghost-role-information-snoth-description
# rules: ghost-role-information-freeagent-rules # WD TODO later
- type: Sprite
layers:
- map: ["enum.DamageStateVisualLayers.Base"]
state: snoth
- type: DamageStateVisuals
states:
Alive:
Base: snoth
Critical:
Base: snothdead
Dead:
Base: snothdead

View File

@@ -679,35 +679,6 @@
- type: Sprite
state: slime
- type: entity # WD Ahead of wizden
name: raw snail meat
parent: FoodMeatRawBase
id: FoodMeatSnail
description: Improved with salt.
components:
- type: Sprite
state: snail
# - type: FoodSequenceElement # WD TODO later
# sprite:
# sprite: Objects/Consumable/Food/meat.rsi
# state: snail
# entries:
# burger:
# name: food-sequence-content-snail
# taco:
# name: food-sequence-content-snail
- type: SolutionContainerManager
solutions:
food:
maxVol: 15
reagents:
- ReagentId: UncookedAnimalProteins
Quantity: 3
- ReagentId: Fat
Quantity: 3
- ReagentId: Water
Quantity: 4 #It makes saline if you add salt!
# Cooked
- type: entity
@@ -1099,40 +1070,6 @@
- ReagentId: Protein
Quantity: 5
- type: entity
name: boiled snail
parent: FoodMeatBase
id: FoodMeatSnailCooked
description: Improved with salt.
components:
- type: Tag
tags:
- Cooked
- Meat
- type: Sprite
layers:
- state: snail-cooked
# - type: FoodSequenceElement
# sprite:
# sprite: Objects/Consumable/Food/meat.rsi
# state: snail-cooked
# entries:
# burger:
# name: food-sequence-content-snail
# taco:
# name: food-sequence-content-snail
- type: SolutionContainerManager
solutions:
food:
maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 3
- ReagentId: Protein
Quantity: 3
- ReagentId: Water
Quantity: 4 # makes saline if you add salt!
# Cutlets
# Raw

View File

@@ -1226,33 +1226,3 @@
- Fruit
- Soup
# Tastes like bungo, hot curry.
- type: entity # WD Ahead of wizden
name: escargot
parent: FoodBowlBase
id: FoodSoupEscargot
description: A creamy and rich bowl of snails, bon appetit!
components:
- type: FlavorProfile
flavors:
- creamy
- slimy
- type: Sprite
layers:
- state: bowl
- state: escargot
- type: SolutionContainerManager
solutions:
food:
maxVol: 20
reagents:
- ReagentId: Nutriment
Quantity: 6
- ReagentId: Vitamin
Quantity: 6
- ReagentId: Allicin
Quantity: 3
- type: Tag
tags:
- Meat
- Soup

View File

@@ -20,8 +20,6 @@
- type: DeviceLinkSink
ports:
- Trigger
- type: EmitSoundOnUse
handle: false # WD Ahead of wizden upstream - don't want the sound to stop the explosion from triggering
- type: entity
parent: BaseItem

View File

@@ -207,52 +207,6 @@
- id: MobMothroach
prob: 0.008
- type: entity # WD Ahead of wizden
id: SnailMigrationLowPop
# parent: BaseStationEventShortDelay # WD TODO later
parent: BaseGameRule
noSpawn: true
components:
- type: StationEvent
startAnnouncement: station-event-vent-creatures-start-announcement
startAudio:
path: /Audio/Announcements/attention.ogg
weight: 6
duration: 50
- type: VentCrittersRule
entries:
- id: MobSnail
prob: 0.02
- id: MobSnailSpeed
prob: 0.002
- id: MobSnailMoth
prob: 0.005 # WD edit from 0.002 to 0.005
- type: entity # WD Ahead of wizden
id: SnailMigration
# parent: BaseStationEventShortDelay # WD TODO later
parent: BaseGameRule
noSpawn: true
components:
- type: StationEvent
startAnnouncement: station-event-vent-creatures-start-announcement
startAudio:
path: /Audio/Announcements/attention.ogg
earliestStart: 15
weight: 6
duration: 50
minimumPlayers: 30
- type: VentCrittersRule
entries:
- id: MobSnail
prob: 0.02
- id: MobSnailSpeed
prob: 0.002
- id: MobSnailMoth
prob: 0.005 # WD edit from 0.002 to 0.005
- id: MobSnailInstantDeath
prob: 0.00001 # ~ 1:2000 snails
- type: entity
id: PowerGridCheck
parent: BaseGameRule

View File

@@ -4,6 +4,8 @@
description: Instantly gibs a target.
noSpawn: true
components:
- type: Magic
requiresClothes: true
- type: EntityTargetAction
useDelay: 60
itemIconStyle: BigAction
@@ -20,13 +22,3 @@
state: gib
event: !type:SmiteSpellEvent
speech: action-speech-spell-smite
- type: entity
id: ActionSmiteWizard
parent: ActionSmite
name: Smite
description: Instantly gibs a target.
noSpawn: true
components:
- type: Magic
requiresClothes: true

View File

@@ -896,29 +896,6 @@
FoodBungo: 2
FoodChiliPepper: 1
- type: microwaveMealRecipe # WD Ahead of wizden
id: RecipeBoiledSnail
name: boiled snail recipe
result: FoodMeatSnailCooked
time: 5
reagents:
Water: 10
solids:
FoodMeatSnail: 1
- type: microwaveMealRecipe # WD Ahead of wizden
id: RecipeEscargotSoup
name: escargot recipe
result: FoodSoupEscargot
time: 10
reagents:
Water: 5
solids:
FoodBowlBig: 1
FoodOnionSlice: 1
FoodButter: 1
FoodMeatSnailCooked: 1
#Pies
- type: microwaveMealRecipe

View File

@@ -324,15 +324,3 @@
Telecrystal: 2
categories:
- UplinkDisruption
- type: listing
id: UplinkVoiceActivatedBombImplanter
name: uplink-voice-activated-bomb-implant
description: uplink-voice-activated-bomb-implant-desc
icon: { sprite: /Textures/Actions/Implants/implants.rsi, state: explosive }
productEntity: VoiceActivatedBombImplanter
cost:
Telecrystal: 8
categories:
- UplinkImplants
saleLimit: 1

View File

@@ -33,4 +33,4 @@
id: ClothingEyesNightVisionGogglesNukie
suffix: "Хамелеон, Ядерные Оперативники"
components:
- type: ShowAntagonistIcons
- type: ShowSyndicateIcons

View File

@@ -43,18 +43,6 @@
- type: Implanter
implant: NeuroStabilizationImplant
- type: entity
parent: BaseImplantOnlyImplanterSyndi
id: VoiceActivatedBombImplanter
suffix: voice activated bomb
components:
- type: Implanter
implant: VoiceActivatedBombImplant
- type: TriggerOnVoice
- type: Tag
tags:
- VoiceActivatedBombImplant
#Amour
- type: entity
id: GenderSwapImplanter
@@ -63,4 +51,3 @@
components:
- type: Implanter
implant: GenderSwapImplant

View File

@@ -49,27 +49,6 @@
tags:
- NeuroStabilization
- type: entity
parent: BaseSubdermalImplant
id: VoiceActivatedBombImplant
name: voice activated Bomb implant
description: A microbomb implant with a trigger that causes it to go off by vocal keywords.
noSpawn: true
components:
- type: SubdermalImplant
permanent: true
- type: TriggerOnVoice
- type: ExplodeOnTrigger
- type: Explosive
explosionType: MicroBomb
totalIntensity: 150
intensitySlope: 5
maxIntensity: 30
canCreateVacuum: false
- type: Tag
tags:
- VoiceActivatedBombImplant
#Amour
- type: entity
parent: BaseSubdermalImplant

View File

@@ -499,7 +499,7 @@
sprite: White/Ghosts/DEN4IK_64-ghost.rsi
alpha: 0.9
ghostName: Никелевый камушек
ghostDescription: Этот камушек имеет талант, знаешь что я тебе за это дам???
ghostDescription: Этот Ниггер имеет талант, знаешь что я тебе за это дам???
#BIG_Zi_348
- type: customGhost
@@ -509,13 +509,3 @@
alpha: 0.9
ghostName: BIG_Zi_348
ghostDescription: Зенит космической энергии — генезис сознания из пустоты.
#AugustNacist1488
- type: customGhost
id: augustnacist1488-ghost
ckey: AugustNacist1488
sprite: White/Ghosts/augustnacist1488-ghost.rsi
alpha: 0.9
ghostName: Ash drake
ghostDescription: Почитаемый хранитель некрополя.
size: 0.75, 0.75

View File

@@ -149,7 +149,7 @@
name: "Smite scroll"
components:
- type: Scroll
actionId: ActionSmiteWizard
actionId: ActionSmite
learnPopup: scroll-component-smite
- type: entity

View File

@@ -102,6 +102,3 @@
- type: Tag
id: ClusterBang
- type: Tag
id: VoiceActivatedBombImplant

Binary file not shown.

Before

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -1,36 +0,0 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Created by Kezu (discord) & IProduceWidgets (github)",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "snail",
"directions": 4
},
{
"name": "dead"
},
{
"name": "spacesnail",
"directions": 4
},
{
"name": "deathsnail",
"directions": 4
},
{
"name": "spacedead"
},
{
"name": "snoth",
"directions": 4
},
{
"name": "snothdead"
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 392 B

View File

@@ -1,7 +1,7 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from tgstation and modified by Swept at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa. escargot from tgstation at https://github.com/tgstation/tgstation/commit/7ffd61b6fa6a6183daa8900f9a490f46f7a81955. Fills created by potato1234_x",
"copyright": "Taken from tgstation and modified by Swept at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa. Fills created by potato1234_x",
"size": {
"x": 32,
"y": 32
@@ -66,9 +66,6 @@
0.1
]
]
},
{
"name": "escargot"
},
{
"name": "eyeball"

View File

@@ -1,7 +1,7 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from tgstation and modified by Swept, potato1234x and deltanedas at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa, snail by IproduceWidgets (github) and Kezu (discord)",
"copyright": "Taken from tgstation and modified by Swept, potato1234x and deltanedas at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa",
"size": {
"x": 32,
"y": 32
@@ -152,12 +152,6 @@
},
{
"name": "slime"
},
{
"name": "snail"
},
{
"name": "snail-cooked"
},
{
"name": "snake"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -1,15 +0,0 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "https://github.com/tgstation/tgstation",
"size": {
"x": 96,
"y": 96
},
"states": [
{
"name": "animated",
"directions": 4
}
]
}