Skip to content
This repository has been archived by the owner on Sep 14, 2024. It is now read-only.

Commit

Permalink
Merge branch 'master' into LayDown
Browse files Browse the repository at this point in the history
  • Loading branch information
PuroSlavKing committed Sep 6, 2024
2 parents c399b9f + 273f71d commit 1e2c4b2
Show file tree
Hide file tree
Showing 143 changed files with 2,964 additions and 486 deletions.
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# Sigma:
@PuroSlavKing
* @PuroSlavKing
35 changes: 35 additions & 0 deletions Content.Shared/Clothing/Components/EmitsSoundOnMoveComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
using Robust.Shared.Map;

namespace Content.Shared.Clothing.Components;

/// <summary>
/// Indicates that the clothing entity emits sound when it moves.
/// </summary>
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class EmitsSoundOnMoveComponent : Component
{
[ViewVariables(VVAccess.ReadWrite)]
[DataField(required: true), AutoNetworkedField]
public SoundSpecifier SoundCollection = default!;

[ViewVariables(VVAccess.ReadWrite)]
[DataField("requiresGravity"), AutoNetworkedField]
public bool RequiresGravity = true;

[ViewVariables(VVAccess.ReadOnly)]
public EntityCoordinates LastPosition = EntityCoordinates.Invalid;

/// <summary>
/// The distance moved since the played sound.
/// </summary>
[ViewVariables(VVAccess.ReadOnly)]
public float SoundDistance = 0f;

/// <summary>
/// Whether this item is equipped in a inventory item slot.
/// </summary>
[ViewVariables(VVAccess.ReadOnly)]
public bool IsSlotValid = true;
}
96 changes: 96 additions & 0 deletions Content.Shared/Clothing/EntitySystems/EmitsSoundOnMoveSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
using System.Numerics;
using Content.Shared.Clothing.Components;
using Content.Shared.Gravity;
using Content.Shared.Inventory;
using Content.Shared.Inventory.Events;
using Content.Shared.Mobs.Components;
using Content.Shared.Movement.Components;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Physics.Components;
using Robust.Shared.Timing;

namespace Content.Shared.Clothing.Systems;

public sealed class EmitsSoundOnMoveSystem : EntitySystem
{
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedMapSystem _grid = default!;
[Dependency] private readonly SharedGravitySystem _gravity = default!;
[Dependency] private readonly IGameTiming _timing = default!;

private EntityQuery<InputMoverComponent> _moverQuery;
private EntityQuery<PhysicsComponent> _physicsQuery;
private EntityQuery<ClothingComponent> _clothingQuery;

public override void Initialize()
{
_moverQuery = GetEntityQuery<InputMoverComponent>();
_physicsQuery = GetEntityQuery<PhysicsComponent>();
_clothingQuery = GetEntityQuery<ClothingComponent>();

SubscribeLocalEvent<EmitsSoundOnMoveComponent, GotEquippedEvent>(OnEquipped);
SubscribeLocalEvent<EmitsSoundOnMoveComponent, GotUnequippedEvent>(OnUnequipped);
}

private void OnEquipped(EntityUid uid, EmitsSoundOnMoveComponent component, GotEquippedEvent args)
{
component.IsSlotValid = !args.SlotFlags.HasFlag(SlotFlags.POCKET);
}

private void OnUnequipped(EntityUid uid, EmitsSoundOnMoveComponent component, GotUnequippedEvent args)
{
component.IsSlotValid = true;
}

public override void Update(float frameTime)
{
var query = EntityQueryEnumerator<EmitsSoundOnMoveComponent>();
while (query.MoveNext(out var uid, out var comp))
{
UpdateSound(uid, comp);
}
query.Dispose();
}

private void UpdateSound(EntityUid uid, EmitsSoundOnMoveComponent component)
{
if (!_physicsQuery.TryGetComponent(uid, out var physics))
return;

// Space does not transmit sound
if (Transform(uid).GridUid == null)
return;

if (component.RequiresGravity && _gravity.IsWeightless(uid, physics, Transform(uid)))
return;

var parent = Transform(uid).ParentUid;

var isWorn = parent is { Valid: true } &&
_clothingQuery.TryGetComponent(uid, out var clothing)
&& clothing.InSlot != null
&& component.IsSlotValid;
// If this entity is worn by another entity, use that entity's coordinates
var coordinates = isWorn ? Transform(parent).Coordinates : Transform(uid).Coordinates;
var distanceNeeded = (isWorn && _moverQuery.TryGetComponent(parent, out var mover) && mover.Sprinting)
? 1.5f // The parent is a mob that is currently sprinting
: 2f; // The parent is not a mob or is not sprinting

if (!coordinates.TryDistance(EntityManager, component.LastPosition, out var distance) || distance > distanceNeeded)
component.SoundDistance = distanceNeeded;
else
component.SoundDistance += distance;

component.LastPosition = coordinates;
if (component.SoundDistance < distanceNeeded)
return;
component.SoundDistance -= distanceNeeded;

var sound = component.SoundCollection;
var audioParams = sound.Params
.WithVolume(sound.Params.Volume)
.WithVariation(sound.Params.Variation ?? 0f);

_audio.PlayPredicted(sound, uid, uid, audioParams);
}
}
Binary file added Resources/Audio/Effects/silence.ogg
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
door-electronics-configuration-title = Настроить доступы
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ silicon-law-ui-delete = Удалить
silicon-law-ui-check-corrupted = Повреждённый закон
silicon-law-ui-check-corrupted-tooltip = Если идентификатор закона будет установлен как «поврежденный», то символы будут перемешены.
silicon-law-ui-placeholder = Введите здесь, чтобы изменить текст закона...
silicon-laws-updated = Законы обновлены
3 changes: 3 additions & 0 deletions Resources/Locale/ru-RU/datasets/figurines.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ figurines-mime-5 = ................
figurines-musician-1 = Never gonna give you up!
figurines-musician-2 = Never gonna let you down!
figurines-boxer-1 = Первое правило бойцовского клуба...
figurines-boxer-2 = Мы разбёремся на ринге, ясно?
figurines-boxer-3 = Я. ЧЕМПИОН!!
figurines-boxer-4 = Не смотрите на меня, в него стреляли, а не били.
figurines-captain-1 = Слава НТ!
figurines-captain-2 = Как я получил эту должность? Да.
figurines-captain-3 = Ядерный диск в безопасности. Где? Где-то.
Expand Down
1 change: 1 addition & 0 deletions Resources/Locale/ru-RU/flavors/flavor-profiles.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ flavor-complex-vegetables = как овощи
## Complex foodstuffs (cooked foods, joke flavors, etc)

