Skip to content

[TWEAK] Возвращение возможностей ЕМАГ, переработка взломщика доступов#2645

Open
JackTalentedCoder wants to merge 6 commits intoAdventureTimeSS14:masterfrom
JackTalentedCoder:EMAGrevertfromQWERTY
Open

[TWEAK] Возвращение возможностей ЕМАГ, переработка взломщика доступов#2645
JackTalentedCoder wants to merge 6 commits intoAdventureTimeSS14:masterfrom
JackTalentedCoder:EMAGrevertfromQWERTY

Conversation

@JackTalentedCoder
Copy link
Collaborator

@JackTalentedCoder JackTalentedCoder commented Mar 19, 2026

Описание PR

Я вернул все приколы ЕМАГа, но взамен прибавил к цене. Также переработал взломщик доступов, переименовав его в "Криптографический модулятор". Отныне этот предмет имеет функции ЕМАГА без взлома доступов.

Почему / Баланс

Код не изменён. В прототип с айди EmagUnlimited (Тоесть, в базу для самого емага) была добавлена обратно строчка, означающая то, что она может хакать всё что угодно. Также были закоменшены все остальные упоминания AccessBreaker. Был по его подобию создан другой прототип с айди ADTEhack, который имел функции ЕМАГа в прошлом.

  • Изменения были протестированы на локальном сервере, и всё работает отлично.
  • PR закончен и требует просмотра изменений.

Медиа

dotnet_ZPejhHVDoQ

Чейнджлог

🆑 TheQWERTY

  • add: Взломщик доступов был заменён на дешёвую версию ЕМАГа - Криптографический модулятор. Имеет всё то же самое, но не взламывает доступы.
  • tweak: Отныне Криптографический секвенсер (ЕМАГ) возвратил возможность взламывать шлюзы, но из-за этого его цена повышена.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 19, 2026

Walkthrough

Добавлены новые сущности EHACK (криптографический модулятор) с двумя вариантами — неограниченной и ограниченной версией с автоперезарядкой. Добавлены русские локализации для новых инструментов в каталоге и описаниях сущностей. Устаревший инструмент AccessBreaker отключен в прототипах. Модули бургов обновлены для использования EMAG вместо AccessBreaker. Цены EMAG в каталоге апликса увеличены (с 3 на 7 телекристаллов), а AccessBreaker отключен. Набор инструментов вора обновлен с удалением AccessBreaker.

Possibly related PRs

Suggested labels

Status: Needs Review

Suggested reviewers

  • Unlumy
  • Red-Lis
  • jungarikjan
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed Заголовок PR полностью отражает основные изменения: возвращение возможностей ЕМАГ и переработка взломщика доступов.
Description check ✅ Passed Описание PR связано с изменениями, содержит обоснование, техническую информацию о прототипах и чейнджлог.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

CodeRabbit can use OpenGrep to find security vulnerabilities and bugs across 17+ programming languages.

OpenGrep is compatible with Semgrep configurations. Add an opengrep.yml or semgrep.yml configuration file to your project to enable OpenGrep analysis.

.desc = { ent-BaseBorgModule.desc }
ent-BorgModuleOperative = оперативный модуль киборга
.desc = Модуль, в который входят монтировка,"Емаг", взломщик доступа и пинпоинтер Синдиката.
.desc = Модуль, в который входят монтировка,"Емаг", EMAG и пинпоинтер Синдиката.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Входят монтировка, "Емаг", EMAG
Зачем об одном два раза-то?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Изменено

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: 7

♻️ Duplicate comments (1)
Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml (1)

1285-1285: ⚠️ Potential issue | 🟡 Minor

Уберите дублирование EMAG в описании.

На Line 1285 один и тот же предмет указан дважды: an Emag, an EMAG.

Предлагаемая правка
-  description: A module that comes with a crowbar, an Emag, an EMAG and a syndicate pinpointer.
+  description: A module that comes with a crowbar, an EMAG and a syndicate pinpointer.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml` at
line 1285, The description string for the 'description' key currently lists the
same item twice ("an Emag, an EMAG"); edit the value in borg_modules.yml to
remove the duplicate and normalize casing so the module lists the emag only once
(e.g., "A module that comes with a crowbar, an EMAG and a syndicate
pinpointer."). Locate the description field containing "A module that comes with
a crowbar, an Emag, an EMAG and a syndicate pinpointer" and replace it with a
single, consistently-cased mention of the emag.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/robotics/borg_modules.ftl`:
- Line 90: The description string assigned to .desc contains missing whitespace
after a comma ("монтировка,Емаг"); update the .desc value so there is a space
after the comma before «Емаг» (i.e., "монтировка, Емаг и пинпоинтер Синдиката")
to correct punctuation; edit the .desc entry in borg_modules.ftl accordingly.
- Line 105: Строка с ключом ent-XenoborgModuleAccessBreaker использует
несоответствующую форму «секвенсером» — приведи термин в соответствие с
проектной EMAG-локалью, заменив «секвенсером» на унифицированную форму
«секвенсором» в значении строки (обнови значение после равно, оставив остальной
текст без изменений).

In `@Resources/Prototypes/ADT/Catalog/uplink_catalog.yml`:
- Around line 976-978: Добавьте английские локализованные строки для записи с id
UplinkEhack: создайте в en-US локализации соответствующие ключи
uplink-ehack-name и uplink-ehack-desc (те же ключи, что в ru-RU), и заполните их
человекочитаемыми английскими значениями в файле локализации для ADT prototypes
Catalog/store uplink-catalog (English locale).

In `@Resources/Prototypes/Catalog/uplink_catalog.yml`:
- Around line 958-970: Wrap the disabled listing block that starts with the
ADT-Tweak comment for UplinkAccessBreaker in the standard start/end markers:
insert a comment line "# ADT-Tweak-Start" immediately before the "# ADT-Tweak:
..." line and a comment line "# ADT-Tweak-End" immediately after the closing of
that YAML block so the entire UplinkAccessBreaker listing is enclosed; keep the
existing inline comments and indentation intact and ensure both markers use the
exact text "ADT-Tweak-Start" and "ADT-Tweak-End".

In `@Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml`:
- Line 1499: The English article in the description field is incorrect: change
the string "Module with a EMAG." to "Module with an EMAG." in the
borg_modules.yml entry where the description key contains that value (search for
the description key with "Module with a EMAG." and replace the leading article
"a" with "an").
- Line 1285: The changed YAML description line "description: A module that comes
with a crowbar, an Emag, an EMAG and a syndicate pinpointer." (and the other
modified entries around the same item referenced by the subsequent changes) are
outside the /ADT/ folder and thus must be annotated with an ADT-Tweak comment;
update those modified lines to include the ADT-Tweak marker/comment format used
across the repo (add the ADT-Tweak comment immediately above or inline with the
changed key(s) for the module entry), and do the same for the other two modified
lines referenced (the two other changed entries near the same module) so every
non-/ADT/ change is accompanied by an ADT-Tweak comment.

In `@Resources/Prototypes/Entities/Objects/Tools/access_breaker.yml`:
- Around line 1-26: The commented prototype block for AccessBreakerUnlimited and
AccessBreaker is missing the required ADT-Tweak boundary markers; wrap the
entire multi-line commented section (the lines that define
AccessBreakerUnlimited and AccessBreaker) with a `# ADT-Tweak-Start` comment
above and a `# ADT-Tweak-End` comment below so the tweak is treated as a single
ADT-Tweak block during merges; keep the existing comments and content intact but
add the start/end markers around the whole commented YAML section (references:
AccessBreakerUnlimited, AccessBreaker).

---

Duplicate comments:
In `@Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml`:
- Line 1285: The description string for the 'description' key currently lists
the same item twice ("an Emag, an EMAG"); edit the value in borg_modules.yml to
remove the duplicate and normalize casing so the module lists the emag only once
(e.g., "A module that comes with a crowbar, an EMAG and a syndicate
pinpointer."). Locate the description field containing "A module that comes with
a crowbar, an Emag, an EMAG and a syndicate pinpointer" and replace it with a
single, consistently-cased mention of the emag.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: b023197b-081e-4323-a90c-02f8201676cd

📥 Commits

Reviewing files that changed from the base of the PR and between 55e3e56 and 6e9270d.

📒 Files selected for processing (11)
  • Resources/Locale/ru-RU/ADT/Objects/Tools/emag.ftl
  • Resources/Locale/ru-RU/ADT/prototypes/Catalog/store/uplink-catalog.ftl
  • Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/robotics/borg_modules.ftl
  • Resources/Prototypes/ADT/Catalog/uplink_catalog.yml
  • Resources/Prototypes/ADT/Entities/Objects/Tools/e_modular.yml
  • Resources/Prototypes/Catalog/thief_toolbox_sets.yml
  • Resources/Prototypes/Catalog/uplink_catalog.yml
  • Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml
  • Resources/Prototypes/Entities/Objects/Tools/access_breaker.yml
  • Resources/Prototypes/Entities/Objects/Tools/emag.yml
  • Resources/ServerInfo/Guidebook/Engineering/AccessConfigurator.xml

.desc = { ent-BaseBorgModule.desc }
ent-BorgModuleOperative = оперативный модуль киборга
.desc = Модуль, в который входят монтировка,"Емаг", взломщик доступа и пинпоинтер Синдиката.
.desc = Модуль, в который входят монтировка,"Емаг" и пинпоинтер Синдиката.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Исправьте пунктуацию в описании модуля.

На Line 90 пропущен пробел после запятой перед «Емаг».

Предлагаемая правка
-    .desc = Модуль, в который входят монтировка,"Емаг" и пинпоинтер Синдиката.
+    .desc = Модуль, в который входят монтировка, "Емаг" и пинпоинтер Синдиката.

As per coding guidelines "**/*.ftl: ... делай акцент только на орфографии. И ищи ошибки в текстах или словах и всё".

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.desc = Модуль, в который входят монтировка,"Емаг" и пинпоинтер Синдиката.
.desc = Модуль, в который входят монтировка, "Емаг" и пинпоинтер Синдиката.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/robotics/borg_modules.ftl`
at line 90, The description string assigned to .desc contains missing whitespace
after a comma ("монтировка,Емаг"); update the .desc value so there is a space
after the comma before «Емаг» (i.e., "монтировка, Емаг и пинпоинтер Синдиката")
to correct punctuation; edit the .desc entry in borg_modules.ftl accordingly.

ent-XenoborgModuleTool = инструментальный модуль ксеноборга
.desc = Простые инструменты для большинства ксеноборгов.
ent-XenoborgModuleAccessBreaker = модуль ксеноборга с взломщиком доступа
ent-XenoborgModuleAccessBreaker = модуль ксеноборга с криптографическим секвенсером
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Унифицируйте написание термина «секвенсор».

На Line 105 используется форма «секвенсером», тогда как в EMAG-локали проекта используется «секвенсор/секвенсором».

Предлагаемая правка
-ent-XenoborgModuleAccessBreaker = модуль ксеноборга с криптографическим секвенсером
+ent-XenoborgModuleAccessBreaker = модуль ксеноборга с криптографическим секвенсором

As per coding guidelines "**/*.ftl: ... делай акцент только на орфографии. И ищи ошибки в текстах или словах и всё".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/robotics/borg_modules.ftl`
at line 105, Строка с ключом ent-XenoborgModuleAccessBreaker использует
несоответствующую форму «секвенсером» — приведи термин в соответствие с
проектной EMAG-локалью, заменив «секвенсером» на унифицированную форму
«секвенсором» в значении строки (обнови значение после равно, оставив остальной
текст без изменений).

Comment on lines +976 to +978
id: UplinkEhack
name: uplink-ehack-name
description: uplink-ehack-desc
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
rg -n '^(uplink-ehack-name|uplink-ehack-desc)\s*=' Resources/Locale

Repository: AdventureTimeSS14/space_station_ADT

Length of output: 425


Добавьте en-US локаль для uplink-ehack-*.

Ключи uplink-ehack-name и uplink-ehack-desc добавлены только в Resources/Locale/ru-RU/ADT/prototypes/Catalog/store/uplink-catalog.ftl, но отсутствуют в English локализации. Без них клиенты на английском языке увидят сырые ключи в магазине. Добавьте соответствующие строки в Resources/Locale/en-US/ADT/prototypes/Catalog/store/uplink-catalog.ftl.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/ADT/Catalog/uplink_catalog.yml` around lines 976 - 978,
Добавьте английские локализованные строки для записи с id UplinkEhack: создайте
в en-US локализации соответствующие ключи uplink-ehack-name и uplink-ehack-desc
(те же ключи, что в ru-RU), и заполните их человекочитаемыми английскими
значениями в файле локализации для ADT prototypes Catalog/store uplink-catalog
(English locale).

Comment on lines +958 to +970
# ADT-Tweak: Вместо взламывателя доступов - криптографический модулятор
# - type: listing
# id: UplinkAccessBreaker
# name: uplink-access-breaker-name
# description: uplink-access-breaker-desc
# productEntity: AccessBreaker
# discountCategory: rareDiscounts
# discountDownTo:
# Telecrystal: 2
# cost:
# Telecrystal: 4
# categories:
# - UplinkDisruption
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Оберните этот отключённый листинг в ADT-Tweak-Start/End.

Для многострочного изменения вне /ADT/ одного # ADT-Tweak: перед блоком недостаточно. Тут нужен стандартный start/end-маркер, чтобы изменение не потерялось при подтягивании апстрима.

💡 Пример оформления
-# ADT-Tweak: Вместо взламывателя доступов - криптографический модулятор
+# ADT-Tweak-Start
+# Вместо взламывателя доступов - криптографический модулятор
 # - type: listing
 #   id: UplinkAccessBreaker
 #   name: uplink-access-breaker-name
 #   description: uplink-access-breaker-desc
 #   productEntity: AccessBreaker
 #   discountCategory: rareDiscounts
 #   discountDownTo:
 #     Telecrystal: 2
 #   cost:
 #     Telecrystal: 4
 #   categories:
 #   - UplinkDisruption
+# ADT-Tweak-End
As per coding guidelines: `**/*.yml`: Все изменения вне папок `/ADT/` должны быть прокомментированы примерно так `# ADT-Tweak-Start` / `# ADT-Tweak-End`.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# ADT-Tweak: Вместо взламывателя доступов - криптографический модулятор
# - type: listing
# id: UplinkAccessBreaker
# name: uplink-access-breaker-name
# description: uplink-access-breaker-desc
# productEntity: AccessBreaker
# discountCategory: rareDiscounts
# discountDownTo:
# Telecrystal: 2
# cost:
# Telecrystal: 4
# categories:
# - UplinkDisruption
# ADT-Tweak-Start
# Вместо взламывателя доступов - криптографический модулятор
# - type: listing
# id: UplinkAccessBreaker
# name: uplink-access-breaker-name
# description: uplink-access-breaker-desc
# productEntity: AccessBreaker
# discountCategory: rareDiscounts
# discountDownTo:
# Telecrystal: 2
# cost:
# Telecrystal: 4
# categories:
# - UplinkDisruption
# ADT-Tweak-End
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/Catalog/uplink_catalog.yml` around lines 958 - 970, Wrap
the disabled listing block that starts with the ADT-Tweak comment for
UplinkAccessBreaker in the standard start/end markers: insert a comment line "#
ADT-Tweak-Start" immediately before the "# ADT-Tweak: ..." line and a comment
line "# ADT-Tweak-End" immediately after the closing of that YAML block so the
entire UplinkAccessBreaker listing is enclosed; keep the existing inline
comments and indentation intact and ensure both markers use the exact text
"ADT-Tweak-Start" and "ADT-Tweak-End".

id: BorgModuleOperative
name: operative cyborg module
description: A module that comes with a crowbar, an Emag, an Access Breaker and a syndicate pinpointer.
description: A module that comes with a crowbar, an Emag, an EMAG and a syndicate pinpointer.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Добавьте ADT-Tweak маркировку к изменённым строкам вне /ADT/.

На Line 1285 и Line 1498-1499 изменения внесены без ADT-Tweak-комментариев, хотя файл находится вне /ADT/.

Пример минимальной правки
+  # ADT-Tweak: updated operative module description after AccessBreaker removal
   description: A module that comes with a crowbar, an Emag, an EMAG and a syndicate pinpointer.
...
+  # ADT-Tweak: switched Xenoborg access breaker module text to EMAG
   name: EMAG xenoborg module
   description: Module with a EMAG.

As per coding guidelines "**/*.yml: Все изменения вне папок /ADT/ должны быть прокомментированы ...".

Also applies to: 1498-1499

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml` at
line 1285, The changed YAML description line "description: A module that comes
with a crowbar, an Emag, an EMAG and a syndicate pinpointer." (and the other
modified entries around the same item referenced by the subsequent changes) are
outside the /ADT/ folder and thus must be annotated with an ADT-Tweak comment;
update those modified lines to include the ADT-Tweak marker/comment format used
across the repo (add the ADT-Tweak comment immediately above or inline with the
changed key(s) for the module entry), and do the same for the other two modified
lines referenced (the two other changed entries near the same module) so every
non-/ADT/ change is accompanied by an ADT-Tweak comment.

name: access breaker xenoborg module
description: Module with a access breaker.
name: EMAG xenoborg module
description: Module with a EMAG.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Исправьте артикль в английском описании.

На Line 1499 должно быть an EMAG, а не a EMAG.

Предлагаемая правка
-  description: Module with a EMAG.
+  description: Module with an EMAG.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
description: Module with a EMAG.
description: Module with an EMAG.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml` at
line 1499, The English article in the description field is incorrect: change the
string "Module with a EMAG." to "Module with an EMAG." in the borg_modules.yml
entry where the description key contains that value (search for the description
key with "Module with a EMAG." and replace the leading article "a" with "an").

Comment on lines +1 to +26
# ADT-Tweak - Удалён нахуй взломщик доступов. За место него кое что другое
# - type: entity
# parent: [BaseItem, BaseSyndicateContraband]
# id: AccessBreakerUnlimited
# suffix: Unlimited
# name: authentication disruptor
# description: A hacked access configurator, specialized to unlock and erase access from digital locks.
# components:
# - type: Emag
# emagImmuneTag: AccessBreakerImmune
# emagType: Access
# - type: Sprite
# sprite: Objects/Tools/access_breaker.rsi
# state: icon
# - type: Item
# sprite: Objects/Tools/access_breaker.rsi

- type: entity
parent: AccessBreakerUnlimited
id: AccessBreaker
suffix: Limited
components:
- type: LimitedCharges
- type: AutoRecharge
- type: StaticPrice
price: 2000
# - type: entity
# parent: AccessBreakerUnlimited
# id: AccessBreaker
# suffix: Limited
# components:
# - type: LimitedCharges
# - type: AutoRecharge
# - type: StaticPrice
# price: 2000
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Оформите этот закомментированный прототип как полноценный ADT-Tweak-блок.

Сейчас это многострочное изменение вне /ADT/, но помечена только первая строка. Для таких отключений здесь нужны # ADT-Tweak-Start / # ADT-Tweak-End, иначе границы правки теряются при апстрим-мержах.

As per coding guidelines: **/*.yml: Все изменения вне папок /ADT/ должны быть прокомментированы примерно так # ADT-Tweak-Start / # ADT-Tweak-End.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/Entities/Objects/Tools/access_breaker.yml` around lines
1 - 26, The commented prototype block for AccessBreakerUnlimited and
AccessBreaker is missing the required ADT-Tweak boundary markers; wrap the
entire multi-line commented section (the lines that define
AccessBreakerUnlimited and AccessBreaker) with a `# ADT-Tweak-Start` comment
above and a `# ADT-Tweak-End` comment below so the tweak is treated as a single
ADT-Tweak block during merges; keep the existing comments and content intact but
add the start/end markers around the whole commented YAML section (references:
AccessBreakerUnlimited, AccessBreaker).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Changes: Localization Изменение локализации Changes: No C# size/M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants