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

* fix borg (#719)

* Automatic changelog update

* Переводы снаряжения и прочей мелочи в стартовом меню (#720)

* Сумки, мешки и прочее

* Перевод снаряжения

* перевод черт персонажа

* Добавлено ничего

* Automatic changelog update

* Фикс отображения потери мастера для импланта подчинения (#721)

* фикс отображения

* brain damage is real

* я блять запустил райдер ради рефактора одного ифа

* а лучше даже так

* Automatic changelog update

* add coderabbitai config (#722)

* fix (#723)

* Шприц теперь является оружием массового поражения (#724)

* Automatic changelog update

* Пиздец (#725)

Я на это потратил 2 недели

* Automatic changelog update

* Honk FM (#136) (#726)

* Fix Cosmic Temperance и новые песенки в jukebox

* Новая музыка в jucebox x2

Co-authored-by: Vorge7 <vorge228@gmail.com>

* Automatic changelog update

* Флаф (fluff) мне (big_zi_348) (#727)

* Заработал

* brain damage

* fuck (#729)

* Automatic changelog update

* FUCKERS (#732)

* Удаление ненужных суффиксов (#731)

* Перевод захардкукоженной строки (#728)

* Пластырь поможет

* очапятка

* Перевод ревенанта

* Карповый перекат

* Create shakeable-component.ftl

* Криогеника

* Хранилища скафандров

* Update autotranslate-14.ftl

* Update Cyborgs.xml

* Комоды

* Кредиты

* Удалил дубликат

* Информация

* Пластырь миму и клоуну

* Переводы всего

* Перевод аплинка

* Удалил ненужные суффиксы

* Revert "Удалил ненужные суффиксы"

This reverts commit d82f05f30c37ec2c11e5736b91239fe9dd1a4d17.

* Удаление ненужных суффиксов

* Перевод реагентовых слизней

* Перевод аномалий

* Перевод маяков

* Перевод различной мелочи

* Automatic changelog update

* Переводы и правки Гайдов (#730)

* Automatic changelog update

* aaaaa (#733)

* Правка локализации (#737)

* Update ThirstSystem.cs (#736)

* AccessConfiguratorForBorgs (#735)

* Automatic changelog update

* Починил бесконечную сварку (#734)

* Automatic changelog update

* ShowManifestFeature (#738)

* Automatic changelog update

* I LOVE OPENSOURCE

* Изменение размеров милишек (#739)

* Фикс размеров

* Заготовку биты тоже

* Правка

* Automatic changelog update

* Время после взрыва нюки (#740)

* More Fun

* Автоформатирование

* Подкрутка

* Automatic changelog update

* Скальпель в армейские ботинки (#741)

* Automatic changelog update

* DoHeavyAttack stamina check (#742)

* Automatic changelog update

* aaaaaaaaaaaaaaaaaaaaaaaaaaaaa (#743)

* fix retarded code (#744)

* Automatic changelog update

* Локализация (#746)

* Правка мелочей

* Имя клоуну

* Перевод оповещений для РНД

* перевод занавесок

* перевод столов

* Automatic changelog update

* Перевод и обновление кода гипоспрея для боргов (#745)

* Я только хотел перевести...

* refactor

* ещё перевод

* Revert "refactor"

This reverts commit 355c2724c4ed9cd1357661e3ba889a88bdf17db7.

* инверсия условия для проверки наличия прототипа

* Automatic changelog update

* Больше вещей в пояса охраны (#748)

* Подкрутки и докрутки (#749)

* Automatic changelog update

* Добавил отображение защиты от горения и подправил описание защиты от взрывов (#747)

* Добавил отображение защиты от горения

* Update Content.Shared/Clothing/EntitySystems/FireProtectionSystem.cs

Co-authored-by: ThereDrD <88589686+ThereDrD0@users.noreply.github.com>

* Update Resources/Locale/ru-RU/_white/info/fire-protection.ftl

Co-authored-by: ThereDrD <88589686+ThereDrD0@users.noreply.github.com>

* Правки

* негативный ноль с плавающей точкой

---------

Co-authored-by: ThereDrD <88589686+ThereDrD0@users.noreply.github.com>

* Automatic changelog update

* Фикс текстурок внешних шлюзов (#751)

* Микромелочь

* Ещё одна мелочь

* Починка прозрачности

* Automatic changelog update

* the fuck (#752)

* the fuck

* more logs

* avoooo (#753)

* nyaUpdate (#754)

* Merge pull request #756

* nya v1.2

* ahhhh ** всех закопает (#758)

* Ребаланс РНД (#750)

* Третий тир больше нас не остановит

* More less

* Ребаланс

* правочки подправочки

* СКОРАЯ!!! ПОМОГИТЕ!!!

* Automatic changelog update

* Конфета или жизнь (#757)

* Конфета или жизнь

* gremlins invasion

* Я ДОБАВИЛ БОЛЬШЕ МУСОРА НА СТАНЦИЮ!!!

* Переводы (много) (#755)

* Перевод технологий РНД

* Перевод действий поглаживающего характера

* Целая куча мелочей

* Ещё больше мелочей

* Слишком много мелочей

* маленькая мелочь

* unshit some ftl shit

* Automatic changelog update

* [Tweak] Random updates (#760)

* Security random updates

* Engineering random updates

* ERT random updates

* Really random

* Important random update

* Automatic changelog update

* Мелочёчки (#761)

* Automatic changelog update

* optimized network stack (#763)

* [Add] Pouches (#762)

* Add: Pouches base and sprites

* Add: Micro-resprite, pouches in secdrobe

* Minus suffix

* Automatic changelog update

* aaaaa (#765)

* Я как всегда кучу хуйни в один пакет сую (#766)

* Automatic changelog update

* а (#767)

* Automatic changelog update

* fix (#768)

* optimizaaaaaations (#769)

* Переводы (#770)

* Мелочёчки

* А когда ты будешь делать что-то полезное, кроме переводов?

* Я удалил НаноТрейзен

* Automatic changelog update

* fixed dumb shit that nobody cares (#772)

* Automatic changelog update

* Фикс взрывной ручки (#771)

* Automatic changelog update

* угу (#775)

* fix yaica (#773)

* Automatic changelog update

* Revert "fix yaica (#773)" (#776)

This reverts commit 9739d41607.

* fix retard (#777)

* fuck (#780)

* ВНИМАНИЕ!!! ОБНАРУЖЕНЫ УЛИТКИ!!! (#774)

* Automatic changelog update

* Локализация + ЕБУЧИЙ ПИКСЕЛЬ (#778)

* Перевод №1

* Перевод №2

* Пиксель

* сейфы

* сканер аномалий

* Перевод пИИ

* Перевод №3

* Перевод сканера здоровья

* Дионы

* Перевод экспедиций

* Automatic changelog update

* Фиксики работают сверхурочно (#781)

* Automatic changelog update

* Это заняло больше времени, чем я думал (#782)

* Automatic changelog update

---------

Co-authored-by: Jabak <163307958+Jabaks@users.noreply.github.com>
Co-authored-by: RavmorganButOnCocaine <valtos@nextmail.ru>
Co-authored-by: ThereDrD <88589686+ThereDrD0@users.noreply.github.com>
Co-authored-by: Vorge7 <vorge228@gmail.com>
Co-authored-by: Valtos <valtos@spaces.ru>
Co-authored-by: haiwwkes <49613070+rhailrake@users.noreply.github.com>
Co-authored-by: keslik <114428094+keslik1313@users.noreply.github.com>
This commit is contained in:
BIGZi0348
2024-11-12 20:33:05 +03:00
committed by GitHub
parent eadcc227d5
commit aabdcec60c
70 changed files with 1097 additions and 186 deletions

View File

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

View File

@@ -1,10 +1,8 @@
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;
@@ -26,8 +24,6 @@ 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;
@@ -60,7 +56,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
@@ -96,32 +92,18 @@ public sealed class ContentReplayPlaybackManager
return;
}
ReturnToDefaultState();
if (_client.RunLevel == ClientRunLevel.SinglePlayerGame)
_client.StopSinglePlayer();
// 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);
Action? retryAction = null;
Action? cancelAction = null;
// 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)
{
var button = new Button
{
Text = Loc.GetString("replay-loading-retry"),
StyleClasses = { StyleBase.ButtonCaution }
};
button.OnPressed += _ =>
retryAction = () =>
{
_cfg.SetCVar(CVars.ReplayIgnoreErrors, true);
popup.Dispose();
IReplayFileReader reader = last.Zip == null
? new ReplayFileReaderResources(_resMan, last.Folder)
@@ -129,11 +111,19 @@ public sealed class ContentReplayPlaybackManager
_loadMan.LoadAndStartReplay(reader);
};
box.AddChild(button);
}
popup.OpenCentered();
// 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);
}
public void ReturnToDefaultState()

View File

@@ -0,0 +1,30 @@
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

@@ -0,0 +1,14 @@
<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

@@ -0,0 +1,38 @@
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-hunger-current-hunger-status-" + state.CurrentThirstThreshold)));
("status", Loc.GetString("body-scanner-console-window-thirst-current-thirst-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-thirst-current-thirst-status-" + state.CurrentHungerThreshold)));
("status", Loc.GetString("body-scanner-console-window-hunger-current-hunger-status-" + state.CurrentHungerThreshold)));
BloodSolutionVolume.Text = Loc.GetString("body-scanner-console-window-blood-solutions-volume-group-text",
("amount", $"{state.BloodSolution.Volume.Float():f1}"),
@@ -127,6 +127,9 @@ 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,6 +9,7 @@ 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;
@@ -103,8 +104,10 @@ 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", component.DungeonLocation.GetDir())));
Announce(args.MapUid, Loc.GetString("salvage-expedition-announcement-dungeon", ("direction", directionLocalization))); // WD Ahead of wizden
component.Stage = ExpeditionStage.Running;
Dirty(args.MapUid, component);

View File

@@ -0,0 +1,53 @@
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,40 +76,41 @@ 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)
{
@@ -269,21 +270,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-hunger-current-hunger-status-" +
Loc.GetString("body-scanner-console-window-thirst-current-thirst-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-thirst-current-thirst-status-" +
Loc.GetString("body-scanner-console-window-hunger-current-hunger-status-" +
state.CurrentHungerThreshold))));
text.AppendLine();

View File

@@ -44,6 +44,18 @@ 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
@@ -113,6 +125,7 @@ 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<ShowSyndicateIconsComponent>>(RelayInventoryEvent);
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowAntagonistIconsComponent>>(RelayInventoryEvent);
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowCriminalRecordIconsComponent>>(RelayInventoryEvent);
SubscribeLocalEvent<InventoryComponent, GetVerbsEvent<EquipmentVerb>>(OnGetEquipmentVerbs);

View File

@@ -14,9 +14,26 @@ 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;
@@ -27,7 +44,7 @@ public sealed class MobStateActionsSystem : EntitySystem
}
component.GrantedActions.Clear();
if (!component.Actions.TryGetValue(args.NewMobState, out var toGrant))
if (!component.Actions.TryGetValue(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 ShowSyndicateIconsComponent : Component {}
public sealed partial class ShowAntagonistIconsComponent : Component {}

View File

@@ -0,0 +1,35 @@
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,71 +1,4 @@
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\
@@ -8851,3 +8784,103 @@
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,6 +10,13 @@ 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,6 +9,7 @@ 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,3 +9,7 @@ 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

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

View File

@@ -52,5 +52,11 @@ 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-ActionSmite }
spellbook-smite-desc = { ent-ActionSmite.desc }
spellbook-smite-name = { ent-ActionSmiteWizard }
spellbook-smite-desc = { ent-ActionSmiteWizard.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-ActionSmite = Кара
ent-ActionSmiteWizard = Кара
.desc = Заряжает вашу руку мерзкой энергией, которую можно использовать для взрыва жертв. Заклинание требует, чтобы вы коснулись своей цели, поэтому вы не сможете использовать его в наручниках или будучи оглушённым. Не работает без волшебной мантии и шляпы.
ent-ActionMindswapSpell = Подмена сознания

View File

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

View File

@@ -8,6 +8,7 @@ anomaly-particles-delta = Дельта-частицы
anomaly-particles-epsilon = Эпсилон-частицы
anomaly-particles-zeta = Зета-частицы
anomaly-particles-omega = Омега-частицы
anomaly-particles-sigma = Сигма-частицы
anomaly-scanner-component-scan-complete = Сканирование завершено!
@@ -22,6 +23,11 @@ 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 = Ядро аномалии
@@ -69,3 +75,24 @@ 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,6 +30,7 @@ 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,6 +10,15 @@ 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,3 +51,13 @@ 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,6 +70,24 @@ 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 = ВЫКЛЮЧЕН
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-brute = Механические
damage-type-blunt = Удары
damage-type-slash = Разрезы
damage-type-piercing = Уколы
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-burn = Ожоги
damage-type-heat = Термические
damage-type-laser = Лазерный
damage-type-shock = Электрические
damage-type-cold = Обморожение
damage-type-caustic = Кислотные
health-analyzer-window-damage-group-Airloss = Нехватка воздуха:
health-analyzer-window-damage-type-Asphyxiation = Удушение:
health-analyzer-window-damage-type-Bloodloss = Кровопотеря:
damage-group-airloss = Нехватка воздуха
damage-type-asphyxiation = Удушение
damage-type-bloodloss = Кровопотеря
health-analyzer-window-damage-group-Toxin = Токсины:
health-analyzer-window-damage-type-Poison = Яды:
health-analyzer-window-damage-type-Radiation = Радиация:
damage-group-toxin = Токсины
damage-type-poison = Яды
damage-type-radiation = Радиация
health-analyzer-window-damage-group-Genetic = Генетические:
health-analyzer-window-damage-type-Cellular = Клеточные:
damage-group-genetic = Генетические
damage-type-cellular = Клеточные
health-analyzer-window-malnutrition = Тяжёлое недоедание

View File

@@ -2,12 +2,25 @@ 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,6 +4,7 @@ salvage-expedition-structure-remaining =
[one] { $count } структура осталась.
*[other] { $count } структур осталось.
}
salvage-expedition-type = Миссия
salvage-expedition-megafauna-remaining = { $count } мегафауны остаётся.
salvage-expedition-window-title = Экспедиции
salvage-expedition-window-difficulty = Сложность:
@@ -35,11 +36,43 @@ 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,3 +10,7 @@ species-name-skrell = Скрелл
species-name-moth = Моль
species-name-skeleton = Скелет
species-name-felinid = Фелинид
## Misc species things
snail-hurt-by-salt-popup = Соленый раствор жжет, как кислота!

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -375,3 +375,239 @@
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,6 +679,35 @@
- 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
@@ -1070,6 +1099,40 @@
- 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,3 +1226,33 @@
- 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,6 +20,8 @@
- 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,6 +207,52 @@
- 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,8 +4,6 @@
description: Instantly gibs a target.
noSpawn: true
components:
- type: Magic
requiresClothes: true
- type: EntityTargetAction
useDelay: 60
itemIconStyle: BigAction
@@ -22,3 +20,13 @@
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,6 +896,29 @@
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,3 +324,15 @@
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: ShowSyndicateIcons
- type: ShowAntagonistIcons

View File

@@ -43,6 +43,18 @@
- 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
@@ -51,3 +63,4 @@
components:
- type: Implanter
implant: GenderSwapImplant

View File

@@ -49,6 +49,27 @@
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,3 +509,13 @@
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: ActionSmite
actionId: ActionSmiteWizard
learnPopup: scroll-component-smite
- type: entity

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,36 @@
{
"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.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

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. Fills created by potato1234_x",
"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",
"size": {
"x": 32,
"y": 32
@@ -66,6 +66,9 @@
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",
"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)",
"size": {
"x": 32,
"y": 32
@@ -152,6 +152,12 @@
},
{
"name": "slime"
},
{
"name": "snail"
},
{
"name": "snail-cooked"
},
{
"name": "snake"

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

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