flavor-complex-cherry = как вишня
flavor-complex-pink = как розовый
flavor-complex-curry = как карри
flavor-complex-borsch-1 = как борщ
Expand Down
2 changes: 2 additions & 0 deletions Resources/Locale/ru-RU/items/toggle.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
item-toggle-activate = Включить
item-toggle-deactivate = Выключить
1 change: 1 addition & 0 deletions Resources/Locale/ru-RU/job/department-desc.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ department-Engineering-description = Поддерживайте наличие
department-Medical-description = Поддерживайте здоровье экипажа.
department-Security-description = Поддерживайте порядок на станции.
department-Science-description = Изучайте артефакты и аномалии, обеспечивайте членов экипажа новыми продвинутыми устройствами.
department-Silicon-description = Соблюдайте свои законы, служите экипажу.
department-Specific-description = Должности, которые есть не на всех станциях.
1 change: 1 addition & 0 deletions Resources/Locale/ru-RU/job/department.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ department-Engineering = Инженерный отдел
department-Medical = Медицинский отдел
department-Security = Служба безопасности
department-Science = Научный отдел
department-Silicon = Синтетики
department-Specific = На определённых станциях
1 change: 1 addition & 0 deletions Resources/Locale/ru-RU/job/job-description.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ job-description-salvagespec = Используйте магнит для при
job-description-scientist = Исследуйте инопланетные артефакты, открывайте новые технологии, заменяйте оборудование станции новыми и усиленными его версиями, повышайте общую эффективность работы.
job-description-security = Ловите преступников и врагов станции, следите за соблюдением закона и за тем, чтобы станция не погрузилась в беспорядки.
job-description-serviceworker = Изучите основы барменского искусства, кулинарии, и выращивания растений.
job-description-station-ai = Соблюдайте свои законы, служите экипажу.
job-description-visitor = Наслаждайтесь своим визитом на станцию.
job-description-warden = Патрулируйте отдел безопасности, следите за тем, чтобы никто не воровал из оружейной, и чтобы все заключённые были оформлены и выпущены по окончании срока.
job-description-zookeeper = Устройте весёлое шоу с милыми животными и космическими карпами, чтобы все члены экипажа могли ими полюбоваться. Эта должность доступна на станциях Gemini и Avrite.
2 changes: 2 additions & 0 deletions Resources/Locale/ru-RU/job/job-names.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ job-name-botanist = ботаник
job-name-bartender = бармен
job-name-passenger = ассистент
job-name-salvagespec = утилизатор
job-name-station-ai = станционный ИИ
job-name-qm = квартирмейстер
job-name-cargotech = грузчик
job-name-chef = шеф-повар
Expand Down Expand Up @@ -101,6 +102,7 @@ JobSecurityCadet = кадет СБ
JobSecurityOfficer = офицер СБ
JobServiceWorker = сервисный работник
JobStationEngineer = инженер
JobStationAi = станционный ИИ
JobTechnicalAssistant = технический ассистент
JobWarden = смотритель
JobVisitor = посетитель
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
health-analyzer-window-no-patient-data-text = Нет данных о пациенте.
health-analyzer-window-entity-unknown-text = неизвестно
health-analyzer-window-entity-health-text = Состояние { $entityName }:
health-analyzer-window-entity-temperature-text = Температура: { $temperature }
health-analyzer-window-entity-blood-level-text = Уровень крови: { $bloodLevel }
health-analyzer-window-entity-unknown-species-text = Негуманоид
health-analyzer-window-entity-unknown-value-text = Н/Д
health-analyzer-window-entity-alive-text = Жив
health-analyzer-window-entity-dead-text = Мёртв
health-analyzer-window-entity-critical-text = Критическое состояние
health-analyzer-window-entity-temperature-text = Температура:
health-analyzer-window-entity-status-text = Статус:
health-analyzer-window-entity-blood-level-text = Уровень крови:
health-analyzer-window-entity-bleeding-text = У пациента кровотечение!
health-analyzer-window-entity-damage-total-text = Общие повреждения: { $amount }
health-analyzer-window-entity-damage-total-text = Общие повреждения:
health-analyzer-window-damage-group-text = { $damageGroup }: { $amount }
health-analyzer-window-damage-type-text = { $damageType }: { $amount }
health-analyzer-window-damage-type-duplicate-text = { $damageType }: { $amount } (повтор)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ food-sequence-content-suppermatter = суперматерией
food-sequence-content-capfruit = пистофруктом
food-sequence-content-berries = ягодами
food-sequence-content-spacemans-trumpet = космической трубкой
food-sequence-content-cherry = вишней
# BURGERS

Expand Down
1 change: 1 addition & 0 deletions Resources/Locale/ru-RU/paper/stamp-component.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ stamp-component-stamped-name-warden = Смотритель
stamp-component-stamped-name-trader = Торговец
stamp-component-stamped-name-syndicate = Синдикат
stamp-component-stamped-name-ce = Старший инженер
stamp-component-stamped-name-greytide = Грейтайд
1 change: 1 addition & 0 deletions Resources/Locale/ru-RU/preferences/loadout-groups.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ loadout-group-mime-mask = Мим, маска
loadout-group-mime-jumpsuit = Мим, комбинезон
loadout-group-mime-backpack = Мим, рюкзак
loadout-group-mime-outerclothing = Мим, верхняя одежда
loadout-group-mime-belt = Мим, пояс
loadout-group-musician-jumpsuit = Музыкант, комбинезон
loadout-group-musician-outerclothing = Музыкант, верхняя одежда
# Cargo
Expand Down
3 changes: 3 additions & 0 deletions Resources/Locale/ru-RU/preferences/loadouts.ftl
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# Name
loadout-name-edit-label = Настраиваемое имя
loadout-name-edit-tooltip = Не более 32 символов. Если имя не указано, оно будет выбрано случайным образом.
# Restrictions
loadout-restrictions = Ограничения
loadouts-min-limit = Мин. кол-во: { $count }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,5 @@ reagent-name-juice-tomato = томатный сок
reagent-desc-juice-tomato = Томаты превращённые в сок. Какая трата хороших помидоров, а?
reagent-name-juice-watermelon = арбузный сок
reagent-desc-juice-watermelon = Вкусный сок арбуза.
reagent-name-juice-cherry = вишнёвый сок
reagent-desc-juice-cherry = Вкусный вишнёвый сок, сладкий и терпкий.
2 changes: 2 additions & 0 deletions Resources/Locale/ru-RU/research/components/blueprint.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
blueprint-receiver-popup-insert = { CAPITALIZE($user) } помещает { $blueprint } в { $receiver }.
blueprint-receiver-popup-recipe-exists = Такой чертёж уже был добавлен!
2 changes: 2 additions & 0 deletions Resources/Locale/ru-RU/salvage/salvage-magnet.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ salvage-magnet-resources-count =
[5] (Много)
*[other] (Изобилие)
}
# Debris
salvage-magnet-debris-ChunkDebris = Космический обломок
# Asteroids
dungeon-config-proto-BlobAsteroid = Астероидный массив
dungeon-config-proto-ClusterAsteroid = Астероидный кластер
Expand Down
2 changes: 2 additions & 0 deletions Resources/Locale/ru-RU/seeds/seeds.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -128,3 +128,5 @@ seeds-pyrotton-name = пирохлопок
seeds-pyrotton-display-name = куст пирохлопка
seeds-capfruit-name = пистофрукт
seeds-capfruit-display-name = пистофруктовое дерево
seeds-cherry-name = вишня
seeds-cherry-display-name = вишнёвое дерево
3 changes: 3 additions & 0 deletions Resources/Locale/ru-RU/shuttles/emergency.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,6 @@ emergency-shuttle-ui-authorize = АВТОРИЗОВАТЬСЯ
emergency-shuttle-ui-repeal = ПОВТОРИТЬ
emergency-shuttle-ui-authorizations = Авторизации
emergency-shuttle-ui-remaining = Осталось: { $remaining }
# Map Misc.
map-name-centcomm = Центральное командование
map-name-terminal = Терминал прибытия
11 changes: 11 additions & 0 deletions Resources/Locale/ru-RU/silicons/station-ai.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# General
ai-wire-snipped = Был перерезан провод, координаты { $coords }.
wire-name-ai-vision-light = ИИВ
wire-name-ai-act-light = ИИС
station-ai-takeover = ИИ захват
# Radial actions
ai-open = Открыть действия
ai-close = Закрыть действия
bolt-close = Заболтировать
bolt-open = Разболтировать
toggle-light = Переключить свет
4 changes: 2 additions & 2 deletions Resources/Locale/ru-RU/ss14-ru/prototypes/actions/types.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ ent-ActionTurnUndead = Обратиться в зомби
.desc = Поддайтесь заражению и превратитесь в зомби.
ent-ActionToggleLight = Переключить фонарь
.desc = Включает или выключает фонарь.
ent-ActionOpenStorageImplant = Открыть имплант Хранилище
.desc = Открывает доступ к хранилищу, спрятанному под вашей кожей.
ent-ActionOpenStorageImplant = Переключить имплант Хранилище
.desc = Открывает или закрывает доступ к хранилищу, спрятанному под вашей кожей.
ent-ActionActivateMicroBomb = Активировать имплант Микробомба
.desc = Активирует вживлённую микробомбу, полностью уничтожая вас и ваше снаряжение.
ent-ActionActivateDeathAcidifier = Активировать имплант Посмертный растворитель
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ ent-ClothingBeltMilitaryWebbing = армейская РПС
.desc = Ременно-плечевая система тактических ремней, которую носят абордажные группы Синдиката.
ent-ClothingBeltMilitaryWebbingMed = армейская РПС медика
.desc = Ременно-плечевая система тактических ремней, которую носят оперативники-медики Мародёров Горлекса.
ent-ClothingBeltSuspenders = подтяжки
ent-ClothingBeltSuspendersRed = красные подтяжки
.desc = Для поддержания штанов.
ent-ClothingBeltSuspendersBlack = чёрные подтяжки
.desc = { ent-ClothingBeltSuspendersRed.desc }
ent-ClothingBeltWand = пояс для палочек
.desc = Пояс, предназначенный для хранения различных волшебных палочек. Поясная сумка, полная экзотической магии.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ ent-ClothingEyesGlassesSunglasses = солнцезащитные очки
.desc = Пара чёрных солнцезащитных очков.
ent-ClothingEyesGlassesSecurity = очки охраны
.desc = Модернизированные солнцезащитные очки с функцией защиты от вспышек и визором СБ.
ent-ClothingEyesGlassesCommand = административные очки
.desc = Модернизированные солнцезащитные очки, обеспечивающие защиту от вспышек и отображающие статус ID-карты.
ent-ClothingEyesGlassesMercenary = очки наёмника
.desc = Очки, созданные для ведения боя, для защиты глаз от ярких ослепляющих вспышек.
ent-ClothingEyesGlassesThermal = оптический термальный сканер
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ ent-ClothingEyesHudMedical = медицинский визор
.desc = Окуляр с индикатором на стекле, который сканирует гуманоидов в поле зрения и предоставляет точные данные о состоянии их здоровья.
ent-ClothingEyesHudSecurity = визор охраны
.desc = Окуляр с индикатором на стекле, который сканирует гуманоидов в поле зрения и предоставляет точные данные об их идентификационном статусе и записях в системе безопасности.
ent-ClothingEyesHudCommand = административный визор
.desc = Окуляр с индикатором на стекле, который сканирует гуманоидов, находящихся в поле зрения, и предоставляет точные данные о статусе их ID.
ent-ClothingEyesHudBeer = пивные очки
.desc = Пара солнцезащитных очков, оснащённых сканером реагентов, а также дающих понимание вязкости жидкости во время движения.
ent-ClothingEyesHudFriedOnion = жаренно-лучковый визор
Expand Down
Loading

0 comments on commit 1e2c4b2

Please sign in to comment.