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

[Feature] Lathe Arbitrage Integration Test #997

Merged
merged 4 commits into from
Jan 9, 2025
Merged

Conversation

Roudenn
Copy link
Collaborator

@Roudenn Roudenn commented Jan 9, 2025

Описание PR

Добавлен тест на проверку стоимости всех рецептов из автолатов.
Если какой-либо рецепт в результате даёт больше чем материалы необходимые для него, то тест проваливается и выдаёт ошибку!

🆑 Evil Lathe Fixer

  • fix: Все рецепты, которые давали возможность зарабатывать в Карго, были исправлены.

Summary by CodeRabbit

  • Тесты

    • Добавлен новый тест для проверки цен на рецепты токарного станка, исключающий возможность арбитража.
  • Новые возможности

    • Введено свойство IgnoreArbitrage для материалов.
    • Добавлена возможность исключать определенные материалы из проверок цен.
  • Изменения в конфигурации

    • Установлено свойство ignoreArbitrage: true для нескольких материалов, включая кредиты, биомассу, руды и другие специальные материалы.
    • Изменены требования к материалам для рецептов, увеличив количество необходимых ресурсов для некоторых предметов, таких как WeaponLaserPistol и WeaponXrayCannon.
    • Изменены цены на некоторые электронные устройства, включая HolofanProjector и TelescopicShield, улучшая баланс в игре.

Эти изменения направлены на улучшение системы ценообразования в игре и обеспечение экономической сбалансированности.

@Roudenn Roudenn requested a review from Rxup as a code owner January 9, 2025 10:05
Copy link
Contributor

coderabbitai bot commented Jan 9, 2025

Обзор изменений

Walkthrough

В этом обновлении добавлен новый тестовый класс для проверки стоимости рецептов токарного станка и введено новое свойство IgnoreArbitrage для материалов. Изменения направлены на улучшение системы ценообразования в игре, позволяя исключать определенные материалы из арбитражных проверок. Модификации коснулись тестов, прототипов материалов и конфигурационных файлов.

Changes

Файл Изменения
Content.IntegrationTests/Tests/Backmen/Lathe/LatheRecipyCostTest.cs Добавлен новый тестовый класс LatheRecipyCostTest с методом LatheRecipesNoArbitrageTest для проверки цен рецептов
Content.Shared/Materials/MaterialPrototype.cs Введено новое свойство IgnoreArbitrage типа bool
Resources/Prototypes/Entities/Objects/Misc/space_cash.yml Добавлено свойство ignoreArbitrage: true для материала Credit
Resources/Prototypes/Reagents/Materials/materials.yml Добавлено свойство ignoreArbitrage: true для материалов: Биомасса, Картон, Бумага, Меатериал
Resources/Prototypes/Reagents/Materials/ores.yml Добавлено свойство ignoreArbitrage: true для руд: Железо, Кварц, Золото и др.
Resources/Prototypes/_Backmen/Reagents/Materials/prizeticket.yml Добавлено свойство ignoreArbitrage: true для материала PrizeTicket
Resources/Prototypes/Recipes/Lathes/medical.yml Изменено количество Plastic в рецепте ClothingMaskSterile с 50 на 100; удален базовый прототип BaseSurgicalRecipe
Resources/Prototypes/Recipes/Lathes/security.yml Изменены требования к материалам для рецептов WeaponLaserPistol и WeaponXrayCannon
Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml Изменена цена для ComputerMassMediaCircuitboard с 150 на 100; обновлены родительские классы для нескольких плат
Resources/Prototypes/Entities/Objects/Devices/Circuitboards/misc.yml Удален компонент StaticPrice для StationMapCircuitboard
Resources/Prototypes/Entities/Objects/Devices/Electronics/door.yml Удален компонент StaticPrice для DoorElectronics
Resources/Prototypes/Entities/Objects/Devices/Electronics/firelock.yml Удален компонент StaticPrice для FirelockElectronics
Resources/Prototypes/Entities/Objects/Devices/Electronics/misc.yml Удален компонент StaticPrice для FreezerElectronics
Resources/Prototypes/Entities/Objects/Devices/Electronics/timer.yml Удален компонент StaticPrice для SignalTimerElectronics
Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml Изменена цена для HolofanProjector с 80 на 60; добавлена цена для HoloprojectorSecurity 50
Resources/Prototypes/Entities/Objects/Shields/shields.yml Изменена цена для TelescopicShield с 250 на 170
Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml Добавлены компоненты StaticPrice с ценами для нескольких видов оружия
Resources/Prototypes/_Backmen/Entities/Objects/Devices/Circuitboards/computer.yml Изменена цена для ShipyardComputerCircuitboard с 750 на 150
Resources/Prototypes/_Backmen/Entities/Objects/Weapons/Guns/Energy/energy.yml Добавлен компонент StaticPrice с ценой 250 для EarthGov laser pistol
Resources/Prototypes/Entities/Objects/Devices/Electronics/base_electronics.yml Изменена цена для BaseElectronics с 100 на 45
Resources/Prototypes/Recipes/Lathes/electronics.yml Изменено количество Steel в BaseCheapElectronicsRecipe с 50 на 100

Sequence Diagram

sequenceDiagram
    participant Test as LatheRecipyCostTest
    participant PricingSystem as Система ценообразования
    participant MaterialPrototype as Прототип материала

    Test->>PricingSystem: Получить список рецептов
    PricingSystem-->>Test: Список рецептов
    Test->>MaterialPrototype: Проверить свойство IgnoreArbitrage
    MaterialPrototype-->>Test: Статус игнорирования
    Test->>Test: Вычислить стоимость материалов
    Test->>Test: Проверить арбитраж
Loading

Poem

🐰 В мире кода, где цены танцуют,
Токарный станок рецепты врачует.
Материалы хитро проверяет тест,
Арбитраж не пройдет - таков наш квест!
Кролик-программист доволен вполне! 🛠️


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f6bd1e4 and 701e224.

📒 Files selected for processing (1)
  • Resources/Prototypes/Recipes/Lathes/electronics.yml (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • Resources/Prototypes/Recipes/Lathes/electronics.yml

Finishing Touches

  • 📝 Generate Docstrings

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 generate docstrings to generate docstrings for this PR. (Beta)
  • @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.

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

🧹 Nitpick comments (5)
Content.IntegrationTests/Tests/Backmen/Lathe/LatheRecipyCostTest.cs (3)

10-10: Рекомендуется документировать константу Tolerance

Добавьте комментарий, объясняющий выбор значения допуска 10 и его единицы измерения (кредиты).

-    private const double Tolerance = 10;
+    /// <summary>
+    /// Допустимая разница между стоимостью материалов и результата (в кредитах)
+    /// </summary>
+    private const double Tolerance = 10;

24-52: Оптимизировать обработку рецептов

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

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

  1. Вынести логику проверки рецепта в отдельный метод
  2. Использовать LINQ для более чистого кода
  3. Добавить параллельную обработку для больших наборов рецептов
- await server.WaitAssertion(() =>
- {
-     var recipes = proto.EnumeratePrototypes<LatheRecipePrototype>();
-     foreach (var recipe in recipes)
-     {
-         // ... current implementation
-     }
- });
+ var recipes = proto.EnumeratePrototypes<LatheRecipePrototype>();
+ await server.WaitAssertion(() =>
+ {
+     fails.AddRange(
+         recipes.AsParallel()
+         .Select(recipe => ValidateRecipe(recipe, proto, priceSystem))
+         .Where(result => result != null)
+     );
+ });

56-57: Улучшить сообщение об ошибке

Текущее сообщение об ошибке можно сделать более информативным.

- var msg = string.Join("\n", fails) + "\n" + "Following RecipePrototypes are giving Arbitrage when printed!";
+ var msg = $"Обнаружены рецепты с возможностью арбитража ({fails.Count}):\n" +
+          string.Join("\n", fails) + "\n" +
+          "Убедитесь, что стоимость результата не превышает стоимость материалов.";
Content.Shared/Materials/MaterialPrototype.cs (1)

60-65: Улучшить документацию свойства IgnoreArbitrage

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

     /// <summary>
-    /// Backmen Change: Setting this to true will make
-    /// this material be ignored in Price Tests.
+    /// Если установлено значение true, материал будет исключен из проверок арбитража цен.
+    /// Используется для материалов, которые не должны учитываться при расчете
+    /// стоимости рецептов (например, расходные материалы или специальные предметы).
     /// </summary>
     [DataField]
-    public bool IgnoreArbitrage;
+    public bool IgnoreArbitrage = false;
Resources/Prototypes/Entities/Objects/Misc/space_cash.yml (1)

56-56: Необходимо уточнить комментарий в коде

Добавление ignoreArbitrage: true для материала Credit логично, так как валюта не должна учитываться в расчетах арбитража при крафте. Однако комментарий "uhhhh no" вызывает сомнения в правильности этого решения.

Предлагаю:

  1. Удалить неясный комментарий "uhhhh no"
  2. Добавить более подробное объяснение, почему валюта исключается из проверок арбитража
-  ignoreArbitrage: true # lathe-test change # uhhhh no
+  ignoreArbitrage: true # Currency should be excluded from arbitrage calculations as it's not craftable
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 453fd7f and 5a6fa5c.

📒 Files selected for processing (6)
  • Content.IntegrationTests/Tests/Backmen/Lathe/LatheRecipyCostTest.cs (1 hunks)
  • Content.Shared/Materials/MaterialPrototype.cs (1 hunks)
  • Resources/Prototypes/Entities/Objects/Misc/space_cash.yml (1 hunks)
  • Resources/Prototypes/Reagents/Materials/materials.yml (3 hunks)
  • Resources/Prototypes/Reagents/Materials/ores.yml (9 hunks)
  • Resources/Prototypes/_Backmen/Reagents/Materials/prizeticket.yml (1 hunks)
⏰ Context from checks skipped due to timeout of 300000ms (4)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: Test Packaging
  • GitHub Check: YAML Linter
  • GitHub Check: build (ubuntu-latest)
🔇 Additional comments (3)
Resources/Prototypes/_Backmen/Reagents/Materials/prizeticket.yml (1)

7-7: Корректная конфигурация PrizeTicket

Настройка ignoreArbitrage для призового билета логична, так как этот предмет не должен участвовать в экономических расчетах.

Resources/Prototypes/Reagents/Materials/ores.yml (1)

8-8: Проверить влияние на игровую экономику

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

Предлагаю проверить все рецепты, использующие эти материалы:

Also applies to: 18-18, 28-28, 38-38, 48-48, 58-58, 68-68, 78-78, 88-88

Resources/Prototypes/Reagents/Materials/materials.yml (1)

9-9: Требуется согласованный подход к исключению материалов из проверок арбитража

Наблюдаются несогласованности в реализации:

  1. Для Biomass указана причина исключения
  2. Для Cardboard причина не указана
  3. Для Paper причина не указана

Учитывая низкую стоимость этих материалов (0.01-0.1), их исключение из проверок арбитража может быть оправдано, но требуется документация.

Рекомендации:

  1. Добавить единообразные комментарии с объяснением причин исключения
  2. Создать документацию с критериями для исключения материалов из проверок арбитража
  3. Проверить возможность эксплуатации через крафт с использованием этих материалов

Для проверки потенциальных эксплойтов выполните:

Also applies to: 18-18, 46-46

@github-actions github-actions bot added size/M and removed size/S labels Jan 9, 2025
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 comments (3)
Resources/Prototypes/Recipes/Lathes/medical.yml (1)

Необходимо сохранить материальные затраты для хирургических инструментов

При удалении BaseSurgicalRecipe следующие рецепты потеряют определение базовых материалов (Steel: 200):

  • Scalpel
  • Retractor
  • Cautery
  • Saw
  • Hemostat

Необходимо явно определить материальные затраты для каждого из этих рецептов.

🔗 Analysis chain

Line range hint 1-8: Проверьте влияние удаления базового прототипа

Удаление BaseSurgicalRecipe может повлиять на наследование рецептов хирургических инструментов. Убедитесь, что:

  • Все дочерние рецепты правильно обновлены
  • Базовые материалы (Steel: 200) корректно определены в каждом рецепте
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверка рецептов, которые могли использовать BaseSurgicalRecipe
rg -l "parent:\s*BaseSurgicalRecipe" Resources/Prototypes/Recipes/

Length of output: 116


Script:

#!/bin/bash
# Показать содержимое файла medical.yml
cat Resources/Prototypes/Recipes/Lathes/medical.yml

Length of output: 3822

Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml (2)

Line range hint 1200-1200: Отсутствует компонент StaticPrice для энергетического дробовика

Энергетический дробовик (WeaponEnergyShotgun) не имеет установленной цены, что может привести к проблемам с арбитражем. Необходимо добавить компонент StaticPrice.

Добавьте следующий компонент:

  - type: BatterySelfRecharger
    autoRecharge: true
    autoRechargeRate: 24
    autoRechargePause: true
    autoRechargePauseTime: 30
+ - type: StaticPrice
+   price: 150

Цена лазера бехонкера действительно завышена

Анализ характеристик оружия показывает, что цена в 750 кредитов неоправданно высока:

  • Большинство энергетического оружия стоит 100-500 кредитов
  • Характеристики оружия (скорострельность 1, затраты энергии 100) не выделяются на фоне более дешёвых аналогов
  • Базируется на BaseWeaponBatterySmall, как и более дешёвые варианты

Рекомендуется снизить цену до диапазона 300-500 кредитов.

🔗 Analysis chain

Line range hint 750-750: Проверьте обоснованность высокой цены для лазера бехонкера

Цена в 750 кредитов для WeaponBehonkerLaser кажется завышенной, учитывая его характеристики. Рекомендуется сравнить с ценами других самозаряжающихся лазеров.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск других самозаряжающихся лазеров
ast-grep --pattern 'type: BatterySelfRecharger
  $$$
  type: StaticPrice
    price: $_'

Length of output: 89


Script:

#!/bin/bash
# Search for self-recharging weapons and their prices
rg -A 5 "BatterySelfRecharger" Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/

# Also search for price definitions in battery weapons
rg "price: \d+" Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/

Length of output: 3472


Script:

#!/bin/bash
# Search for WeaponBehonkerLaser definition and surrounding context
rg -B 5 -A 15 "WeaponBehonkerLaser" Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/

Length of output: 2259

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5a6fa5c and 6c575f7.

📒 Files selected for processing (14)
  • Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml (1 hunks)
  • Resources/Prototypes/Entities/Objects/Devices/Circuitboards/misc.yml (1 hunks)
  • Resources/Prototypes/Entities/Objects/Devices/Electronics/door.yml (1 hunks)
  • Resources/Prototypes/Entities/Objects/Devices/Electronics/firelock.yml (1 hunks)
  • Resources/Prototypes/Entities/Objects/Devices/Electronics/misc.yml (1 hunks)
  • Resources/Prototypes/Entities/Objects/Devices/Electronics/timer.yml (1 hunks)
  • Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml (1 hunks)
  • Resources/Prototypes/Entities/Objects/Shields/shields.yml (1 hunks)
  • Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml (1 hunks)
  • Resources/Prototypes/Reagents/Materials/materials.yml (4 hunks)
  • Resources/Prototypes/Recipes/Lathes/medical.yml (1 hunks)
  • Resources/Prototypes/Recipes/Lathes/security.yml (2 hunks)
  • Resources/Prototypes/_Backmen/Entities/Objects/Devices/Circuitboards/computer.yml (1 hunks)
  • Resources/Prototypes/_Backmen/Entities/Objects/Weapons/Guns/Energy/energy.yml (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • Resources/Prototypes/Reagents/Materials/materials.yml
⏰ Context from checks skipped due to timeout of 300000ms (2)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: Test Packaging
🔇 Additional comments (15)
Resources/Prototypes/Recipes/Lathes/medical.yml (1)

104-104: Подтверждаю изменение стоимости ClothingMaskSterile

Увеличение требуемого количества пластика с 50 до 100 соответствует цели PR по предотвращению арбитража. Изменение делает рецепт менее прибыльным.

Resources/Prototypes/Recipes/Lathes/security.yml (3)

78-80: Увеличение стоимости материалов для WeaponLaserPistol

Значительное повышение требований к материалам поможет предотвратить возможность арбитража при крафте лазерного пистолета.


119-120: Корректировка стоимости WeaponXrayCannon

Увеличение количества золота и пластика в рецепте рентгеновской пушки эффективно предотвращает возможность получения прибыли от её создания.


78-80: Целевой подход к балансировке экономики

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

Also applies to: 119-120

✅ Verification successful

Изменения в рецептах соответствуют общей системе баланса

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

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Поиск других рецептов оружия, которые могут требовать балансировки

# Поиск всех рецептов оружия в категории Weapons
rg "category: Weapons" -B 2 -A 10

# Поиск рецептов, использующих ценные материалы (Gold, Uranium, Plasma)
rg "materials:(\n|.)*?(Gold|Uranium|Plasma):" -B 2 -A 5

Length of output: 4695


Script:

#!/bin/bash
# Поиск рецептов с ценными материалами с поддержкой многострочного поиска
rg -U "materials:(\s|\n)+.*(Gold|Uranium|Plasma|Silver):" -B 2 -A 5

# Поиск базовых рецептов для сравнения
rg "parent: BaseWeaponRecipe" -B 5 -A 5

Length of output: 17045

Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml (1)

Line range hint 260-260: Проверьте соотношение цены и характеристик DisablerSMG

Цена в 260 кредитов для DisablerSMG требует проверки баланса относительно других оглушающих видов оружия.

✅ Verification successful

Цена DisablerSMG в 260 кредитов является сбалансированной

Анализ показывает, что цена оправдана следующими характеристиками:

  • Высокий потенциальный урон в секунду благодаря автоматическому режиму стрельбы
  • Эффективное использование заряда батареи (33 на выстрел против 100-200 у аналогов)
  • Сбалансированные недостатки в виде большего размера и меньшего урона за выстрел
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск других оглушающих видов оружия для сравнения цен
rg "type: StaticPrice" -B 5 | rg -B 5 "Disabler|Taser"

Length of output: 56


Script:

#!/bin/bash
# Поиск файлов оружия
echo "=== Поиск файлов с оружием ==="
fd "\.yml$" Resources/Prototypes/Entities/Objects/Weapons/

# Поиск ценовых компонентов в файлах оружия
echo "=== Поиск цен оружия ==="
rg "StaticPrice|Price" Resources/Prototypes/Entities/Objects/Weapons/ -B 5 -A 2

# Поиск оглушающего оружия
echo "=== Поиск оглушающего оружия ==="
rg -i "disabler|taser|stun|nonlethal" Resources/Prototypes/Entities/Objects/Weapons/ -B 5 -A 5

Length of output: 79139

Resources/Prototypes/Entities/Objects/Devices/Electronics/misc.yml (1)

15-15: Проверить влияние на рецепты автотокарного станка

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

✅ Verification successful

Изменение цены безопасно

Снижение цены FreezerElectronics с 55 до 20 не создаёт возможностей для арбитража, так как стоимость материалов для создания (50 стали + 50 пластика) значительно превышает цену продажи.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск рецептов, использующих FreezerElectronics
rg -l "FreezerElectronics" Resources/Prototypes/Lathe/

Length of output: 122


Script:

#!/bin/bash
# Найти все файлы, содержащие 'lathe' или 'recipe' в названии
fd -i "lathe|recipe" --type f

# После нахождения файлов, поищем упоминания FreezerElectronics
rg -l "FreezerElectronics" .

Length of output: 3448


Script:

#!/bin/bash
# Проверить содержимое файла с рецептами электроники
cat Resources/Prototypes/Recipes/Lathes/electronics.yml

# Также проверим рецепты крафта для полноты картины
cat Resources/Prototypes/Recipes/Crafting/Graphs/storage/cratefreezer.yml
cat Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml

Length of output: 20486

Resources/Prototypes/Entities/Objects/Devices/Circuitboards/misc.yml (1)

16-16: Изменение цены соответствует общей стандартизации

Снижение цены до 20 согласуется с общим подходом к стандартизации цен на базовую электронику станции.

Resources/Prototypes/Entities/Objects/Devices/Electronics/firelock.yml (1)

16-16: Значительное снижение цены требует проверки

Снижение цены с 61 до 20 является существенным изменением. Необходимо проверить:

  • Влияние на общую экономику станции
  • Возможность создания новых схем арбитража через крафт
✅ Verification successful

Снижение цены оправдано и соответствует общему балансу

Анализ показывает, что новая цена в 20 кредитов:

  • Соответствует стоимости других базовых электронных компонентов (дверная электроника, таймеры)
  • Подкреплена низкими затратами на материалы при крафте
  • Ограничена редким появлением в шкафчиках инженеров (5%)
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск связанных рецептов и цен
rg -l "FirelockElectronics" Resources/Prototypes/

Length of output: 604


Script:

#!/bin/bash
# Check recipes and construction details
echo "=== Lathe Recipe ==="
rg -A 10 "FirelockElectronics" Resources/Prototypes/Recipes/Lathes/electronics.yml

echo -e "\n=== Construction Graph ==="
rg -A 10 "FirelockElectronics" Resources/Prototypes/Recipes/Construction/Graphs/structures/firelock.yml

echo -e "\n=== Engineer Locker Contents ==="
rg -A 5 "FirelockElectronics" Resources/Prototypes/Catalog/Fills/Lockers/engineer.yml

Length of output: 1239


Script:

#!/bin/bash
# Check base recipe materials and costs
echo "=== Base Electronics Recipe ==="
rg "BaseCheapElectronicsRecipe|BaseElectronicsRecipe" Resources/Prototypes/Recipes/Lathes/electronics.yml -A 10

echo -e "\n=== Other Electronics Prices ==="
rg "price: \d+" Resources/Prototypes/Entities/Objects/Devices/Electronics/*.yml

Length of output: 5116

Resources/Prototypes/_Backmen/Entities/Objects/Devices/Circuitboards/computer.yml (1)

12-12: Требуется обоснование значительного снижения цены

Снижение цены с 750 до 150 (на 80%) является очень существенным изменением для специализированной платы верфи. Необходимо:

  • Обосновать такое значительное снижение
  • Проверить влияние на баланс игры
  • Убедиться, что это не создаст новых возможностей для арбитража
Resources/Prototypes/Entities/Objects/Devices/Electronics/door.yml (1)

15-15: Стандартизация цены требует проверки крафта

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

✅ Verification successful

Изменение цены не влияет на крафт

Снижение цены дверной электроники до 20 не оказывает влияния на крафт, так как:

  • Рецепты создания в станках используют фиксированное количество материалов (50 стали, 50 пластика)
  • Графы конструкции дверей требуют только наличия компонента, без учета его стоимости
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск рецептов с дверной электроникой
rg -l "DoorElectronics" Resources/Prototypes/Lathe/

Length of output: 119


Script:

#!/bin/bash
# Найдем все файлы, связанные с рецептами и крафтом
fd -e yml -e yaml "(recipe|craft|construction)" 

# Поиск упоминаний DoorElectronics
rg -l "DoorElectronics" Resources/Prototypes/

Length of output: 2692


Script:

#!/bin/bash
# Проверим рецепты в electronics.yml
cat Resources/Prototypes/Recipes/Lathes/electronics.yml

# Проверим графы конструкции для дверей
cat Resources/Prototypes/Recipes/Construction/Graphs/structures/airlock.yml
cat Resources/Prototypes/Recipes/Construction/Graphs/structures/windoor.yml

Length of output: 41458

Resources/Prototypes/Entities/Objects/Devices/Electronics/timer.yml (1)

18-18: Подтверждаю изменение цены для таймера.

Снижение цены с 30 до 20 соответствует общей инициативе по корректировке цен для предотвращения арбитража.

Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml (1)

69-69: Корректировка цены голопроектора.

Снижение цены с 80 до 60 для HolofanProjector логично соотносится с ценой HoloprojectorSecurity (50), создавая сбалансированную ценовую структуру.

Resources/Prototypes/_Backmen/Entities/Objects/Weapons/Guns/Energy/energy.yml (1)

174-175: Добавление цены для лазерного пистолета.

Установка цены 250 для лазерного пистолета EarthGov является обоснованной для энергетического оружия и соответствует целям предотвращения арбитража.

Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml (1)

405-405: Корректировка цены платы массмедиа.

Снижение цены со 150 до 100 соответствует базовой цене компьютерных плат и общей инициативе по балансировке цен.

Resources/Prototypes/Entities/Objects/Shields/shields.yml (1)

589-589: Корректировка цены телескопического щита.

Снижение цены с 250 до 170 лучше отражает полезность предмета в сравнении с другими щитами, сохраняя при этом его ценность как продвинутого защитного снаряжения.

Comment on lines +391 to +392
- type: StaticPrice
price: 300
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Codebase verification

🛠️ Refactor suggestion

Цена частичного замедлителя значительно занижена

Текущая цена в 300 кредитов создает серьезную возможность для арбитража, учитывая что:

  • Стоимость материалов для создания составляет около 9000-10500 кредитов
  • Требуется исследование технологии 3-го уровня (GravityManipulation)
  • Является специализированным инструментом для работы с опасными явлениями

Рекомендуется повысить цену минимум до 9000 кредитов для предотвращения эксплуатации экономики.

🔗 Analysis chain

Проверьте баланс цены частичного замедлителя

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

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск рецептов создания частичного замедлителя
rg -l "WeaponParticleDecelerator" 

Length of output: 651


Script:

#!/bin/bash
# Check lathe recipes and research requirements
echo "=== Lathe Recipe ==="
rg -A 10 "WeaponParticleDecelerator" Resources/Prototypes/Recipes/Lathes/tools.yml

echo -e "\n=== Research Requirements ==="
rg -A 10 "WeaponParticleDecelerator" Resources/Prototypes/Research/experimental.yml

echo -e "\n=== Crate Information ==="
rg -A 5 "WeaponParticleDecelerator" Resources/Prototypes/Catalog/Fills/Crates/engineering.yml

Length of output: 969

@KayzelW KayzelW merged commit e2be4ed into Rxup:master Jan 9, 2025
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants