-
Notifications
You must be signed in to change notification settings - Fork 440
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
Add: [bounty] Voice update #6326
base: master220
Are you sure you want to change the base?
Conversation
завтра дошлифую |
ссылка не на #отчёты-по-предложениям. |
🤓 |
@@ -111,6 +114,7 @@ GLOBAL_LIST_EMPTY(PDA_Manifest) | |||
/datum/datacore/proc/manifest() | |||
for(var/mob/living/carbon/human/H in GLOB.player_list) | |||
manifest_inject(H) | |||
SEND_GLOBAL_SIGNAL(COMSIG_SPECIAL_MASS_STORE_VOICE, GLOB.capitalist_manifest) |
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.
в проке происходит другое, а тут отправляем сигнал про голоса, шо? Измени название сигнала на что то подобное COMSIG_MANIFEST_INITIALIZE. Также, зачем нам передавать в аргументы глобальный список, если мы и так сможем из сигнальных проков иметь доступ к глобальному списку.
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.
так этот сигнал не специально для этого прока. Этот сигнал ну типо для массового запоминания по депортаментам
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/datums/voice.dm
Outdated
/datum/voice_model | ||
var/mob/host = null //Носитель этой хуеты | ||
var/tts_seed_string = "Arthas" | ||
var/voice_gender = MALE | ||
var/voice_name = "Неизвестный" | ||
var/real_voice_name = "Неизвестный" | ||
|
||
var/list/famous_voices = list() | ||
var/list/famous_faces = list() |
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.
/datum/component
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/__DEFINES/dcs/signals.dm
Outdated
//signal for mass roundstart store voice (very english) | ||
#define COMSIG_SPECIAL_MASS_STORE_VOICE "store_voice" | ||
|
||
#define COMSIG_JUST_LIST_ADD_VOICE "list_add_voice" |
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.
неиспользуемый сигнал со странным названием, just и list тут не нужны
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/datums/datacore.dm
Outdated
H.adv_voice.RegSignals() | ||
H.UpdateVoice() //На всякий | ||
var/prom_voice = H.adv_voice.voice_name | ||
|
||
var/datum/job/prom_job = SSjobs.GetJob(H.job) | ||
|
||
for(var/dep_flag in prom_job.college_department) //:catsmile: | ||
if(!isnull(GLOB.capitalist_manifest?[dep_flag])) | ||
GLOB.capitalist_manifest[dep_flag][prom_voice] = H.real_name | ||
else | ||
GLOB.capitalist_manifest[dep_flag] = list((prom_voice) = (H.real_name)) | ||
|
||
//SEND_GLOBAL_SIGNAL(COMSIG_SPECIAL_MASS_STORE_VOICE, GLOB.capitalist_manifest) | ||
//При создании рекордсов еще берется и голос, боже помилуй чтобы это ничего не сломало |
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.
Регистрация идет на подсистему поскольку так работают глобальные сигналы. В не глобальных сигналах нет смысла. Я уберу коменты на русском кроме job.dm поскольку там важное предупреждение
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.
Я не об этом. Мы начинаем регистрировать сигналы тогда, когда происходит иньекция в манифест - это не нужно, нам нужно при присоединении войсмодели их регистрировать уже. Если это переделать на компонент - избавит нас от нужды создавать и вызывать лишние проки, достаточно будет зарегистрировать сигнал в RegisterWIthParent
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/datums/voice.dm
Outdated
if(list_voice?["AbsolutePomny"]) | ||
famous_voices |= list_voice["AbsolutePomny"] |
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.
"AbsolutePomny" - это что? Нужно использовать нормальные названия ключей
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/datums/voice.dm
Outdated
//Специфическая функция которая добавляет что нужно короче | ||
/datum/voice_model/proc/SpecialMassAddVoice(suka, list/list_voice) | ||
SIGNAL_HANDLER | ||
var/datum/job/prom_job = SSjobs.GetJob(host.job) //Нужно чтобы небыло предупеждений |
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.
В таком виде мержить не стоит из-за наличия большого количества костылей. Для приведения в минимальный, готовый к мержу вид стоит сделать следующее:
- Войсмодель нужно переделать на компонент, а не изобретать велосипед из проков, которые еще и вручную придется вызывать в разных местах. (RegisterWithParent - в нем регистрируют сигналы, Initialize компонента - тут будем уже деструктуризировать переданную куклу и получать голоса и другие варки)
- Убрать закомменченный код
- Переделать запоминание лиц при экзамайне на сигналы (COMSIG_MOB_RUN_EXAMINATE использовать)
бляяяяяяяяяяять |
сидеть еще компоненты курить |
На всякий поставил лейбл кандидата. Такой ПР на вид конфликтный т.к. существует вероятность что откатят такое. |
#define isIdCard(A) (istype(A, /obj/item/card/id)) | ||
|
||
#define isWallet(A) (istype(A, /obj/item/storage/wallet)) |
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.
#define isIdCard(A) (istype(A, /obj/item/card/id)) | |
#define isWallet(A) (istype(A, /obj/item/storage/wallet)) | |
#define isidcard(A) (istype(A, /obj/item/card/id)) | |
#define iswallet(A) (istype(A, /obj/item/storage/wallet)) |
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.
Чем не нравится стиль с#
@@ -0,0 +1,155 @@ | |||
#define GENDER_NAME_UNKNOW list(MALE = "Незнакомец", FEMALE = "Незнакомка", NEUTER = "Неизвестный", PLURAL = "Неизвестный") |
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.
#define GENDER_NAME_UNKNOW list(MALE = "Незнакомец", FEMALE = "Незнакомка", NEUTER = "Неизвестный", PLURAL = "Неизвестный") | |
#define GENDER_NAME_UNKNOWN list(MALE = "Незнакомец", FEMALE = "Незнакомка", NEUTER = "Неизвестный", PLURAL = "Неизвестный") |
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.
Упс
@@ -1706,6 +1706,11 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) | |||
/atom/proc/GetTTSVoice() | |||
return tts_seed | |||
|
|||
/mob/proc/UpdateVoice() |
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/proc/UpdateVoice() | |
/mob/proc/update_voice() |
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.
Это стиль с# был
|
||
return get_gender_unknown_name(target.adv_voice.voice_gender) | ||
|
||
/datum/voice_model/proc/I_do_remember(mob/target) |
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/voice_model/proc/I_do_remember(mob/target) | |
/datum/voice_model/proc/can_remember_voice(mob/target) |
Не делаем, а можем ли сделать
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.
Пупупу
. = famous_voices?[target.adv_voice.voice_name] | ||
if(.) |
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.
?!
Точка здесь тогда бессмысленна, если мы выводим либо TRUE или 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.
Точка имеет смысл, иначе вывод неизвестный
voice_name = GetVoice() | ||
adv_voice = new(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.
Мертвецам голос зачем??
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.
Голос есть у всех мобов, но регистрация сигналов идёт только в daracore (экипаж) это нужно для корректной работы
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 не учел эту залупу
var/voice_name = "неизвестный голос" | ||
var/datum/voice_model/adv_voice = 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.
Да, я переделаю это в компонент. Сука почему вы раньше не сказали так сдалать
@@ -577,9 +577,12 @@ GLOBAL_LIST_INIT(intents, list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM | |||
length = length_char(oldname) | |||
pos = findtextEx_char(objective.explanation_text, oldname) | |||
objective.explanation_text = copytext_char(objective.explanation_text, 1, pos)+newname+copytext_char(objective.explanation_text, pos+length) | |||
UpdateVoice() | |||
if(LAZYLEN(mass_update) != 0) |
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(LAZYLEN(mass_update) != 0) | |
if(!LAZYLEN(mass_update)) |
Но я может немного туплю по спискам, но если список пустой то он и так 0, а значит 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.
Я сделал это поскольку не имею возможности быстро тестировать поведение бульена в таких моментах (загрузка по 5 минут :aga:)
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.
Ну так то да, можно было и так
@@ -3,6 +3,7 @@ | |||
"\[" = "", "]" = "", "{" = "", "}" = "") | |||
|
|||
/mob/proc/say(message, verb = "says", sanitize = TRUE, ignore_speech_problems = FALSE, ignore_atmospherics = FALSE, ignore_languages = FALSE) | |||
UpdateVoice() |
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.
Мертвецы не говорят
#define GENDER_NAME_UNKNOW list(MALE = "Незнакомец", FEMALE = "Незнакомка", NEUTER = "Неизвестный", PLURAL = "Неизвестный") | ||
#define FACE_MOD_SWITCH TRUE | ||
//Новая система голоса | ||
/datum/voice_model |
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
А можно было оставить для /mob/living
ибо у мертвецов /mob/dead
нету голоса
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 и dead, разве мертвый от живого не отличается только не работающим Life?
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,3 +1,4 @@ | |||
#define PRIMITIVE_STATION_DEPARTMENTS list("Command", "Medical", "Engineering", "Science", "Security", "Cargo", "Support", "Civilian") |
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.
А чем это отличается от station_departments
? Вроде для того же самого используется.
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.
Это используется так как GLOB.station_departaments иницилилизуруется во время запуска, примитив доступен для установки в качестве значения прямо так
equip_to_slot_if_possible(prom, ITEM_SLOT_CLOTH_INNER) | ||
|
||
tts_seed = "Chen" | ||
equip_to_slot_if_possible(punpun_id, ITEM_SLOT_ID) |
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.
Пун пуну не нужны часы за сервис. Я изменил немного пун пуна поскольку автор предложки давно просил отказаться от ошейника (убогая текстура на Монке)
Костылей тут почти нет. Voice_model будет изменена на компоненты. Конфликтности не вижу на текущий момент (если новый сигнал фонда помощи уже в мердже то переделаю запоминание лиц) |
Описание
Добавляет новый датум voice_model. Название - ложь. Он служит для запоминания и вспоминания голосов (и лиц)
rename_self добавлен новый аргумент mass_update, он отвечает за то какие отделы запомнят новое имя челикса. Всем профессиям был указан департамент. Поскольку были сложности с изменением имен боргов и ИИ они теперь тупо на вайтлисте (ну, имена всех не хуманов достпуны и так, без запоминания). (саботеры будут жить). Добавлен новый параметр в mind - special_role_meta_know. Если он true то ты будешь всегда знать имена людей с такой же спец ролью. Обновлонее голоса перенесено из Life в say (нужно будет хорошенько потестить)
Причина создания ПР
https://discord.com/channels/617003227182792704/755125334097133628/1308878958451752981
Демонстрация изменений
Изменения для смертных: теперь ты будешь знать голоса только коллег из отдела и голоса глав. Чтобы запомнить новые голоса достаточно шифткликнуть. Клоуны и мимов корректно знают после выбора имени
Тесты
Боже, оно работает?