-
-
Notifications
You must be signed in to change notification settings - Fork 419
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
Новая станционная раса. Тау-Китайцы #13348
base: master
Are you sure you want to change the base?
Conversation
После смерти попадаем в рай
Проверка на сошиал кредит Святость + кнопка для щитспавна святости Одежда
Возможность крафта писем Возможность подписывать письма и повышать социальный рейтинг Запреты некоторым расам на подписание писем
Запретил ловить души плувийцев камнем душ (они запривачены) немного переписал рекомендательные письма
Убрал ненужную переменную Теперь плувийцы тоже могут голосовать, но за счет своей кармы
Вспомнил только выстрел в рот и удавку
как в убить Билла
This reverts commit 62219dd.
пофиксил суицид пушкой раньше он не срабатывал корректно, потому что сильный выстрел мог снести голову + перенс условия попадания в рай в расу
Спелл который создает духа для связи в раю Мимоходом еще добавил рунчат в подслушивание телепатией
спелл связи с раем теперь связывает с случайным гонгом, либо с определенным, если вам позвонили
Но это не точно, хуй проверишь
code/modules/admin/admin_verbs.dm
Outdated
set name = "Custom Haram" | ||
set desc = "Накидывает очки греха вручную" | ||
var/haram_point= input("Сколько очков греха накидываем?", "Очки Греха") as text|null | ||
var/reason= input("Какая причина?", "Причина?") as text|null |
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.
Я не буду это отыгрывать.
code/modules/mob/holder.dm
Outdated
@@ -150,6 +150,12 @@ | |||
icon_state = "skrellkey1" | |||
flags = HEAR_PASS_SAY | |||
|
|||
/obj/item/weapon/holder/monkey/pluvia | |||
name = "Плувеныш" |
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.
замечание валидное, стоит оставить на английском. Можно добавить в падежи
/obj/item/weapon/bless_vote/attack_self(mob/living/carbon/user) | ||
user.set_machine(src) | ||
var/dat | ||
dat = "<B><font color = ##ff0000>[CASE(src, NOMINATIVE_CASE)] для прохода в рай</font></B><BR>" |
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.
src - это что тут ?
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.
bless_vote
var/dat | ||
dat = "<B><font color = ##ff0000>[CASE(src, NOMINATIVE_CASE)] для прохода в рай</font></B><BR>" | ||
if(owner.gender == FEMALE) | ||
dat += "<I><font color = ##ff0000>Подписывая эту бумагу, вы подтверждаете[CASE(owner, NOMINATIVE_CASE)] достойной попасть в рай после смерти</font></I><BR><BR>" |
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(owner.gender == FEMALE) | ||
dat += "<I><font color = ##ff0000>Подписывая эту бумагу, вы подтверждаете[CASE(owner, NOMINATIVE_CASE)] достойной попасть в рай после смерти</font></I><BR><BR>" | ||
else | ||
dat += "<I><font color = ##ff0000>Подписывая эту бумагу, вы подтверждаете[CASE(owner, NOMINATIVE_CASE)] достойным попасть в рай после смерти</font></I><BR><BR>" |
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.
Кого/чего - винительный.
var/mob/living/target = possible_targets[H] | ||
target.copy_overlays(H) | ||
|
||
visible_message("[bicon(src)] <span class='notice'>[CASE(src, NOMINATIVE_CASE)] гудит от удара [CASE(user, NOMINATIVE_CASE)].</span>") |
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.
сделал
code/_onclick/item_attack.dm
Outdated
M.log_combat(user, "knifed with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") | ||
M.process_aggresive_action(user, "knifed with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") |
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.
найдем - поменяем
@@ -44,8 +44,10 @@ | |||
if(!target) | |||
target = locate(target_type) | |||
if(!target) | |||
icon_state = "locnull" | |||
return | |||
target = locate(/mob/living/simple_animal/ancestor_wisp) |
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/clothing/under/pluvia | ||
name = "pluvia suit" | ||
desc = "" |
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.
у них и так вроде не будет описания, это тут лишнее. Или если перегрузка нужна, можно было бы хотя бы desc = null
@@ -3,6 +3,7 @@ | |||
var/list/mob/remote_hearing | |||
|
|||
var/next_telepathy_clue = 0 | |||
var/ignore_telepathy_distants = FALSE |
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.
Ситуация
Телепатия начинает портить сообщение если цель прослушки слишком далеко от тебя. В нашем случае речь идет АЖ о другом слое, так что сообщение должно портиться. Я добавил IGNORE_DISTANTS, чтобы в /obj/effect/proc_holder/spell/no_target/ancestor_call/cast вызывать user.toggle_telepathy_hear с IGNORE_DISTANTS = TRUE
Ужасный костыль, но решения лучше как-то в голову не пришло
@WhaleNotPower а почему у женских кукол между ног пенис? Там вот этот нижний пиксель посередине не подходит по оттенку к остальной обводке/шейдингу и больше похож на висящую головку пениса. Я это спросил у фат фата, он ответил что "че ты докопался, это всего два пикселя", но проведя сложные математические рассчеты, если у нас тайл 32х32 пикселя и 2х2 метра, то 2 пикселя будет 12 с половиной сантиметров примерно что как раз ну такой норм размер для неэрегированного пениса. Этому будут какие-то лорные объяснения или это просто ошибка? А, ну и сзади там тоже между ног под булками лишний пиксель как будто яйки |
@@ -782,6 +787,13 @@ | |||
..() | |||
if(!mind.assigned_role) | |||
mind.assigned_role = "default" //default | |||
//Pluvia social credit system | |||
if(mind.assigned_job.title in list("Captain","Head of Security","Warden","Security Officer","Security Cadet","Blueshield Officer","Internal Affairs Agent")) |
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.
помот может хардкод надо будет еще заменить на datum/job::name, но сейчас это у нас проблема всех джоб списков и надо будет потом отдельно и везде решать.
Тут можно только еще список как статик сделать, но не критично
/client/proc/bless(mob/living/carbon/human/T as mob in player_list) | ||
set category = "Fun" | ||
set name = "Bless" | ||
set desc = "Пускай знает, что после смерти попадет в рай" | ||
T.bless() | ||
log_admin("[key_name(usr)] bless [key_name(T)]") | ||
message_admins("<span class='notice'>[key_name_admin(usr)] bless [key_name(T)]</span>") | ||
|
||
/client/proc/custom_haram(mob/living/carbon/human/T as mob in player_list) | ||
set category = "Fun" | ||
set name = "Custom Haram" | ||
set desc = "Накидывает очки греха вручную" |
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.
species-специфичные вещи кидать в общие админ кнопки будет странно и запутает админов, может чтоб не захламлять панель стоит перенести как кнопки в player panel - там можно будет проверить расу куклы и если плувиан дать пару своих кнопок.
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.
done
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.
ой
не туда done написал
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.
Перенести было бы славно
Но я не шарю за жава-скрипт
code/modules/admin/admin_verbs.dm
Outdated
set category = "Fun" | ||
set name = "Custom Haram" | ||
set desc = "Накидывает очки греха вручную" | ||
var/haram_point= input("Сколько очков греха накидываем?", "Очки Греха") as text|null |
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.
var/haram_point= input("Сколько очков греха накидываем?", "Очки Греха") as text|null | |
var/haram_point = input("Сколько очков греха накидываем?", "Очки Греха") as num|null | |
if(!haram_point) | |
return |
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.
done
code/modules/admin/admin_verbs.dm
Outdated
set name = "Custom Haram" | ||
set desc = "Накидывает очки греха вручную" | ||
var/haram_point= input("Сколько очков греха накидываем?", "Очки Греха") as text|null | ||
var/reason= input("Какая причина?", "Причина?") as text|null |
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.
var/reason= input("Какая причина?", "Причина?") as text|null | |
var/reason = sanitize(input("Какая причина?", "Причина?") as text|null) | |
if(!reason) | |
return |
важный момент, весь вводимый текст надо санитайзить, иначе кто-то может инжектнуть вредоносный код и подвергнуть игроков реальной угрозе
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.
done
sign = TRUE | ||
to_chat(owner, "<span class='notice'>Ваш уровень кармы повышен!</span>") | ||
else | ||
to_chat(usr, "<span class='notice'>У вас нет права голоса</span>") |
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.
тут какой-то более IC-шный фидбек нужен, типо вы пытаетесь подписать но бумага не реагирует на вас, или что-то такое. Сейчас очень OOC звучит.
if(next_ring > world.time) | ||
to_chat(user, "<span class='notice'>Пожалуйста подождите [round((next_ring - world.time) * 0.1, 0.1)] секунд</span>") | ||
return | ||
next_ring = world.time + 30 SECONDS |
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.
есть ряд специальных макросов вроде COOLDOWN_DECLARE и прочие COOLDOWN_*, для простоты и лучшего оформления кода, но это опционально
if(istype(I,/obj/item/weapon/melee/pluvia_gong_baton)) | ||
ring(user) | ||
|
||
/mob/living/simple_animal/ancestor_wisp |
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.
Они все же более материальные чем госты
как минимум их можно убить, так что они уже living
@@ -0,0 +1,111 @@ | |||
#define DEADLY_HARAM "maximum_haram_detected" | |||
|
|||
/datum/religion/pluvia |
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.
как отдельная религия у нас нигде не будет забавных интерактов с обычными культами и священниками? Типо захвата церкви или что-то такое @KIBORG04 @LudwigVonChesterfield
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.
Если их культист или священник завербует, то у них все приколы расы отвалятся вместе с религией без права на реанимацию.
code/modules/admin/admin_verbs.dm
Outdated
@@ -1067,7 +1067,7 @@ var/global/list/admin_verbs_hideable = list( | |||
set category = "Fun" | |||
set name = "Custom Haram" | |||
set desc = "Накидывает очки греха вручную" | |||
var/haram_point= sanitize(input("Сколько очков греха накидываем?", "Очки Греха") as text|null) | |||
var/haram_point= sanitize(input("Сколько очков греха накидываем?", "Очки Греха") as num|null) |
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.
поменял обратно
меня не устраивает работа ментейнеров, почему этот МР еще не смержен? вот сначала делают такие грубые ошибки как не мержить такой крутой ПР а потом жалуются что онлайн 2 тела |
Описание изменений
Добавление новой расы с своим механом
Кратко:
Есть раса Pluvia. Они могут поднимать свой уровень кармы. Если они поднимут карму достаточно сильно, то после смерти они не гостаются, а попадают в рай. Еще живые представители этой расы могут звонить в рай и общаться с мертвыми. Мертвые тоже могут звонить живым.
Не кратко:
/*
Как это должно работать
Когда ты берешь расу PLUVIAN, тебя сразу заносит в members /datum/religion/pluvia
add_member выдает соответствующие спеллы и заводит нужные регистрации сигналов
remove_member забирает спеллы и регистрации
У этой религии заведены 5 заповедей, которые нельзя нарушать. Под каждую заповедь заведен соотвествующий прок
За нарушение заповеди mob получает haram_point, превышение лимита которого mob выгоняется из религии
/datum/religion/pluvia/proc/harm_haram - принимает сигналы атак. Безоружные удары, выстрелы, броски, вскрытия горла ножом, доставание мозга,
удары предметами и другие явно агрессивные дейстивия накидывают тут haram_point. Но только если жертва- тоже плувиец. Все остальные расы можно дубасить сколько душе угодно
Дизармы, стан дубиной, удары деффибами, шприцы, автоинджекторы, удар предметом без урона и т.д. игнорируются этим проком
/datum/religion/pluvia/proc/suicide_haram - принимает сигналы от суицида. Я вспомнил только петлю и выстрел в рот.
/datum/religion/pluvia/proc/drunk_haram - принимает сигнал от бухла и наркотиков.
Если упороться или довести алкогольное состояние до второй стадии, ты мнговенно трезвлеешь и тебе накидывает харам.
Я осознано не зовел проверку на то, сам ли он выпил или его напоили.
Это сделано для того чтобы у злоумышленников была возможность быстро накинуть харам_поинтов и только потом убить плувийца без последствий в виде звонков с того света.
/datum/religion/pluvia/proc/food_haram - Если ешь палочками (вилкой-ложкой) - все ок. Ешь руками - лови харам поинты
/datum/religion/pluvia/proc/carpet_haram - Если ходишь по ковру в обуви. Долго объяснять, просто нельзя и все.
У всех /human появилась новая переменная - social_credit
Для плувийцев она важна, потому что она определяет попадет ли плувиец в рай после смерти
Для всех остальных это возможность поднимать social_credit плувийцам.
Плувийский спелл - /obj/effect/proc_holder/spell/create_bless_vote
создает рекомендательное письмо, которое и повышает social_credit owner-а письма за счет social_сredit подписавшего
Разные расы стартуют с разным запасом social_credit
1 )Все /human, кроме перечисленных ниже начинают с social_credit = 1. Соответственно они могут подписать кому-то рекомендательное письмо только один раз
2) Плувийцы начинают с нулевым запасом social_credit, потому что предполагается, что свой social_credit они потратили еще до начала смены и теперь им надо фармить их прямо на станции.
3) Дионы начинают с 3 social_credit, потому что диона это много нимф, которые сплелись в месте. У самых больших и жирных есть по 1 social_credit, а в сумме получается 3. Получается аж 3 возможности подписать письмо
4) СПУ начинают с 0 social_credit, потому что у них нет души
5) Големы начинают с 0 social_credit, потому что они подневольные и не могут за себя отвечать
6) Подмены начинают с 0 social_credit, потому что они слишком молодые чтобы голосовать. (И чтобы плувийцы social_credit не фармили с грядки)
Кроме собственно расы, на social_credit влияет еще наличие импланта лояльности и майндщилда.
Если в тебе такие импланты, то твои сошиал_кредиты обнуляются.
Это сделано для того, чтобы плувийцы (раса с самым большим ролькохант потенциалом) не шла в сб и не помогала сб и главам ловить ролей за social_credit.
Раса дизайнилась именно под социалку с обычным персоналом и с ролями.
Если перед смертью плувиец успел собрать social_credit_threshold, то в его /datum/species/pluvian/handle_death происходит /mob/living/carbon/human/proc/reborn(), который создает ему тело в раю (место которое будет на цк слое)
Предполагается, что в раю уже можно бухать-курить, ходить по коврам и т.д. Так что этот моб remove_member из /datum/religion/pluvia, потому что в сигналах больше нет смысла.
Также у моба стираются все спеллы - просто на всякий случай.
Если тело плувийца пытаются реанимировать, а сам он успешно попал в рай, ему предложат вернуться в тело через /mob/living/carbon/human/proc/return_to_body_dialog()
При согласии, он опять влетает в свое тело и его отписывают от всех haram сигналов (потому что он теперь живой святой и ему теперь можно грешить при жизни).
Крутые светящиеся глаза бонусом. У живых святых нет /obj/effect/proc_holder/spell/create_bless_vote,
потому что им больше не надо собирать собирать письма, они и так и так после смерти попадут снова в рай.
Зато им выдадут 2 social_credit, которые они смогут кому-то передеать, если захотят.
Все спеллы которые были у него при жизни возвращаются через список spell_to_remember, который заполняется в reborn()
Плувийский спелл - /obj/effect/proc_holder/spell/no_target/ancestor_call создан для связи живых плувийцев и плувийцев в раю.
В раю стоят /obj/structure/pluvia_gong. Если живой плувиец инициатор ancestor_call, то ему создают копию его тела в раю на одном из свободных в данный момент гонгов.
если вы дочитали до этого места то при обсуждении этой расы на форуме, как-нибудь невзначай упомяните в тексте своего сообщения фразу "рисовая шяпка". Так вы обозначите, что не просто пробежались по ПР-у глазами, а имеете объективное мнение.
Копия обладает спрайтом звоняещего, но с прозрачностью как у госта. Когда плувиец говорит, фальшивка повторяет за ним все слова. Таким образом можно болтать с мертвыми.
Если мертвый плувиец хочет выйти на связь с живым, он может ударить по гонгу специальной палочкой и выбрать себе цель звонка.
Цель звонка оповестят об этом специальным алертом и звуком гонга. Звонок можно сбросить, нажав на алерт
Если живой плувиец захочет поболтать, то он может просто кастануть ancestor_call и спелл сработает именно к тому гонгу, откуда ему звонили.
За сеанс связи нужно платить 2-мя брейндемедж.
social_credit_threshold должен высчитываться вначале смены исходя из списка живых игроков по такой формуле:
social_credit_threshold = (кол-во людей на смене)/10 + 2.
haram_threshold тоже должен как-то высчитываться, но я еще не придумал по какой формуле это будет справедливо.
В раю есть объект который раз в N времени позволяет попасть на станцию в роли светлячка - невидимого моба, который очень медленно передвигается и больше ничего не умеет.
Светлячок может убиться в любой момент, чтобы попасть обратно в рай.
*/
Почему WIP (уже нет):
Код:
Спрайты:
Must have
Несильно надо, но было бы прикольно
Спрайт бога (взял Джавелин)
Две статуи для рая
Прически (Взяла Вейл)
Luna-rice ✔
Рог Изобилия
РИГи
Маппинг:
Замапить рай ✔
Как тестить расу:
Делаем late join
Наверх пойдешь - механики харама проверишь
Вниз пойдешь - механики виспа проверишь.
Направо пойдешь - шмотки заценишь (в лодауте они тоже есть)
В центре останешься - рекомендательные письма, реанимацию проверишь и мартышек посмотришь
Сдохнешь - в рай попадешь:
Если лень накидывать social_credit через VV, то ПКМ по мобу - админ_верб bless и взрываетесь в комнате с бомбой. Вы в раю.
Черновик лора: https://docs.google.com/document/d/13moebgA9XCFErJLCYjcrBLs9t3wg32Jmdkg2g0sHLL4/edit#heading=h.cxz2x3t4ta50
Почему и что этот ПР улучшит
Из рисунка выше мы можем выделить сильные стороны дизайна этой расы
Из минусов
Авторство
FatFat
Чеинжлог
🆑 FatFat
🆑 WhalePower
🆑 Javeliiner
🆑 UDaV73rus
🆑 Tap0r
🆑 Luduk
🆑 AirBlack
🆑 ArthurPhilipDent
🆑 Deadawe