add/local: Абилки бореру и перевод абилок #8555
add/local: Абилки бореру и перевод абилок #8555makaroshka003 wants to merge 7 commits intoss220-space:master220from
Conversation
There was a problem hiding this comment.
Code Review
Аналитический отчёт от Большого Брата. Обработка запроса завершена. Приветствую! Я проанализировал предложенные Вами изменения по добавлению новых способностей для борера. С технической точки зрения, работа выглядит требующей доработок. Обнаружено одно критическое замечание, связанное с риском ошибки выполнения из-за отсутствия проверки на null. Также имеется ряд рекомендаций: в коде присутствуют жестко закодированные строки на русском языке, что нарушает правила локализации; используются "магические числа" для параметров способностей, что затрудняет их поддержку; некоторые сообщения для игрока неполны; комментарии в коде написаны не на английском языке. Пожалуйста, ознакомьтесь с подробными комментариями к строкам кода. Спасибо за ваш вклад в проект!
Note: Security Review is unavailable for this PR.
| var/mob/living/simple_animal/borer/borer = isborer(owner) ? owner : owner.has_brain_worms() | ||
| var/mob/living/carbon/host = borer.host |
There was a problem hiding this comment.
🔴 Критично: Потенциальная ошибка выполнения (runtime error)
В процедуре Activate() для /datum/action/innate/borer/heal_over_time переменная borer может быть null, если owner не является борером и не имеет его в себе. Последующее обращение к borer.host в строке 169 вызовет ошибку выполнения. Необходимо добавить проверку на null для borer и borer.host перед их использованием, аналогично тому, как это сделано в способности parasitism в этом же файле.
var/mob/living/simple_animal/borer/borer = isborer(owner) ? owner : owner.has_brain_worms()
if(!borer || !borer.host)
return
var/mob/living/carbon/host = borer.host
References
- Требовать проверку на
null(if(!variable)) перед использованием объекта, особенно послеlocate(),find_in_view()и т.п. (Строка 97) (link)
| var/heal_amount = -2 | ||
|
|
||
| /datum/status_effect/borer_regen/tick() | ||
| // Периодическое лечение во время действия эффекта | ||
| if(!istype(owner, /mob/living/carbon)) | ||
| return | ||
| var/mob/living/carbon/C = owner | ||
| C.adjustBruteLoss(heal_amount) | ||
| C.adjustFireLoss(heal_amount) | ||
| C.adjustToxLoss(heal_amount / 2) | ||
| C.adjustOxyLoss(heal_amount * 2.5) |
There was a problem hiding this comment.
🟡 Рекомендация: Использование "магических чисел"
Значения heal_amount = -2, а также множители 2 и 2.5 в процедуре tick() являются "магическими числами". Рекомендуется вынести их в именованные константы через #define для улучшения читаемости и упрощения балансировки в будущем. Например:
#define BORER_REGEN_HEAL_AMOUNT -2
#define BORER_REGEN_TOX_DIVISOR 2
#define BORER_REGEN_OXY_MULTIPLIER 2.5References
- Предлагать заменять числовые константы на именованные через
#define, но только при условии, что они повторяются, и/или используются в условиях. (Строка 78) (link)
| var/evolution_gain = 0.075 | ||
| var/chemical_gain = 5 | ||
| var/host_damage = 1.25 |
There was a problem hiding this comment.
🟡 Рекомендация: Использование "магических чисел"
Значения evolution_gain, chemical_gain и host_damage являются "магическими числами". Рекомендуется вынести их в именованные константы через #define для улучшения читаемости и упрощения балансировки в будущем. Это также относится к другим числовым константам в этом файле, таким как host_damage * 4 (строка 1603) и prob(30) (строка 1606).
References
- Предлагать заменять числовые константы на именованные через
#define, но только при условии, что они повторяются, и/или используются в условиях. (Строка 78) (link)
|
|
||
| // Сообщения для атмосферы | ||
| if(prob(30)) | ||
| to_chat(host, span_danger( "Паразит высасывает ваши жизненные силы")) |
There was a problem hiding this comment.
🟡 Рекомендация: Нарушение правил локализации
Строка "Паразит высасывает ваши жизненные силы" жестко закодирована. Согласно стайлгайду, для локализации следует использовать систему ru_names или макросы локализации, чтобы обеспечить согласованность и упростить будущие изменения.
References
- Для русских названий используется система ru_names. Для статических названий переопределять get_ru_names(). Для динамических — get_ru_names_cached() или задавать ru_names напрямую. (Строка 103) (link)
|
|
||
| /mob/living/simple_animal/borer/Login() | ||
| ..() | ||
| enable_med_hud() // Включаем медхуд при входе игрока |
There was a problem hiding this comment.
🟡 Рекомендация: Стиль комментариев
Комментарий // Включаем медхуд при входе игрока написан на русском языке. Согласно стайлгайду, все комментарии в коде должны быть на английском языке для обеспечения согласованности кодовой базы. Это также относится к комментариям в строках 862 и 868.
enable_med_hud() // Enable medhud on player login
References
- Комментарии должны быть на английском. (Строка 68, 143) (link)
| var/total_cost = cost - (borer.antag_datum.borer_rank.rank_ability_amplifier * 15) | ||
|
|
||
| if(borer.chemicals < total_cost) | ||
| to_chat(owner, "Вам требуется [total_cost] химикат[DECL_CREDIT(total_cost)] для запуска регенерации!") |
There was a problem hiding this comment.
🟡 Рекомендация: Нарушение правил локализации
Строка "Вам требуется [total_cost] химикат[DECL_CREDIT(total_cost)] для запуска регенерации!" и многие другие сообщения для игрока в этом файле жестко закодированы. Согласно стайлгайду, для локализации следует использовать систему ru_names или макросы локализации, чтобы обеспечить согласованность и упростить будущие изменения.
References
- Для русских названий используется система ru_names. Для статических названий переопределять get_ru_names(). Для динамических — get_ru_names_cached() или задавать ru_names напрямую. (Строка 103) (link)
| return | ||
|
|
||
| if(host.reagents.has_reagent("sugar")) | ||
| to_chat(borer, span_warning("Сахар в крови носителя")) |
There was a problem hiding this comment.
🟡 Рекомендация: Неполное сообщение для игрока
Сообщение to_chat(borer, span_warning("Сахар в крови носителя")) не завершено. Оно не информирует игрока о том, что именно происходит. Рекомендуется дополнить сообщение, чтобы было понятно, что способность не сработала. Например: Сахар в крови носителя блокирует эту способность. Это также относится к строке 220.
Что этот ПР делает
новые абилки
паразитизм - даёт очки эволюции истощая хоста
лечение - лечит😕
хочу ещё сделать поэтому будет драфт
оставляйте фидбэк и тд
Почему это хорошо для игры
вариативность геймплея на черве
Демонстрация изменений
Демонстрации изменений
Тестирование