-
Notifications
You must be signed in to change notification settings - Fork 18
Учим алиенов глотать людей #53
base: master
Are you sure you want to change the base?
Conversation
Даем возможность выплевывать хуманов, небольшой костыль с уроном
Даем возможность алиенам глотать хуманов
Небольшой нерф боевого ножа, что бы они не кромсали несущих их алиенов за пару чиков
По просьбе Ольта расширяем максимальный размер загружаемых файлов для музыки
Глотание удалено специально и приближено к реалиям игр и фильмов, потому что эта фича чисто в сс-ке и она не ок. К тому же глянул хоть пару строкой выше - повторяешь просто код который уже есть. Саунд на 7~ метров не надо, я знаю что вы абузите мп3 переименовывая в огг, вместо использования конвертации нормальной что как раз срезает неплохо размер. |
@ZVee Повторения кода можно было бы легко избежать, если бы я чуть более знал как бьенд тут всё это воспринимает. А так же можно было бы избежать костыль с флагами, будь прок, который отвечал за постоянное событие, но и этот будет грузить лишними повторяющимся расчетами. Я лишь выполнил просьбу, и как по мне в реалиях билда это могло бы разнообразить, уж лучше чем тройной граб и тащить за собой хуманов как хуман. Размер музыки увеличил не для того, что бы безбожно форсить же музыку под 10 минут, сохранить качество чуть более, чем приемлимо невозможно, особенно если нужно укладываться в 1 метр, тогда хотя бы разреши до 6 метров. Ну а остальное на твой суд и суд других |
Не надо увлекаться музыкой вообще - во первых у нас играют далеко люди не на супер железе, во вторых внезапно даже в 2к17 есть люди использующие мобильный интернет (да, можете смеяться, но я услышал слова "модем" и "трафик" сегодня снова, значит не стоит исключать, что таких людей может быть больше) и эти композиции (даже если отключить проигрывание, бъенд все равно стелсово отошлет) пожрет игроку не совсем лишний трафик. Плюс от музыки еще и подфриживает сервер (опять же особенность бъенда). Вообще, я уже разжёвывал на тему музыки неоднократно. И в целом, какой в этом смысл, если часть игроков вообще играет без звука, а еще можно просто с ютуба слушать, зачем именно насильно пихать только потому что есть кнопка? По поводу кода образно говоря - у тебя там сделано повторение того что выше, в итоге может выйти такая ситуация - что мы кусаем мозги и пожираем одновременно - что очень странно, плюс если это обезьянка будет - может выйти пожирание обезьяны два раз подряд, просто потому что сработает один и тот же код два раза и это уже будет багом, а еще - что прорвет временную линию и создаст черную дыру. И плюс если код до этого скажем по какой-то причине не пройдет проверок - он просто отменит этот прок в целом и твой добавленный код ниже не будет работать, потому что тут не рассчитано на какой-нибудь код ниже. |
@ZVee Да, там идет повторение того остатка, что было раньше, стереть и подчистить его - меньшая проблема. Что по поводу кусания мозгов, как тесты показали и не один раз при разных обстоятельствах, мозги он ест нормально и не затрагивает прок того, что он еще при этом заглатывает свою цель. Как хуманов, так и обезьянок ел он нормально, да, возникала проблема, что прок может активироваться несколько раз, однако серьёзных багов после этого не было, код просто заканчивал свою цепочку, ну и на этом собственно все. Если проверка по какой-то причине не пройдет, то оно дальше и не должно работать, потому что это совсем не требуется. За исключением можно добавить какую-нибудь надпись игроку, что бы он понимал, что "Что-то не так". Если и отслеживать баги такого уровня, то нужно сидеть часами, но и тестов на это и времени я тоже не пожалел, как уже сказал, особых ошибок и разрывов во времени не происходило, так же со временем не возникали разные баги или проблемы. Возможно они и проявятся, если с этим будут играться очень много игроков разов, но как уже сказал. Многочисленные тесты и проверки не показали особых багов и проблем при работе |
Как минимум надо код хотя бы встроить в тот же иф который есть выше. Однако как и говорил - это убрали намерено из билда и возвращать вроде как и не планировалось, изначально эта фича есть и поэтому если внезапно обнаруживается отсутствие - значит убрано целенаправленно. |
@ZVee Ну, надеюсь, что фиерри шатл целенаправленно не убиралось. Код я поправлю и более менее стабилизирую, если всему этому будет дан зеленый свет, опять же. Всё же подумай на тему её возвращения, уверен даже если не конкретно она, то можно придумать и сделать что-то альтернативное. Что понравилось бы всем и было в новинку, или хотя бы не заезженно |
if(!do_mob(assailant, affecting)||!do_after(assailant, 20, target = affecting)) return | ||
assailant.visible_message("<span class='danger'>[assailant] devours [affecting]!</span>") | ||
if(holder.stat == DEAD) | ||
holder.gib() |
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(stomach_contents.len) | ||
for(var/mob/M in src) | ||
if(M in stomach_contents) | ||
M.status_flags = 15 |
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.
Волшебные цифры вида 15 некорректно прописывать, надо искать флаги конкретные и возвращать, к тому же таким выставлением - еще и затираешь любые, которые могли быть кастомные выставлены.
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.
Нет, фиксировать тоже не вариант, надо просто добавлять битфлаг к текущим флагам и отнимать конкретный, а не через оператор = выставляя насильно число определенное или флаг. флаги забираются и выдаются обычно через |= bit и &= ~bit.
Только зачем вообще годмод выдавать?
code/modules/mob/mob_grab.dm
Outdated
if(holder.stat == DEAD) | ||
holder.gib() | ||
holder.sleeping = 8 | ||
holder.status_flags = GODMODE |
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.
Отвечу тоже самое что и выше, да, с этим проблема была и я по началу не догадался просто прибавить флаг, что бы потом просто его убрать, буду иметь в виду. Но по хорошему тут нужно их вообще убирать и справляться без них, убирая проглоченному урон, который наносится пока он внутри
Как говорится ни тебе, ни мне. Разреши выделить максимум 4мб для загружаемого контента, этот максимум не должен сильно потреблять ресурсы игроков и других и хватит для форса интересностей.
То же самое с флагами + потер остаточный код, который остался после, дабы не было повторов
if(M in stomach_contents) | ||
stomach_contents.Remove(M) | ||
M.loc = loc | ||
M.status_flags -= GODMODE |
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.
+
и -
не используется в битфлагах, а что если уже висел годмод до этого или был снят? Тогда вычитание и прибавка попросту сломает код, т.к отнимет или добавит к числу попросту еще одно число. Я ведь писал что битфлаги шатаются через (|= bit) и (&= ~bit). К тому же все равно может быть конфликт с тем, что код отменит любое из состояний связанных с этим флагом, может кто-то из администраторов включит, а код отменит его, может какая-то фича будет использовать и тоже.
К тому же я спрашивал, зачем вообще использовать годмод с тем, кого пожрали?
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(M == assailant && state >= GRAB_AGGRESSIVE) |
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.
https://github.com/TauCetiStation/ColonialMarines_Redone/pull/53/files#diff-0d58be00f177298faed0e648e735056eR212 - таки посмотри на строку 212. Зачем два раза одно и тоже спрашивать? А еще у тебя нет проверки на isalienadult(), потому что в alien входит вообще целиком класс алиумов, а не только взрослые особи.
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.
Да, этого как-то не заметил. isalienadult() не использовал т.к лавры не имеют всё равно граба, а из взрослых особей было решено, что глотать не смогут только дроны и скауты, но исправлю это.
|
||
if(M == assailant && state >= GRAB_AGGRESSIVE) | ||
if( (ishuman(assailant) && ismonkey(affecting) ) || ( isalien(assailant) && iscarbon(affecting) && !isalien(affecting) && !istype(assailant, /mob/living/carbon/alien/humanoid/drone) && !istype(assailant, /mob/living/carbon/alien/humanoid/runner ) )) |
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.
Т.е теперь можно пожирать за хуманов обезьян не имея мутации фат? Зачем было код выше удалять, убирая еще и 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.
Хуманы вообще по хорошему не должны кого-либо пожирать, а мутацию фат в реалиях билда они всё равно получить не могут, если только не педальным воздействием. Но поправлю всё это. Выше удалял оставшийся код от того же пожирания. Но увидел что еще случайно снес нужный else блок, восстановлю
@@ -145,7 +145,7 @@ | |||
state = GRAB_AGGRESSIVE | |||
icon_state = "grabbed1" | |||
else | |||
if(state < GRAB_NECK) | |||
if(state < GRAB_NECK && !isalien(assailant)) |
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.
Почему нет? (!isalien(assailant))
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.
Не, наоборот спрашиваю - почему заблокирован апгрэйд граба для алиумов? Почему им внезапно нельзя душить?
Может вместо фичи с глотанием - просто сделать что пулл после дизарма поддерживает стан бесконечно? По сути это будет равняться тому, что алиум схватил максимально хумана и тащит, только можно будет пулить и не беспокоиться что хуман когда-то из этого сможет выбраться, ну или шанс на резист добавить небольшой, дабы можно было таки попытаться выбраться. |
@ZVee скорее всего проще и в какой-то части и правда будет сделать лучше так, чем сидеть и выискивать все возможные баги, которые могут произойти и которые обязательно будут. Пока еще конкретно не знаю, что скажет народ на это, но думаю такая альтернатива будет всяко лучше глотания, хоть и хуман с этой фичей может красиво и с брызгами явится из тела алиума распоров ему живот изнутри |
Я вообще пулю и таклю марина, не парясь. Когда он встает обычно с 1-2 таклов снова падает. Ни разу не убежали. Стоит задуматься. |
@StrikS У меня больших проблем с этим тоже не возникало, но многим не нравится суть того, что хуманы либо встают и убегают\шахидятся. И в связи с этим процесс переноса можно было бы чутка разнообразить. Но сейчас собственно всё зависит только от того, что сам народ скажет |
Ну интереснее когда добыча может удрать, главное чтобы шанс не был высок. Как я понял триплграб не контрится, поэтому его абузят? Так сделай чтобы контрился резистом, с шансом, но низким. |
@StrikS в том-то и дело, что через трипл граб вырваться у жертвы совсем нет шансов. С проглатыванием жертва будет иметь все шансы выбраться и даже убить алиена, если тот ничего не предпримет и хотя бы не выплюнет свою жертву |
Так сделай чтобы контрился резистом, с шансом, но низким. |
А с загрузкой файлов все еще остается проблема фриза сервера. Если оно умудряется фризануть на секунды две при мегабайте и 60 онлайне, что же будет при 4-х мегабайтах? |
По поводу музыки, тогда есть Альтернатива, сделать пак музыки как на фолыча билде, встроеную в сам билд. Либо 4 метра. А при метре оно на пол секунды, максимум на секунду фризит и музыку форсят жеж не просто так, а для красивого/эпичного боя. Или локальные звуки, дабы попугать выживших/одинокий маринад. |
Предлагаю альтернативу. Разрешите чужим пуллить за собой хуманов без штрафов к скорости. Хер с этим заглотом. |
Так они и так их довольно быстро пуллят. Кидаешься лицехвата, третий граб, падеба |
Делаю по просьбе некоторых людей. Так как на алиенах многим надоел абуз граб-граб-граб-тащи. Вместо него была придумана совместно небольшая альтернатива. Теперь что бы алиену почти безопасно переносить хуманов не теряя своей скорости, он может проглотить свою цель. Такое преимущество чревато тем, что хуман может убить его изнутри и вырваться, однако у алиенов всегда достаточно времени как и скорости, что бы перенести их . А так же таким способом можно переносить макак.
В будущем планируется: