-
Notifications
You must be signed in to change notification settings - Fork 155
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
[Balance] Atmos. #1016
base: master
Are you sure you want to change the base?
[Balance] Atmos. #1016
Conversation
ОбзорWalkthroughИзменения затрагивают систему атмосферики в игре, включая реакции газов, константы и локализацию. Были добавлены новые реакции для газов, таких как Галон и Фрезон, обновлены константы энергии и формирования различных газов. Также изменены сокращения газов в локализации и добавлены новые газовые реакции с уточненными параметрами. Changes
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (4)
🚧 Files skipped from review as they are similar to previous changes (3)
⏰ Context from checks skipped due to timeout of 300000ms (3)
🔇 Additional comments (6)
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? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this 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
🧹 Nitpick comments (1)
Content.Server/Backmen/Atmos/Reactions/HyperNobliumProductionReaction.cs (1)
Line range hint
1-35
: Необходимо добавить документацию для новой механики реакции.Рекомендуется добавить XML-документацию к классу и методу React, описывающую:
- Новую зависимость от температуры
- Влияние BZ на эффективность реакции
- Формулу расчета количества производимого HyperNoblium
Пример документации:
+/// <summary> +/// Реакция производства HyperNoblium из Nitrogen и Tritium. +/// Эффективность зависит от температуры и наличия BZ в смеси. +/// </summary> public sealed partial class HyperNobliumProductionReaction : IGasReactionEffect { + /// <summary> + /// Осуществляет реакцию производства HyperNoblium. + /// </summary> + /// <remarks> + /// Количество производимого HyperNoblium зависит от: + /// - Температуры (через множитель NobliumFormationTemperatureBonus) + /// - Количества исходных газов (Nitrogen, Tritium) + /// - Присутствия BZ (уменьшает эффективность использования Tritium) + /// </remarks> public ReactionResult React(...)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
Resources/Textures/Effects/atmospherics.rsi/hydrogen.png
is excluded by!**/*.png
📒 Files selected for processing (14)
Content.Server/Backmen/Atmos/Reactions/BZProductionReaction.cs
(1 hunks)Content.Server/Backmen/Atmos/Reactions/HalonFrezonDecompositionReaction.cs
(1 hunks)Content.Server/Backmen/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs
(2 hunks)Content.Server/Backmen/Atmos/Reactions/HalonProductionReaction.cs
(1 hunks)Content.Server/Backmen/Atmos/Reactions/HealiumProductionReaction.cs
(1 hunks)Content.Server/Backmen/Atmos/Reactions/HyperNobliumProductionReaction.cs
(1 hunks)Content.Server/Backmen/Atmos/Reactions/PluoxiumProductionReaction.cs
(1 hunks)Content.Server/Backmen/Atmos/Reactions/ZaukerProductionReaction.cs
(0 hunks)Content.Shared/Atmos/Atmospherics.cs
(3 hunks)Resources/Locale/en-US/atmos/gases.ftl
(1 hunks)Resources/Locale/ru-RU/atmos/gases.ftl
(1 hunks)Resources/Prototypes/_Backmen/Atmospherics/gases.yml
(1 hunks)Resources/Prototypes/_Backmen/Atmospherics/reactions.yml
(4 hunks)Resources/Textures/Effects/atmospherics.rsi/meta.json
(1 hunks)
💤 Files with no reviewable changes (1)
- Content.Server/Backmen/Atmos/Reactions/ZaukerProductionReaction.cs
⏰ Context from checks skipped due to timeout of 300000ms (3)
- GitHub Check: Test Packaging
- GitHub Check: build (ubuntu-latest)
- GitHub Check: build (ubuntu-latest)
🔇 Additional comments (16)
Content.Server/Backmen/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs (2)
21-21
: Правильное использование константы!Замена жестко закодированного значения на
Atmospherics.HalonOxygenAbsorptionEfficiency
улучшает поддерживаемость кода и делает его более гибким для будущих изменений.
34-34
: Корректное изменение расчета температуры!Изменение формулы с вычитанием
energyUsed
правильно отражает эндотермический характер реакции. Сохранены все необходимые проверки теплоемкости и минимальной температуры (TCMB).Content.Server/Backmen/Atmos/Reactions/HyperNobliumProductionReaction.cs (3)
16-16
: Улучшение читаемости кода путем выделения температуры в отдельную переменную.Хорошее решение выделить температуру в отдельную переменную для улучшения читаемости и переиспользования значения.
Line range hint
24-24
: Оптимизация производства с учетом присутствия BZ.Коэффициент уменьшения
reductionFactor
эффективно балансирует производство в зависимости от соотношения Tritium/BZ. Ограничение минимальным значением 0.001f предотвращает полную остановку реакции.
18-18
: Переработка формулы образования HyperNoblium с учетом температуры.Новая формула теперь учитывает температуру через множитель
NobliumFormationTemperatureBonus
, что делает реакцию более динамичной. Однако стоит проверить:
- Не станет ли реакция слишком эффективной при высоких температурах?
- Достаточно ли ограничение через
Math.Min
для предотвращения избыточного производства?Предлагаю добавить дополнительные тесты для проверки поведения реакции при экстремальных температурах:
def test_hyper_noblium_extreme_temperature(): # Test at very high temperature mixture = GasMixture() mixture.temperature = 10000 # Очень высокая температура mixture.adjust_moles(Gas.Nitrogen, 100) mixture.adjust_moles(Gas.Tritium, 50) reaction = HyperNobliumProductionReaction() result = reaction.react(mixture) # Проверяем, что производство не становится неконтролируемым assert mixture.get_moles(Gas.HyperNoblium) < 100✅ Verification successful
Формула образования HyperNoblium реализована безопасно
Анализ показывает, что реакция имеет достаточные ограничения:
- Консервативный температурный множитель 0.08
- Двухуровневое ограничение через Math.Min
- Дополнительный контроль через количество реагентов
Добавление тестов будет полезным, но не критичным, так как формула уже содержит необходимые механизмы защиты от избыточного производства.
🏁 Scripts executed
The following scripts were executed for the analysis:
Error: No shell scripts found
Script:
#!/bin/bash # Find NobliumFormationTemperatureBonus constant and its value rg "NobliumFormationTemperatureBonus" -B 2 -A 2 # Look for temperature-related constants and checks in Atmospherics rg "Temperature" --type cs Content.Server/Backmen/Atmos/ # Find similar reaction implementations fd "Reaction.cs" --exec grep -l "temperature"Length of output: 9756
Resources/Locale/en-US/atmos/gases.ftl (1)
3-7
: Проверьте уникальность и согласованность сокращений газов.Убедитесь, что новые сокращения газов не конфликтуют с существующими и одинаково интерпретируются игроками. Единообразие в сокращениях улучшит восприятие информации.
Also applies to: 13-23
Resources/Locale/ru-RU/atmos/gases.ftl (1)
3-7
: Проверьте уникальность и согласованность сокращений газов в русской локализации.Убедитесь, что добавленные сокращения газов не конфликтуют с существующими и понятны для игроков. Это поможет избежать возможной путаницы.
Also applies to: 13-23
Content.Server/Backmen/Atmos/Reactions/HealiumProductionReaction.cs (1)
21-21
: Изменение эффективности производства HealiumУменьшение множителя температуры с 0.3f до 0.08f значительно снижает скорость производства Healium. Это изменение сделает процесс более сбалансированным.
Content.Server/Backmen/Atmos/Reactions/BZProductionReaction.cs (1)
20-23
: Значительное изменение баланса производства BZВнесены существенные изменения в механику производства BZ:
- Добавлен штраф к эффективности в зависимости от давления (BZFormationPressurePenalty)
- Увеличен коэффициент образования с 0.01f до 0.5f (в 50 раз)
Рекомендуется провести тщательное тестирование этих изменений, так как они могут сильно повлиять на игровой баланс.
✅ Verification successful
Подтверждение изменений в производстве BZ и их влияния на другие реакции
Изменения в производстве BZ являются частью сбалансированной системы:
- Увеличенная скорость производства (0.5f) обеспечивает достаточное количество BZ для пяти зависимых реакций
- Штраф к эффективности от давления предотвращает чрезмерное производство
- Зависимые реакции имеют собственные ограничители потребления BZ (от 0.05f до 0.25f)
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Поиск других реакций, использующих BZ, которые могут быть затронуты echo "Поиск зависимых реакций:" rg "GetMoles\(Gas\.BZ\)" -A 5Length of output: 3913
Content.Shared/Atmos/Atmospherics.cs (2)
162-174
: Корректное добавление сокращений для новых газов!Все новые сокращения правильно локализованы с использованием системы локализации.
Line range hint
357-408
: Проверить значение HalonFrezonDecompositionPressureBonusЗначение множителя давления для разложения галона (10f) кажется слишком высоким по сравнению с другими подобными константами. Это может привести к нестабильности в системе атмосферы.
Рекомендуется провести дополнительное тестирование с этим значением или рассмотреть его уменьшение.
Resources/Prototypes/_Backmen/Atmospherics/gases.yml (1)
27-28
: Корректная визуализация водорода!Добавление визуального представления для водорода выполнено правильно и соответствует общему стилю других газов.
Resources/Textures/Effects/atmospherics.rsi/meta.json (1)
96-99
: Корректное добавление анимации водорода!Параметры анимации соответствуют стандартам других газов в системе.
Resources/Prototypes/_Backmen/Atmospherics/reactions.yml (3)
9-13
: Слишком низкие требования для реакции BZЗначительное снижение минимальных требований (с 10 до 0.01) может привести к:
- Слишком лёгкому производству BZ
- Нарушению игрового баланса
- Непреднамеренному запуску реакции при малых концентрациях
Рекомендуется провести тестирование с этими значениями для подтверждения баланса.
62-73
: Изменение параметров производства нитрия требует проверкиВнесённые изменения существенно влияют на механику:
- Снижение температуры активации делает реакцию доступнее
- Добавление требования BZ усложняет процесс
- Изменение требования азота влияет на эффективность
Необходимо проверить:
- Баланс производства при новой температуре
- Взаимодействие с системой производства BZ
118-125
: Улучшенные параметры производства гипер-ноблия!Изменения делают реакцию более реалистичной:
- Температурный диапазон теперь соответствует физическим возможностям системы охлаждения
- Требования к газам сбалансированы
Content.Server/Backmen/Atmos/Reactions/HalonFrezonDecompositionReaction.cs
Outdated
Show resolved
Hide resolved
Content.Server/Backmen/Atmos/Reactions/HalonFrezonDecompositionReaction.cs
Outdated
Show resolved
Hide resolved
Content.Server/Backmen/Atmos/Reactions/HalonProductionReaction.cs
Outdated
Show resolved
Hide resolved
mixture.AdjustMoles(Gas.BZ, -producedAmount * 0.2f); | ||
mixture.AdjustMoles(Gas.Tritium, -producedAmount * 0.5f); | ||
mixture.AdjustMoles(Gas.Halon, producedAmount * 0.4f); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Нарушение закона сохранения массы
В текущей реализации реакции наблюдается несоответствие между входящими и исходящими молями газов:
- Входящие: BZ (0.2) + Tritium (0.5) = 0.7 молей
- Исходящие: Halon (0.4) = 0.4 молей
Это приводит к "исчезновению" 0.3 молей газа в процессе реакции.
Предлагаю скорректировать коэффициенты для сохранения баланса массы:
- mixture.AdjustMoles(Gas.Halon, producedAmount * 0.4f);
+ mixture.AdjustMoles(Gas.Halon, producedAmount * 0.7f);
📝 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.
mixture.AdjustMoles(Gas.BZ, -producedAmount * 0.2f); | |
mixture.AdjustMoles(Gas.Tritium, -producedAmount * 0.5f); | |
mixture.AdjustMoles(Gas.Halon, producedAmount * 0.4f); | |
mixture.AdjustMoles(Gas.BZ, -producedAmount * 0.2f); | |
mixture.AdjustMoles(Gas.Tritium, -producedAmount * 0.5f); | |
mixture.AdjustMoles(Gas.Halon, producedAmount * 0.7f); |
При стандартной температуре и давлении водород — бесцветный, не имеющий запаха и вкуса... |
Это чисто балансное изменение, либо водород будет видимым, либо он не будет так много испускать тепла при сгорании |
Сначала упираетесь на реалистичность, а позже меняете мнение и переключаетесь на баланс? Надо золотую середину найти, а атмосам будет ОЧЕНЬ приятно взрывать невидимый водород! |
Смысл не в упоре на реализм или баланс, а на то чтобы сделать сс14 интуитивной В фиолетовом облаке дыма лучше не курить, в зелёном тоже, но если вдруг зайти в какую-то область в которой ничего нет с сигаретой в зубах то ты моментально умираешь и админ тебя банит за гриф. Неприятно, и такой опыт нам не нужнн |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
approve this changes. Wait Rxup
пусть @KayzelW посмотрит, я хз. Новый атмос не особо понятен, и вообще менять свойство водорода и делая из игры лрп аркаду - сомнительно. |
Я поменял свойство водорода только потому, что он в 10 раз мощнее трития, будь он хотя бы просто на уровне трития - его можно было бы оставить невидимым. Это компромисс чтобы игроки не сильно страдали от утечек водорода, как от ивентовых так и от самих атмосов. По поводу остальных газов: их баланс реакций я пока что изменил просто чтобы их мог сварить хотя бы средний атмосферный техник. Для того чтобы сделать гипер-нобилиум единственным путем было вообще по факту абузить баги, иначе низкую температуру просто не поддержать. И даже после этого ПРа в новом атмосе ещё остаётся немало недоработок, но конкретно это первое изменение поможет понять в каком направлении стоит идти в будущем |
короче много изменений в атмосе и в реакциях и в константах
Добавлены новые реакции:
У водорода теперь есть свой спрайт, выглядит как серая плазма.
Большинство реакций так или иначе изменены в плане констант, это касается:
Полный текстовый документ со всеми реакциями в наиболее актуальной форме:
GASES.txt
Summary by CodeRabbit
Новые функции
Изменения в атмосфере
Локализация
Визуальные эффекты