Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Fix, Feature] Some Fixes, sponsor traits #968

Merged
merged 10 commits into from
Dec 1, 2024
Merged

[Fix, Feature] Some Fixes, sponsor traits #968

merged 10 commits into from
Dec 1, 2024

Conversation

KayzelW
Copy link
Collaborator

@KayzelW KayzelW commented Dec 1, 2024

🆑

  • remove: Убрана система передачи предметов (нагнули сервер)
  • tweak: Изменена система коконов (портирована с EE)

Summary by CodeRabbit

  • Новые функции

    • Добавлен компонент CocoonerComponent для управления процессами коконирования.
    • Введен новый класс TraitGiantComponent для определения масштабов сущностей.
    • Улучшена функциональность редактора профиля гуманоидов с учетом спонсорских черт.
    • Обновлен интерфейс привязки клавиш с добавлением функции автоматического вставания.
    • Удалены функции, связанные с предложениями предметов, такие как OfferItem.
    • Добавлены новые черты "Гигантизм" (10%, 20%, 30%) с соответствующими описаниями для локализации.
  • Исправления ошибок

    • Устранены проблемы с отображением кнопок на основе списков доступа в окне управления доступом.
  • Документация

    • Обновлены конфигурации сущностей и ключевых привязок, удалены устаревшие функции, такие как OfferItem.

@KayzelW KayzelW added Feature Я хочу добавить что-то новое. Fix Я хочу исправить то что работает не так. labels Dec 1, 2024
@KayzelW KayzelW requested a review from Rxup as a code owner December 1, 2024 11:31
Copy link
Contributor

coderabbitai bot commented Dec 1, 2024

## Walkthrough
В данном пулл-запросе внесены изменения в несколько классов и файлов, касающихся управления доступом, предложениями предметов и взаимодействиями с ними в игре. Основные изменения включают удаление классов, связанных с предложениями предметов, и обновление логики в классе `HumanoidProfileEditor` для управления спонсорскими чертами. Также добавлены новые компоненты и системы для управления коконами, а также обновлены конфигурации для сущностей и ключевых функций. Внесенные изменения направлены на оптимизацию и реорганизацию кода.

## Changes

| File Path                                                               | Change Summary                                                                                                           |
|-------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|
| Content.Client/Access/UI/AccessOverriderWindow.xaml.cs                | Изменена логика в методе `UpdateState` для проверки состояний кнопок на основе списков доступа.                        |
| Content.Client/Backmen/OfferItem/OfferItemIndicatorsOverlay.cs         | Удален класс `OfferItemIndicatorsOverlay`, ответственный за отрисовку оверлея предложений предметов.                   |
| Content.Client/Backmen/OfferItem/OfferItemSystem.cs                   | Удален класс `OfferItemSystem`, управлявший отображением индикаторов предложений.                                      |
| Content.Client/Input/ContentContexts.cs                                  | Удалена функция `ContentKeyFunctions.OfferItem` из контекста `human`.                                                  |
| Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs                  | Добавлен новый параметр `IClientSponsorsManager` в конструктор; обновлен метод `RefreshTraits` для управления чертами. |
| Content.Client/Lobby/UI/Roles/TraitPreferenceSelector.xaml.cs          | Добавлено новое поле `public readonly TraitPrototype Trait`; обновлен конструктор для инициализации этого поля.       |
| Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs                    | Добавлен метод `HandleToggleAutoGetUp`; активирована функция `OfferItem` в методе `AddButton`.                        |
| Content.Server/Backmen/Arachne/ArachneSystem.cs                        | Упрощена обработка событий, связанных с `CocoonComponent`; удалены ненужные подписки.                                   |
| Content.Server/Backmen/Cocoon/CocoonComponent.cs                       | Изменено пространство имен для `CocoonComponent` без изменения свойств или методов.                                   |
| Content.Server/Backmen/Cocoon/CocoonerComponent.cs                     | Добавлен новый компонент `CocoonerComponent` с полями `CocoonDelay` и `CocoonKnockdownMultiplier`.                    |
| Content.Server/Backmen/Cocoon/CocoonerSystem.cs                        | Добавлена система `CocoonerSystem` для управления коконированием и раскоконированием сущностей.                       |
| Content.Server/Backmen/OfferItem/OfferItemSystem.cs                   | Удален класс `OfferItemSystem`, управлявший логикой предложений предметов.                                             |
| Content.Server/Backmen/Traits/Specific/Giant/TraitGiantComponent.cs   | Добавлен новый компонент `TraitGiantComponent` с полем `Scale`.                                                       |
| Content.Server/Backmen/Traits/Specific/Giant/TraitGiantSystem.cs      | Добавлена система `TraitGiantSystem` для инициализации и масштабирования сущностей с `TraitGiantComponent`.            |
| Content.Shared/Backmen/Cocoon/CocoonDoAfterEvent.cs                   | Добавлены классы `CocoonDoAfterEvent` и `UnCocoonDoAfterEvent`, наследующие от `SimpleDoAfterEvent`.                  |
| Content.Shared/Backmen/OfferItem/OfferItemComponent.cs                | Удален класс `OfferItemComponent`, управлявший состоянием предложений предметов.                                        |
| Content.Shared/Backmen/OfferItem/SharedOfferItemSystem.Interactions.cs | Удален класс `SharedOfferItemSystem`, управлявший взаимодействиями, связанными с предложениями предметов.              |
| Content.Shared/Backmen/OfferItem/SharedOfferItemSystem.cs             | Удален класс `SharedOfferItemSystem`, управлявший взаимодействиями с предметами.                                       |
| Content.Shared/Input/ContentKeyFunctions.cs                             | Удалена функция `OfferItem` из класса `ContentKeyFunctions`.                                                            |
| Content.Shared/Traits/TraitPrototype.cs                                 | Добавлено новое свойство `SponsorOnly` в класс `TraitPrototype`.                                                       |
| Resources/Prototypes/Entities/Mobs/Species/base.yml                    | Обновлены определения сущностей и добавлены новые компоненты для видов мобов.                                          |
| Resources/Prototypes/_Backmen/Traits/specific.yml                      | Добавлено новое определение черты "Giant" с соответствующими компонентами.                                           |
| Resources/keybinds.yml                                                   | Удалена функция `OfferItem`; обновлена привязка клавиши `FlipObject`.                                                  |

