-
-
Notifications
You must be signed in to change notification settings - Fork 415
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
Множество мелких улучшений гранат, взрывов и всякого такого прочего. #12254
The head ref may contain hidden characters: "\u043F\u043E\u0440\u043E\u0445-\u0438\u0437-\u043F\u0430\u0442\u0440\u043E\u043D\u043E\u0432"
Множество мелких улучшений гранат, взрывов и всякого такого прочего. #12254
Conversation
Changelog status: ✔️ |
Был пр на 3 файлика 10 строк, а стал пр на 28 файлов 178 строк. |
Этот запрос на слияние был упомянут в Tau Ceti Station Forum. Там могут быть соответствующие подробности: https://forum.taucetistation.org/t/fludilka-chast-2/28659/27745 |
Всё хорошо, но учитывая размер, пр теперь точно ещё не скоро рассмотрят, не то что замержат :dovolen: |
if(!use_multi(user, resources_to_use)) | ||
return | ||
new /obj/item/weapon/shard/shrapnel(user.loc) | ||
else |
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.
можно сделать чуточку красивее
if()
...
return
return ..()
@@ -236,6 +240,8 @@ SUBSYSTEM_DEF(explosions) | |||
if(EXPLODE_LIGHT) | |||
SSexplosions.lowturf += explode | |||
|
|||
SSexplosions.throwturf += list(list(explode, epicenter, severity)) |
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.
странно ли что отброс не зависит от силы взрыва?
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.
Зависит. Сила взрыва это северити.
Разброс зависит от северити разрушения турфа, всё ок.
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.
меня немного воротит от того что эпицент хранится для кучи разных турфов при том что он всего один. почему нельзя откидывать предметы в ex_act?
Мб стингеры сбухам с rubber bullet вместо шрапнели? |
В 4 раза уменьшил порох добываемый с патронов, потому что патронов полно. |
Это интересно, но я хз если кинуть руббер буллет то она застанит?))) |
Добавил гранату с боласами :dovolen: |
code/defines/obj/weapon.dm
Outdated
@@ -261,6 +263,7 @@ | |||
item_state_base = "shrapnel" | |||
desc = "A bunch of tiny bits of shattered metal." | |||
on_step_sound = 'sound/effects/metalstep.ogg' | |||
throwforce = 20 |
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.
throwforce слишком большой (и определен дважды, выше еще один), чтоб не копипастить сошлюсь на старое похожее обсуждение #9473 (comment)
20 в некоторых ситуациях будет слишком эффективным, в зависимости от того какая была цель - можно подергать другие параметры
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.
При дальности прокида 1 это не поабузить нормально, хз
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.
дальность прокида может изменяться в зависимости от обстоятельств: гравитация, разгермы, какие-нибудь гравипушки, мусоропровод и все что угодно, вызывающее throw_at() с кастомными скоростью и расстоянием. throwforce это единственный параметр, связанный с самим объектом, так сказать базовый дамаг.
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.
Ну тогда мне придётся изменить систему нанесения урона вещью.
Пусть количество урона будет скаллироваться от скорости, видимо.
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.
оно уже так и делает, как минимум для мобов. Броски у нас ок, но само попадание нуждается в рефакторинге и сейчас может работать по разному для разных объектов, надо проводить ревизию hitby
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.
Не, я посмотрел - для мобов тоже не делает. Я теперь крч считаю throwmomentum из w_class и скорости * файнтюн_дефайн
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.
/mob/living/hitby()
var/throw_damage = O.throwforce * (AM.fly_speed / 5)
fly_speed тут идет из датума, где считается как раз из скорости и расстояния
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.
w_class не надо включать, throwforce это оно и есть отчасти.
for(var/i in 1 to get_amount()) | ||
new shrapnel_type(loc) |
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.
спавн 50 объектов с уничтожения полного стака не стоит делать ради производительности, да и есть ситуации, где это точно не требуется - если стак уничтожило нюкой или сингулярностью и т.д., стоит подумать над этим моментом еще.
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.
Я могу с шансом прост их спавнить, хз. Шанс 20% на спавн с листа одной шрапнельки.
@@ -19,6 +19,7 @@ | |||
origin_tech = "materials=1" | |||
var/created_window = /obj/structure/window/thin | |||
required_skills = list(/datum/skill/construction = SKILL_LEVEL_NOVICE) | |||
shrapnel_type = /obj/item/weapon/shard |
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.
можешь еще тайп в
/obj/item/stack/sheet/glass/after_throw
и
/obj/item/stack/sheet/rglass/after_throw
закинуть вместо текущего хардкода спавна осколков
не знаю, есть ли у других стеков такой механ
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.
Тут не понял. Мне нужен был один механ для всех видов стаков. Чтобы и стекло и фороновое стекло и усиленное стекло и металл и слитки и пласталь и провода и роды и плитки пола и стеклянные плитки пола - давали осколки.
@@ -236,6 +240,8 @@ SUBSYSTEM_DEF(explosions) | |||
if(EXPLODE_LIGHT) | |||
SSexplosions.lowturf += explode | |||
|
|||
SSexplosions.throwturf += list(list(explode, epicenter, severity)) |
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.
есть ли причина опять игнорировать тг? Там, например, предусматривается влияние нескольких взрывов на объект, прежде чем передавать в контроллер
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.
У них там кринж, я сделаю лучше. Сейчас сделаю учитывание нескольких взрывов. И оно будет круче!
:)
if(epicentered) | ||
//Self-sacrifice mechanics | ||
var/covered = FALSE | ||
for(var/atom/movable/Cover in epicenter.contents) | ||
if(ishuman(Cover) && prob(50)) | ||
var/mob/living/carbon/human/H = Cover | ||
if(!H.lying) | ||
continue | ||
opposite_to_epicenter = Cover | ||
covered = TRUE | ||
break |
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.
это интересная идея, но место плохое - стоит сразу где-то в части самого взрыва propagate_blastwave
смотреть, чем в более абстратном контроллере, который просто последствия процессит.
Не мержим крч, ща сделаю пр с проставлением всем объектам в билде их массы :dovolen: |
Данный ПР автоматически отмечен как застоявшийся по причине длительного отсутствия обновлений. Он будет закрыт через 7 дней, если никакой активности не будет проявлено. Если вы считаете, что ПР еще актуален, или что я (злобный робот) пристаю к вам зря - просто напишите любой комментарий. Спасибо за ваш вклад. |
ПР закрыт из-за длительного отсуствия активности. Для переоткрытия ПРа, пожалуйста, обратитесь к кому-либо из мейнтейнеров. Вы можете призвать их в комментарии слапнув |
Описание изменений
Порох можно получить извлекая его из патронов в колбу. Порох усиливает реакцию нитроглицерина и калия-воды, если содержится в результирующей колбе в отношении 1 порох к 10 нитроглицерина или калия-воды.
Гранаты 60 на 60 калий-вода перестали взрывать пол. Буквально изменение 10% силы гранаты 60-60, так что всё ок
Гранаты заимели шрапнель. Вообще все гранаты. Можно в самодельную гранату сунуть шрапнель. В малую - 22 штуки, в большую - 42 штуки.
Появилась граната которая имеет только шрапнель. 3 штуки у бомбермена нюкеровского лежат.
Появилась граната которая кидает 5 боласов. Коробка лежит в бриге, по коробке роздано пиратскому ЕРТ.
Взрывы стали откидывать вещи. Чем ближе к эпицентру, чем сильнее взрыв - тем сильнее откидывает. Можно положить много предметов около взрыва и взрыв их откинет во врага. Например, шрапнелью так можно чуть ли не пригвоздить ко стене.
От шрапнели спасёт: лежание. Когда ты лежишь все предметы над тобой летят, всё хорошо. А также самоотверженный БЩ, который ляжет на гранату и впитает в себя её шрапнель, не всю, но очень много.
Почему и что этот ПР улучшит
Хз, разнообразие. Плюс шрапнель гранатам, почему бы и нет.
Авторство
AndreyGysev.
Чеинжлог
🆑