Repository navigation
Multiplicative Armor Stacking - #13002
Conversation
Changelog status: ✔️ |
|
ого |
|
поменял на дефайн |
|
Жаль что нет курса на ультимативный иммунитет к урону при выполнении каких-то интересных условий... |
| if(C.body_parts_covered & BP.body_part) | ||
| protection *= PROTECTION_TO_MULTIPLE(C.armor[type]) | ||
|
|
||
| return 100 - protection |
There was a problem hiding this comment.
Меня бесит что функция называется getarmor но возвращает она "процент урона который должен пройти"
There was a problem hiding this comment.
я и не знаю даже, я уже так много на эти 5 строчек смотрел что всё поплыло
а оно точно сейчас корректно работает а не чем больше брони тем больше урона?
потому-что если смотреть как оно потом применяется в
https://github.com/TauCetiStation/TauCetiClassic/blob/master/code/modules/mob/living/carbon/human/human_defense.dm#L137
var/delta = max(0, P.damage - (P.damage * (armor/100)))
то выходит то что возвращает функция это на самом деле не armor, потому-что при armor = 70, дельта урона = 30%
но это и не protection_multiple, потому-что в той функции армор на неё не множится
ещё одна какая-то сущность и всё так дебильно!
мб назови функция get_protection_multiple_organ, сделай чтобы она возвращала в пределах от 0.0 до 1.0, функции которые её используют тоже переименуй, и в human_defense сделай var/delta = max(0, P.damage - P.damage * get_protection_multiple())
так вроде (лично мне) всё было бы максимально понятно.
но может просто кому-то ещё надо на это всё посмотреть
|
Данный ПР автоматически отмечен как застоявшийся по причине длительного отсутствия обновлений. Он будет закрыт через 7 дней, если никакой активности не будет проявлено. Если вы считаете, что ПР еще актуален, или что я (злобный робот) пристаю к вам зря - просто напишите любой комментарий. Спасибо за ваш вклад. |
|
нормальный ПР но надо чтобы кто-то другой посмотрел своим глазом |
|
Данный ПР автоматически отмечен как застоявшийся по причине длительного отсутствия обновлений. Он будет закрыт через 7 дней, если никакой активности не будет проявлено. Если вы считаете, что ПР еще актуален, или что я (злобный робот) пристаю к вам зря - просто напишите любой комментарий. Спасибо за ваш вклад. |
|
ПР закрыт из-за длительного отсуствия активности. Для переоткрытия ПРа, пожалуйста, обратитесь к кому-либо из мейнтейнеров. Вы можете призвать их в комментарии слапнув |
|
@Chip11-n переделал, теперь всё работает. |
Chip11-n
left a comment
There was a problem hiding this comment.
Меня все ещё прикалует 100 - 100 * (100 - min(p, 100) * 0.01) для расчёта брони. Честно, даже не знаю что с этой страшилой делать.
По самому балансу не вижу проблем.
Думаю можно в ТМ.
|
|
||
| //this proc returns the armour value for a particular external organ. | ||
| /mob/living/carbon/human/proc/getarmor_organ(obj/item/organ/external/BP, type) | ||
| /mob/living/carbon/human/proc/get_protection_multiple_organ(obj/item/organ/external/BP, type) |
There was a problem hiding this comment.
имхо после переименования и fbbfbc6 стало запутанней.
Особенным был getHalLoss, а не getarmor, а теперь у нас дважды конвертируется значение из "+" в "-" и обратно: в getarmor, а потом через
//helper for inverting armor blocked values into a multiplier
#define blocked_mult(blocked) max(1 - (blocked / 100), 0)
Впрочем, виной всему отсутствующий долгое время рефакторинг в этой части кода, что оно плохо читаемо и тут сложно въехать и случайно что-то не сломать.
Сейчас по мне выглядит ок (не считая комментария выше), и можно дальше лишний раз не трогать.
Co-authored-by: Alexander V. <volas@ya.ru>

Описание изменений
изменяет наложение брони из простой суммы на мультипликативное.
пример
сейчас:
имея комбез офицера (10%) и броню (50%) мы получали 60% защиты
теперь:
имея те же вещи мы получаем 55% защиты
Почему и что этот ПР улучшит
фикс бага
будет невозможно настакать (например с помощью комбеза офицера, риотки и пресса) 100% защиты
Авторство
буквально tgstation/tgstation#71396
Чеинжлог
🆑 Simbaka