## Poem
> В норке новой, в тени,  
> Изменения, как весенний день.  
> Кнопки, черты, и коконы в ряд,  
> Игровой мир вновь засияет, как рад.  
> Прыгаем, скачем, в светлый путь,  
> С новыми силами, вперёд, в суть! 🐇✨

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions bot added S: Untriaged Changes: UI Can be reviewed or fixed by people who are knowledgeable with UI design size/XL labels Dec 1, 2024
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🧹 Outside diff range and nitpick comments (14)
Content.Client/Access/UI/AccessOverriderWindow.xaml.cs (1)

91-92: Улучшение безопасности типов при проверке доступа

Изменения корректно обрабатывают новую структуру данных, извлекая Id из объектов доступа.

Для оптимизации производительности, предлагаю кэшировать результат Select:

-                    button.Pressed = state.TargetAccessReaderIdAccessList?.Select(x => x.Id).Contains(accessName) ?? false;
-                    button.Disabled = (!state.AllowedModifyAccessList?.Select(x => x.Id).Contains(accessName)) ?? true;
+                    var targetIds = state.TargetAccessReaderIdAccessList?.Select(x => x.Id).ToList();
+                    var allowedIds = state.AllowedModifyAccessList?.Select(x => x.Id).ToList();
+                    button.Pressed = targetIds?.Contains(accessName) ?? false;
+                    button.Disabled = (!allowedIds?.Contains(accessName)) ?? true;
Content.Server/Backmen/Traits/Specific/Giant/TraitGiantComponent.cs (2)

3-5: Добавьте документацию к компоненту

Рекомендуется добавить XML-документацию, описывающую назначение компонента и его взаимодействие с другими системами.

Предлагаемые изменения:

 [RegisterComponent]
+/// <summary>
+/// Компонент, определяющий масштаб для гигантских существ.
+/// Используется системой TraitGiantSystem для изменения размера сущности.
+/// </summary>
 public sealed partial class TraitGiantComponent : Component

1-8: Рассмотрите добавление интерфейса для трейтов

Поскольку это часть системы трейтов, рекомендуется:

  1. Создать общий интерфейс для всех трейтов
  2. Реализовать механизм приоритетов для случаев конфликта трейтов
  3. Добавить систему валидации совместимости трейтов
Content.Shared/Backmen/Cocoon/CocoonDoAfterEvent.cs (2)

6-9: Рекомендуется добавить документацию для класса

Добавьте XML-документацию для описания назначения класса и его использования в системе коконов. Это улучшит понимание кода для других разработчиков.

Предлагаемые изменения:

 [Serializable, NetSerializable]
+/// <summary>
+/// Событие, возникающее при попытке создания кокона.
+/// </summary>
 public sealed partial class CocoonDoAfterEvent : SimpleDoAfterEvent
 {
 }

1-14: Рассмотреть необходимость валидации

Текущая реализация классов пуста. Возможно, следует добавить базовую валидацию или свойства для передачи дополнительных данных между клиентом и сервером.

Хотите, чтобы я предложил пример реализации с валидацией и необходимыми свойствами?

Content.Server/Backmen/Cocoon/CocoonerSystem.cs (2)

98-114: Рассмотрите использование разных иконок для действий "Cocoon" и "Uncocoon"

В методах AddCocoonVerb и AddUnCocoonVerb для обоих действий используется одна и та же иконка /Textures/Interface/Actions/web.png. Рекомендуется использовать разные иконки, чтобы игроки могли легко различать эти действия в интерфейсе.

Also applies to: 116-132


178-189: Используйте константы для строковых значений "mumble"

Вместо повторяющегося использования строкового литерала "mumble", лучше определить его как константу или использовать перечисление (enum). Это улучшит читаемость и поддерживаемость кода.

Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs (1)

119-120: Конструктор содержит слишком много параметров

Конструктор класса HumanoidProfileEditor имеет большое количество параметров, что может усложнить поддержку и чтение кода. Рассмотрите возможность использования паттерна Dependency Injection для уменьшения количества передаваемых параметров или объединения связанных параметров в объекты конфигурации.

Resources/Prototypes/_Backmen/Traits/specific.yml (1)

8-9: Несоответствие в форматировании комментариев

В строках 8 и 9 присутствуют комментарии, оформленные по-разному: без пробела и с пробелом после знака #. Рекомендуется использовать единообразное форматирование комментариев для лучшей читаемости кода.

Исправленное форматирование:

-    - BSSDrone #backmen: bssdrone
+    - BSSDrone # backmen: bssdrone
Content.Shared/Traits/TraitPrototype.cs (1)

22-26: Улучшите описание свойства SponsorOnly

Текущее описание свойства SponsorOnly недостаточно информативно. Рекомендуется уточнить комментарий, чтобы ясно понимать назначение свойства.

Предлагаемое исправление:

-    /// <summary>
-    /// Is sponsorOnly
-    /// </summary>
+    /// <summary>
+    /// Определяет, доступен ли этот трейт только для спонсоров.
+    /// </summary>
Content.Server/Backmen/Cocoon/CocoonerComponent.cs (1)

5-6: Добавьте документацию для компонента

Рекомендуется добавить XML-документацию, объясняющую назначение компонента и его роль в системе коконов. Это улучшит понимание кода другими разработчиками.

+/// <summary>
+/// Компонент, отвечающий за возможность создания коконов
+/// </summary>
[RegisterComponent, NetworkedComponent]
public sealed partial class CocoonerComponent : Component
Content.Server/Backmen/Arachne/ArachneSystem.cs (3)

148-151: Улучшить читаемость проверки физики

Сложное условие проверки препятствий можно вынести в отдельный метод для улучшения читаемости.

Предлагаю следующий рефакторинг:

-((Resolve(entity, ref physics, false) &&
-  (physics.CollisionLayer & (int)CollisionGroup.Impassable) != 0)
- && !(TryComp<DoorComponent>(entity, out var door) &&
-      door.State != DoorState.Closed))
+private bool IsImpassableObstacle(EntityUid entity, PhysicsComponent? physics = null)
+{
+    if (!Resolve(entity, ref physics, false))
+        return false;
+        
+    if ((physics.CollisionLayer & (int)CollisionGroup.Impassable) == 0)
+        return false;
+        
+    // Открытые двери не считаются препятствием
+    if (TryComp<DoorComponent>(entity, out var door) && door.State != DoorState.Closed)
+        return false;
+        
+    return true;
+}

115-118: Стандартизировать сообщения об ошибках

Все сообщения об ошибках используют одинаковый формат PopupEntity с типом MediumCaution, что хорошо для консистентности. Однако можно вынести повторяющийся код в вспомогательный метод.

Предлагаю создать вспомогательный метод:

+private void ShowErrorPopup(EntityUid performer, string message)
+{
+    _popupSystem.PopupEntity(
+        Loc.GetString(message),
+        performer,
+        performer,
+        Shared.Popups.PopupType.MediumCaution);
+}

Also applies to: 124-127, 136-139, 153-156


161-172: Оптимизировать отправку сообщений

Код отправки сообщений о создании паутины содержит дублирование логики фильтрации. Рекомендуется вынести общую логику в отдельный метод.

Предлагаю следующий рефакторинг:

+private Filter CreateMessageFilter(EntityUid source, EntityUid exclude)
+{
+    return Filter.PvsExcept(exclude)
+        .RemoveWhereAttachedEntity(entity =>
+            !_examine.InRangeUnOccluded(source, entity, ExamineRange, null));
+}

Также рекомендуется добавить константы для повторяющихся строковых идентификаторов локализации.

Also applies to: 195-203

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 2f0bf92 and ae668eb.

📒 Files selected for processing (23)
  • Content.Client/Access/UI/AccessOverriderWindow.xaml.cs (1 hunks)
  • Content.Client/Backmen/OfferItem/OfferItemIndicatorsOverlay.cs (0 hunks)
  • Content.Client/Backmen/OfferItem/OfferItemSystem.cs (0 hunks)
  • Content.Client/Input/ContentContexts.cs (0 hunks)
  • Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs (5 hunks)
  • Content.Client/Lobby/UI/Roles/TraitPreferenceSelector.xaml.cs (2 hunks)
  • Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs (0 hunks)
  • Content.Server/Backmen/Arachne/ArachneSystem.cs (7 hunks)
  • Content.Server/Backmen/Cocoon/CocoonComponent.cs (1 hunks)
  • Content.Server/Backmen/Cocoon/CocoonerComponent.cs (1 hunks)
  • Content.Server/Backmen/Cocoon/CocoonerSystem.cs (1 hunks)
  • Content.Server/Backmen/OfferItem/OfferItemSystem.cs (0 hunks)
  • Content.Server/Backmen/Traits/Specific/Giant/TraitGiantComponent.cs (1 hunks)
  • Content.Server/Backmen/Traits/Specific/Giant/TraitGiantSystem.cs (1 hunks)
  • Content.Shared/Backmen/Cocoon/CocoonDoAfterEvent.cs (1 hunks)
  • Content.Shared/Backmen/OfferItem/OfferItemComponent.cs (0 hunks)
  • Content.Shared/Backmen/OfferItem/SharedOfferItemSystem.Interactions.cs (0 hunks)
  • Content.Shared/Backmen/OfferItem/SharedOfferItemSystem.cs (0 hunks)
  • Content.Shared/Input/ContentKeyFunctions.cs (0 hunks)
  • Content.Shared/Traits/TraitPrototype.cs (1 hunks)
  • Resources/Prototypes/Entities/Mobs/Species/base.yml (0 hunks)
  • Resources/Prototypes/_Backmen/Traits/specific.yml (1 hunks)
  • Resources/keybinds.yml (0 hunks)
💤 Files with no reviewable changes (11)
  • Content.Shared/Input/ContentKeyFunctions.cs
  • Content.Client/Input/ContentContexts.cs
  • Resources/keybinds.yml
  • Content.Shared/Backmen/OfferItem/OfferItemComponent.cs
  • Content.Client/Backmen/OfferItem/OfferItemSystem.cs
  • Content.Server/Backmen/OfferItem/OfferItemSystem.cs
  • Content.Shared/Backmen/OfferItem/SharedOfferItemSystem.cs
  • Content.Client/Backmen/OfferItem/OfferItemIndicatorsOverlay.cs
  • Content.Shared/Backmen/OfferItem/SharedOfferItemSystem.Interactions.cs
  • Resources/Prototypes/Entities/Mobs/Species/base.yml
  • Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs
✅ Files skipped from review due to trivial changes (1)
  • Content.Server/Backmen/Cocoon/CocoonComponent.cs
🔇 Additional comments (7)
Content.Server/Backmen/Cocoon/CocoonerSystem.cs (3)

243-245: Корректная реализация логирования админских действий

Логирование действий в методе OnCocoonDoAfter выполнено правильно, обеспечивая необходимую запись действий для администрирования.


207-222: Правильная обработка передачи урона внутри кокона

Метод OnDamageChanged эффективно передаёт часть урона, полученного коконом, внутрь коконированному существу, что соответствует ожидаемой механике.


50-58: Обоснованное использование подписок на события

В методе Initialize подписки на локальные события установлены корректно, обеспечивая необходимую функциональность системы коконирования.

Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs (2)

54-54: Добавлено новое поле _clientSponsorsManager

Добавлено поле _clientSponsorsManager, которое будет использоваться для управления спонсорскими функциями в профиле. Убедитесь, что это поле корректно инициализировано и используется во всех необходимых местах.


598-603: Отключение недоступных спонсорских черт

Логика в методе RefreshTraits корректно отключает выбор недоступных спонсорских черт для пользователя, у которого нет соответствующего прототипа. Это улучшает пользовательский опыт и предотвращает выбор недоступных опций.

Content.Server/Backmen/Cocoon/CocoonerComponent.cs (1)

1-13: Проверьте интеграцию с системой коконов

Компонент является частью системы коконов. Убедитесь, что все взаимодействия с CocoonSystem реализованы корректно.

✅ Verification successful

Let me check the implementation details of the CocoonerSystem to verify the integration.


Интеграция с системой коконов реализована корректно

Проверка показала, что компонент CocoonerComponent правильно интегрирован в CocoonerSystem:

  • Поля CocoonDelay и CocoonKnockdownMultiplier корректно используются в системе для расчета времени коконирования
  • Реализована полная логика создания и удаления коконов
  • Присутствует корректная обработка событий и необходимые зависимости
  • Система включает логирование действий и обработку повреждений
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверяем использование компонента в системе
ast-grep --pattern 'class CocoonSystem {
  $$$
  CocoonerComponent $_
  $$$
}'

# Проверяем все зависимости
rg -l "CocoonerComponent" 

Length of output: 205


Script:

#!/bin/bash
# Проверяем реализацию системы
cat Content.Server/Backmen/Cocoon/CocoonerSystem.cs

# Проверяем использование полей компонента
rg "CocoonDelay|CocoonKnockdownMultiplier" -A 2

Length of output: 11821

Content.Server/Backmen/Arachne/ArachneSystem.cs (1)

86-86: Упрощение инициализации компонента

Инициализация была упрощена до добавления только одного действия SpinWeb. Это делает код более чистым, но убедитесь, что удаление других подписок на события было намеренным.

✅ Verification successful

Let me check the full context of these event subscriptions to verify if the initialization is properly handled.


Let me check the implementation of the event handlers to verify the complete initialization flow.


Let me try a different approach to check these methods.


Инициализация компонента реализована корректно

Проверка показала, что система правильно обрабатывает все необходимые события:

  • Инициализация (OnInit) добавляет действие SpinWeb
  • Завершение работы (OnShutdown) корректно удаляет действие
  • Обработка создания паутины (OnWebDoAfter) реализована с учетом системы голода

Упрощение инициализации является обоснованным, так как все критические события обрабатываются должным образом.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверка использования других событий в системе
rg "SubscribeLocalEvent.*Arachne" --type cs

Length of output: 422


Script:

#!/bin/bash
# Check the full context of the ArachneSystem class
rg -A 5 "class ArachneSystem" Content.Server/Backmen/Arachne/ArachneSystem.cs

Length of output: 430


Script:

#!/bin/bash
# Check the OnInit, OnShutdown, and OnWebDoAfter implementations
ast-grep --pattern 'private void OnInit($$$) {
  $$$
}'

ast-grep --pattern 'private void OnShutdown($$$) {
  $$$
}'

ast-grep --pattern 'private void OnWebDoAfter($$$) {
  $$$
}'

Length of output: 491


Script:

#!/bin/bash
# Check the specific methods in ArachneSystem
rg "private void On(Init|Shutdown|WebDoAfter)" Content.Server/Backmen/Arachne/ArachneSystem.cs -A 5

Length of output: 661

Comment on lines +8 to +12
[DataField("cocoonDelay")]
public float CocoonDelay = 12f;

[DataField("cocoonKnockdownMultiplier")]
public float CocoonKnockdownMultiplier = 0.5f;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Улучшите конфигурацию полей

Необходимо:

  1. Добавить документацию к полям
  2. Добавить валидацию значений
  3. Объяснить выбор значений по умолчанию
+    /// <summary>
+    /// Задержка в секундах перед созданием кокона
+    /// </summary>
     [DataField("cocoonDelay")]
+    [ViewVariables(VVAccess.ReadWrite)]
+    [DataField("cocoonDelay", required: true)]
     public float CocoonDelay = 12f;

+    /// <summary>
+    /// Множитель оглушения при попадании в кокон
+    /// </summary>
     [DataField("cocoonKnockdownMultiplier")]
+    [ViewVariables(VVAccess.ReadWrite)]
+    [DataField("cocoonKnockdownMultiplier", required: true)]
     public float CocoonKnockdownMultiplier = 0.5f;

Committable suggestion skipped: line range outside the PR's diff.

@github-actions github-actions bot added the Changes: Localization Can be reviewed or fixed by people who are knowledgeable with translation label Dec 1, 2024
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Outside diff range and nitpick comments (4)
Content.Client/Lobby/LobbyUIController.cs (2)

45-45: Добавьте проверку на null для _clientSponsorsManager

Рекомендуется добавить проверку на null для нового зависимого сервиса, чтобы избежать потенциальных NullReferenceException.

[Dependency] private readonly ISharedSponsorsManager _clientSponsorsManager = default!;
+
+protected override void Initialize()
+{
+    base.Initialize();
+    if (_clientSponsorsManager == null)
+        throw new InvalidOperationException($"{nameof(_clientSponsorsManager)} не был инициализирован");
+}

Line range hint 598-606: Вынесите названия групп в константы

Жестко закодированные названия групп ("Werx", "Niz", "Socks") лучше вынести в константы на уровне класса для улучшения поддерживаемости кода.

+private static readonly HashSet<string> ClothingGroups = new() { "Werx", "Niz", "Socks" };

-HashSet<string> groupsToShow = ["Werx", "Niz", "Socks"];
+HashSet<string> groupsToShow = ClothingGroups;
Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs (2)

598-605: Добавьте комментарий, объясняющий логику спонсорских особенностей

Для улучшения понимания кода рекомендуется добавить комментарий, объясняющий логику обработки спонсорских особенностей.

+// Если особенность доступна только спонсорам и текущий клиент не имеет соответствующего прототипа,
+// делаем чекбокс неактивным и окрашиваем метку серым цветом
if (selector.Trait.SponsorOnly && !_clientSponsorsManager.GetClientPrototypes().Contains(selector.Trait.ID))
{
    selector.Checkbox.Label.FontColorOverride = Color.Gray;
    selector.Checkbox.Disabled = true;
    selector.Checkbox.Pressed = false;
}

Line range hint 636-639: Исправьте использование неопределенной переменной _sponsorsMgr

В коде используется переменная _sponsorsMgr, которая не определена. Вместо нее следует использовать _clientSponsorsManager.

-if (_sponsorsMgr != null)
-    _species = _species.Where(p => !p.SponsorOnly || _sponsorsMgr.GetClientPrototypes().Contains(p.ID)).ToList();
+_species = _species.Where(p => !p.SponsorOnly || _clientSponsorsManager.GetClientPrototypes().Contains(p.ID)).ToList();
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between ae668eb and 0589726.

📒 Files selected for processing (3)
  • Content.Client/Lobby/LobbyUIController.cs (3 hunks)
  • Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs (5 hunks)
  • Resources/Locale/ru-RU/backmen/trait/OwOAccent.ftl (1 hunks)

KayzelW and others added 2 commits December 1, 2024 15:12
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (8)
Content.Shared/Preferences/HumanoidCharacterProfile.cs (1)

625-627: Проверьте обработку спонсорских особенностей

Логика фильтрации корректна, но рекомендуется добавить логирование при попытке использования спонсорских особенностей неспонсором для отслеживания потенциальных проблем.

 var traits = TraitPreferences
     .Where(x => prototypeManager.TryIndex(x, out var trait)
-                && (!trait.SponsorOnly || sponsorPrototypes.Contains(x.Id))) //backmen: sponsor traits
+                && (!trait.SponsorOnly || sponsorPrototypes.Contains(x.Id)))
+    .Do(x => {
+        if (prototypeManager.TryIndex(x, out var trait) && 
+            trait.SponsorOnly && !sponsorPrototypes.Contains(x.Id))
+        {
+            Logger.Warning($"Попытка использования спонсорской особенности {x.Id} неспонсором");
+        }
+    })
     .ToList();
Resources/Prototypes/_Backmen/Traits/specific.yml (2)

8-9: Исправьте форматирование комментариев

В файле используются разные стили комментариев:

  • #backmen: bssdrone (без пробела после #)
  • # backmen: AI (с пробелом после #)

Рекомендуется использовать единый стиль для всех комментариев.

-    - BSSDrone #backmen: bssdrone
-    - StationAI # backmen: AI
+    - BSSDrone # backmen: bssdrone
+    - StationAI # backmen: AI

2-39: Рассмотрите возможность использования наследования прототипов

Все три черты имеют идентичный список заблокированных компонентов (blacklist). Для улучшения поддерживаемости кода рекомендуется создать базовый прототип черты с общими свойствами и наследовать от него специфические реализации.

Пример реорганизации:

- type: trait
  id: GiantBase
  abstract: true
  blacklist:
    components:
      - BSSDrone # backmen: bssdrone
      - StationAI # backmen: AI
      - BorgChassis

- type: trait
  parent: GiantBase
  id: Giant10
  name: Giant10-name
  description: Giant10-desc
  components:
    - type: TraitGiant
      scale: 1.1

# Аналогично для Giant20 и Giant30
Resources/Prototypes/Entities/Mobs/NPCs/animals.yml (1)

2454-2454: Новая сущность MobClownSpider корректно определена

Клоун-паук имеет все необходимые компоненты и модификации. Рекомендуется добавить комментарии в код, описывающие особое поведение и взаимодействия этой сущности.

Предлагаю добавить комментарии YAML:

- name: clown spider
+ # A special variant of the giant spider with clown-themed attributes
+ # and unique behaviors including special web effects
+ name: clown spider
Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/mutants.yml (4)

Line range hint 171-196: Проверьте список разрешенных статус-эффектов

В списке allowed присутствуют эффекты, которые могут не соответствовать лору существа (например, Drunk, SlurredSpeech). Рекомендуется пересмотреть список.


Line range hint 205-223: Проверьте правила для призрачной роли

В описании GhostRole указано "Just don't talk in emote", но нет явного указания на доступные способы коммуникации. Рекомендуется уточнить правила.

-      rules: No antagonist restrictions. Just don't talk in emote; you have telepathic chat.
+      rules: No antagonist restrictions. Use telepathic chat only. Speaking in emotes is forbidden. Available languages: Spider, TauCetiBasic, Xeno.

Баланс химических взаимодействий требует корректировки

На основе анализа других сущностей с похожими компонентами:

  1. Текущие значения для мутанта (24 ед. Nocturine, впрыск 4 ед., регенерация 3 ед.) значительно превышают стандартные показатели:
  • Обычные существа: 0.75-2 ед. впрыска (тарантул, элементали)
  • Опасные существа: 4-6 ед. впрыска (космические существа)
  • Регенерация: 0.1-1 ед. (роботы, элементали)
  1. Рекомендуемые изменения:
  • Уменьшить начальное количество Nocturine до 12-15 единиц
  • Снизить количество впрыскиваемого реагента до 2-3 единиц
  • Уменьшить регенерацию до 1-1.5 единиц
🔗 Analysis chain

Line range hint 131-146: Проверьте баланс химических взаимодействий

Комбинация компонентов SolutionContainerManager, MeleeChemicalInjector и SolutionRegeneration с текущими значениями может создавать дисбаланс:

  • 24 единицы Nocturine изначально
  • Впрыск 4 единиц за удар
  • Регенерация 3 единиц

Рекомендуется:

  1. Уменьшить начальное количество реагента
  2. Снизить количество впрыскиваемого реагента
  3. Увеличить время регенерации

Let me search for other entities with similar chemical components to compare values.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск других сущностей с похожими химическими компонентами для сравнения значений
rg -A 5 "SolutionContainerManager|MeleeChemicalInjector|SolutionRegeneration"

Length of output: 73282


Script:

#!/bin/bash
# Search for other entities with MeleeChemicalInjector and SolutionRegeneration
rg -A 10 "MeleeChemicalInjector|SolutionRegeneration" Resources/Prototypes/

Length of output: 27682


Based on the gathered information, I can now provide the final response:

Баланс босса требует корректировки

Текущая комбинация усилений делает босса чрезмерно сильным:

  • Увеличенное количество Ноктюрина (40 ед. против 24 ед. у обычной версии)
  • Увеличенная доза впрыска (7 ед. против 4 ед.)
  • Ускоренная регенерация химиката (4 ед. против 3 ед.)
  • Значительно повышенная скорость передвижения (2/3 против базовой)
  • Увеличенный размер спрайта (1.5x)

Рекомендуемые изменения:

  • Уменьшить количество Ноктюрина до 30-35 единиц
  • Снизить дозу впрыска до 5-6 единиц
  • Уменьшить скорость регенерации химиката до базового значения (3 ед.)
  • Рассмотреть уменьшение скорости передвижения
🔗 Analysis chain

Line range hint 224-266: Проверьте баланс босса

Босс-версия имеет значительные усиления:

  • Увеличенный размер спрайта (1.5x)
  • Больше химических реагентов (40 единиц Nocturine)
  • Увеличенная скорость передвижения
  • 10 зарядов для SpiderVampire

Рекомендуется проверить, не является ли такая комбинация слишком сильной.


Let me gather more information about the base entity and other similar entities for comparison.


Let me gather more information about the base entity's combat capabilities to better assess the balance.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск других босс-сущностей для сравнения характеристик
rg "suffix: .*Boss" -A 10

Length of output: 984


Script:

#!/bin/bash
# Search for the parent entity definition
rg "MobGiantSpiderVampire" -B 5 -A 15

# Search for similar vampire/boss entities
rg "Nocturine" -B 5 -A 5

# Search for other entities with MovementSpeedModifier
ast-grep --pattern 'type: MovementSpeedModifier
      baseWalkSpeed: $_
      baseSprintSpeed: $_'

Length of output: 36655


Script:

#!/bin/bash
# Search for the base entity's combat stats
rg "MobGiantSpiderVampire" -A 20 | grep -E "type: (Melee|Damage|Health|Combat)"

# Search for other boss entities' movement speeds
ast-grep --pattern 'suffix: .*Boss
  $$$
  components:
    $$$
    - type: MovementSpeedModifier
      baseWalkSpeed: $_
      baseSprintSpeed: $_'

# Look for chemical injection capabilities in base entity
rg "MobGiantSpiderVampire" -A 30 | grep -E "type: (Solution|Chemical|Melee)"

Length of output: 688

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 085d304 and 6b6af96.

📒 Files selected for processing (7)
  • Content.Server/Backmen/Cocoon/CocoonerComponent.cs (1 hunks)
  • Content.Shared/Preferences/HumanoidCharacterProfile.cs (1 hunks)
  • Resources/Locale/ru-RU/backmen/trait/OwOAccent.ftl (1 hunks)
  • Resources/Prototypes/Entities/Mobs/NPCs/animals.yml (1 hunks)
  • Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/mutants.yml (1 hunks)
  • Resources/Prototypes/_Backmen/Entities/Mobs/Species/arachne.yml (1 hunks)
  • Resources/Prototypes/_Backmen/Traits/specific.yml (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • Content.Server/Backmen/Cocoon/CocoonerComponent.cs
🔇 Additional comments (10)
Resources/Locale/ru-RU/backmen/trait/OwOAccent.ftl (1)

5-12: Локализация выполнена корректно!

Все новые записи для черт "Гигантизм" оформлены правильно:

  • Корректные пробелы после названий
  • Грамматически верные описания
  • Последовательное форматирование для всех уровней (10%, 20%, 30%)
Resources/Prototypes/_Backmen/Entities/Mobs/Species/arachne.yml (4)

135-135: Проверьте конфигурацию компонента Cocooner

Компонент Cocooner добавлен без явной конфигурации. Рекомендуется указать параметры задержки и множителя оглушения, если они отличаются от значений по умолчанию.


Line range hint 136-141: Визуализация урона реализована корректно

Компонент DamageVisuals правильно настроен с порогами урона и целевыми слоями для гуманоидной модели.


Line range hint 284-301: Изменения в шаблоне инвентаря выглядят логично

Добавление слота undershirt и отключение underpants и socks соответствует стандартной системе инвентаря. Комментарии четко обозначают секцию настройки нижней одежды.


Line range hint 147-150: Проверьте баланс скорости передвижения

Базовые значения скорости кажутся высокими:

  • Скорость ходьбы: 3.0
  • Скорость бега: 5.0

Рекомендуется сравнить эти значения со скоростью других существ для обеспечения игрового баланса.

✅ Verification successful

Based on the search results, I can now generate the final response since I have enough information about movement speeds across different entities in the codebase.

Скорость передвижения арахны сбалансирована относительно других существ

Текущие значения скорости арахны (ходьба: 3.0, бег: 5.0) находятся в пределах нормы по сравнению с другими существами:

  • Большинство NPC имеют скорость ходьбы 2.0-3.0 и бега 3.0-5.0
  • Теневик (похожий игровой вид): ходьба 2.7, бег 4.5
  • Голем: ходьба 1.8-4.0, бег 3.0-5.5
  • Гарпия: ходьба 2.5, бег 5.0

Значения скорости арахны соответствуют общему балансу игры и не требуют корректировки.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск конфигураций скорости в других файлах прототипов
rg "baseWalkSpeed|baseSprintSpeed" -A 1

Length of output: 27452

Resources/Prototypes/Entities/Mobs/NPCs/animals.yml (2)

2454-2454: Компонент Cocooner успешно добавлен

Добавление компонента Cocooner соответствует целям PR по модификации системы коконов.


2454-2454: Проверьте взаимодействия фракции Xeno

Добавление принадлежности к фракции Xeno логично для агрессивного варианта паука. Рекомендуется проверить, правильно ли работают взаимодействия с другими членами фракции.

✅ Verification successful

Фракция Xeno корректно настроена

Проверка показала, что компонент NpcFactionMember с фракцией Xeno правильно определен в прототипах ксеноморфов. Взаимодействия между членами фракции будут работать корректно, так как:

  • Фракция Xeno определена в системе фракций
  • Компонент NpcFactionMember с фракцией Xeno присутствует в прототипах
  • Все ксеноморфы используют одинаковую конфигурацию фракции
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверка других сущностей фракции Xeno
rg -l "factions:\s*-\s*Xeno" 

Length of output: 30


Script:

#!/bin/bash
# Поиск определений фракций
rg -l "faction:" Resources/Prototypes/

# Поиск компонента NpcFactionMember
ast-grep --pattern 'type: NpcFactionMember'

# Поиск упоминаний Xeno
rg -i "xeno" Resources/Prototypes/

Length of output: 67307


Script:

#!/bin/bash
# Поиск определений фракции Xeno
rg -A 5 "faction:\s*-\s*Xeno" Resources/Prototypes/_Backmen/ai_factions.yml

# Поиск компонента NpcFactionMember с фракцией Xeno
rg -A 5 "type: NpcFactionMember" Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml

Length of output: 394

Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/mutants.yml (3)

Line range hint 197-204: LGTM: Компоненты движения и зрения

Компоненты MovementAlwaysTouching, PsionicInvisibleContacts и NightVision корректно настроены и соответствуют концепции существа.


129-130: Проверьте баланс задержки коконирования

Значение cocoonDelay: 8 может быть слишком малым для игрового баланса. Рекомендуется провести тестирование с разными значениями задержки.

✅ Verification successful

Based on the search results, I can now provide a final response since I found the default cocoon delay value in the codebase:

Значение задержки коконирования соответствует балансу

Значение cocoonDelay: 8 находится в допустимых пределах, так как:

  • Стандартное значение в базовом компоненте CocoonerComponent составляет 12 секунд
  • Для оглушенных целей применяется дополнительный множитель cocoonKnockdownMultiplier: 0.5, что уменьшает задержку
  • Уменьшенная задержка в 8 секунд для этого конкретного мутанта является частью его уникального баланса
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск других сущностей с компонентом Cocooner для сравнения задержек
ast-grep --pattern 'type: Cocooner
    cocoonDelay: $_'

Length of output: 57


Script:

#!/bin/bash
# Search for files containing "cocoonDelay" or "Cocooner"
rg -i "cocoonDelay|Cocooner" -A 3 -B 3

Length of output: 9981


Script:

#!/bin/bash
# Search for any YAML files containing spider or cocoon related configurations
fd -e yml -e yaml . | xargs rg -i "spider|cocoon|web" -A 3 -B 3

Length of output: 56216


Script:

#!/bin/bash
# Look for any balance-related configuration files
fd "balance|config" -e yml -e yaml | xargs cat

Length of output: 12928


Line range hint 147-150: Требуется уточнение механики кровососания

Компонент BloodSucker имеет несколько потенциальных проблем:

  • Большое значение unitsToSucc: 35
  • Инъекция Cryptobiolin может быть слишком сильной

@CrimeMoot
Copy link
Contributor

А как работает спонсор traits, типа только у спонсоров может быть? В дальнейшем можно будет свои трейты такие добавлять?

@github-actions github-actions bot added the Changes: Sprites Should be reviewed or fixed by people who are knowledgeable with spriting or visual design. label Dec 1, 2024
Copy link
Contributor

github-actions bot commented Dec 1, 2024

RSI Diff Bot; head commit 463b8f3 merging into 2f0bf92
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/Backmen/Changeling/bone_shard.rsi

State Old New Status
festive Added

Edit: diff updated after 463b8f3

@KayzelW
Copy link
Collaborator Author

KayzelW commented Dec 1, 2024

А как работает спонсор traits, типа только у спонсоров может быть? В дальнейшем можно будет свои трейты такие добавлять?

  1. Их могут выбрать себе только спонсоры. Для остальных они серые.
  2. Да, можно.

@CrimeMoot
Copy link
Contributor

CrimeMoot commented Dec 1, 2024

Их могут выбрать себе только спонсоры. Для остальных они серые.
Да, можно.

А когда будут порт трейтов с ЕЕ? Именно менюшка и сами трейты. И будут-ли они так же по спонсорку.

@KayzelW
Copy link
Collaborator Author

KayzelW commented Dec 1, 2024

Их могут выбрать себе только спонсоры. Для остальных они серые.
Да, можно.

А когда будут порт трейтов с ЕЕ? Именно менюшка и сами трейты.

когда будет нужда или кому-то будет нечем заняться

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (1)
Resources/Textures/Backmen/Changeling/bone_shard.rsi/meta.json (1)

4-4: Обновите ссылку на источник

Рекомендуется использовать полный URL репозитория вместо сокращённой ссылки на GitHub пользователя.

-    "copyright": "https://github.com/RealFakeSoof with references from deltanedas (github)",
+    "copyright": "https://github.com/RealFakeSoof/repository-name with references from https://github.com/deltanedas",
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 212be03 and 9ef8b1c.

⛔ Files ignored due to path filters (1)
  • Resources/Textures/Backmen/Changeling/bone_shard.rsi/festive.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • Resources/Textures/Backmen/Changeling/bone_shard.rsi/meta.json (1 hunks)
🔇 Additional comments (2)
Resources/Textures/Backmen/Changeling/bone_shard.rsi/meta.json (2)

2-8: LGTM: Корректная структура метаданных

Метаданные файла корректно определены с указанием версии, лицензии, авторских прав и размеров текстуры.


9-16: Проверьте интеграцию нового состояния "festive"

Добавление состояния "festive" предполагает наличие соответствующих праздничных/сезонных механик. Убедитесь, что:

  • Текстура для состояния "festive" присутствует в .rsi директории
  • Состояние корректно обрабатывается в коде игры

@CrimeMoot
Copy link
Contributor

@KayzelW а как разблокировать для спонсора? С внешностью понятно. Надо написать marking в json. А с трейтами.

@KayzelW
Copy link
Collaborator Author

KayzelW commented Dec 1, 2024

@KayzelW а как разблокировать для спонсора? С внешностью понятно. Надо написать marking в json. А с трейтами.

туда же

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (2)
Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs (1)

598-607: Реализована логика блокировки спонсорских черт характера.

Корректная реализация проверки доступности черт характера для спонсоров:

  • Проверяется флаг SponsorOnly
  • Для неспонсоров черта отключается
  • Добавляется визуальная индикация (серый цвет)
  • Добавляется пометка "sponsor-only"

Рекомендуется добавить всплывающую подсказку (tooltip) с объяснением, почему черта недоступна.

Предлагаю добавить tooltip:

 selector.Checkbox.Label.FontColorOverride = Color.Gray;
 selector.Checkbox.Disabled = true;
 selector.Checkbox.Pressed = false;
 selector.Checkbox.Label.Text += $" ({Loc.GetString("sponsor-only")})";
+selector.Checkbox.TooltipText = Loc.GetString("trait-sponsor-only-tooltip");
Resources/Locale/ru-RU/backmen/trait/Specific.ftl (1)

14-14: Предлагаю уточнить сообщение о спонсорских функциях

Текущий перевод понятен, но можно сделать его более информативным.

Предлагаю следующий вариант:

-sponsor-only = Только для спонсоров
+sponsor-only = Доступно только для спонсоров проекта
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 9ef8b1c and 463b8f3.

📒 Files selected for processing (3)
  • Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs (5 hunks)
  • Resources/Locale/ru-RU/backmen/trait/Specific.ftl (1 hunks)
  • Resources/Prototypes/_Backmen/Traits/specific.yml (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • Resources/Prototypes/_Backmen/Traits/specific.yml
🔇 Additional comments (5)
Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs (2)

12-13: Добавлены новые зависимости для работы со спонсорскими функциями.

Корректное добавление необходимых интерфейсов для работы с системой спонсоров.


55-55: Добавлено поле и параметр конструктора для менеджера спонсоров.

Правильная инициализация зависимости ISharedSponsorsManager через конструктор с сохранением в приватное поле.

Also applies to: 120-121, 131-131

Resources/Locale/ru-RU/backmen/trait/Specific.ftl (3)

2-3: Перевод OwO акцента корректен!

Перевод точно передает суть трейта и использует понятную игрокам терминологию.


5-12: Корректный перевод уровней гигантизма!

Переводы всех трёх уровней гигантизма выполнены последовательно и понятно. Формулировки точно описывают механику увеличения размера персонажа.


1-14: Структура файла соответствует стандартам!

Файл корректно структурирован, использует правильную кодировку и имеет хорошее форматирование для удобства чтения и поддержки.

@CrimeMoot
Copy link
Contributor

туда же

Я понял что туда же. но что писать-то надо?

@KayzelW
Copy link
Collaborator Author

KayzelW commented Dec 1, 2024

туда же

Я понял что туда же. но что писать-то надо?

В тот же список, что и всё остальное.
Оно просто смотрит по наличию прототипа в списке(который описан на сервере).

@KayzelW KayzelW merged commit 085e288 into master Dec 1, 2024
15 checks passed
@PuroSlavKing
Copy link
Contributor

In the name of the father, the son and the self merge. Amen.

@KayzelW KayzelW deleted the WTF branch January 12, 2025 14:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: Localization Can be reviewed or fixed by people who are knowledgeable with translation Changes: Sprites Should be reviewed or fixed by people who are knowledgeable with spriting or visual design. Changes: UI Can be reviewed or fixed by people who are knowledgeable with UI design Feature Я хочу добавить что-то новое. Fix Я хочу исправить то что работает не так. S: Untriaged size/XL
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants