Skip to content
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

Open
wants to merge 11 commits into
base: master220
Choose a base branch
from

Conversation

Pelmenik123
Copy link
Contributor

@Pelmenik123 Pelmenik123 commented Jan 6, 2025

Описание

Добавляет новый датум voice_model. Название - ложь. Он служит для запоминания и вспоминания голосов (и лиц)
rename_self добавлен новый аргумент mass_update, он отвечает за то какие отделы запомнят новое имя челикса. Всем профессиям был указан департамент. Поскольку были сложности с изменением имен боргов и ИИ они теперь тупо на вайтлисте (ну, имена всех не хуманов достпуны и так, без запоминания). (саботеры будут жить). Добавлен новый параметр в mind - special_role_meta_know. Если он true то ты будешь всегда знать имена людей с такой же спец ролью. Обновлонее голоса перенесено из Life в say (нужно будет хорошенько потестить)

Причина создания ПР

https://discord.com/channels/617003227182792704/755125334097133628/1308878958451752981

Демонстрация изменений

Изменения для смертных: теперь ты будешь знать голоса только коллег из отдела и голоса глав. Чтобы запомнить новые голоса достаточно шифткликнуть. Клоуны и мимов корректно знают после выбора имени

Тесты

Боже, оно работает?

@github-actions github-actions bot added the Merge Conflict This doesn't seem right label Jan 6, 2025
@github-actions github-actions bot removed the Merge Conflict This doesn't seem right label Jan 6, 2025
@Pelmenik123
Copy link
Contributor Author

завтра дошлифую

@Pelmenik123 Pelmenik123 changed the title Add: [bounty] (cringe) Voice update Add: [bounty] Voice update Jan 7, 2025
@BeebBeebBoob
Copy link
Member

ссылка не на #отчёты-по-предложениям.

@BeebBeebBoob BeebBeebBoob added the Требует отчёт предложки Всё ещё проходит голосовалки, либо ещё нету самой предложке в книге. label Jan 8, 2025
@Pelmenik123
Copy link
Contributor Author

🤓

@@ -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)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

в проке происходит другое, а тут отправляем сигнал про голоса, шо? Измени название сигнала на что то подобное COMSIG_MANIFEST_INITIALIZE. Также, зачем нам передавать в аргументы глобальный список, если мы и так сможем из сигнальных проков иметь доступ к глобальному списку.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вызов сигнала происходит в данном прока ибо данный прок отвечает за раундстарт заполнение манифеста что мне и нужно. Название такое поскольку это "уневирсальный" сигнал

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Такое не нужно, нужно переименовать. Текущее название сигнала никак не связано с тем, что происходит в проке

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

так этот сигнал не специально для этого прока. Этот сигнал ну типо для массового запоминания по депортаментам

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Все равно название менять под прок, а не под то, для чего он используется.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Система стиля говна

Comment on lines 4 to 12
/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()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

это лучше сделать компонентом, в текущем виде мы пытаемся изобрести велосипед из проков, которые уже есть на готовой кодбазе компонентов

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

что за компоненты?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/datum/component

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

буээээ

//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"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

неиспользуемый сигнал со странным названием, just и list тут не нужны

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это забыл удалить

Comment on lines 151 to 164
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)
//При создании рекордсов еще берется и голос, боже помилуй чтобы это ничего не сломало
Copy link
Contributor

@Antoonij Antoonij Jan 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. сигналы должны регистрироваться со стороны войсмодели и вызываться там же, нам не нужно где то из датакора вызывать их регистрацию и обновлять голоса. Именно поэтому желательно переделать голоса на компонент
  2. убрать комментарии на русском языке

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Регистрация идет на подсистему поскольку так работают глобальные сигналы. В не глобальных сигналах нет смысла. Я уберу коменты на русском кроме job.dm поскольку там важное предупреждение

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я не об этом. Мы начинаем регистрировать сигналы тогда, когда происходит иньекция в манифест - это не нужно, нам нужно при присоединении войсмодели их регистрировать уже. Если это переделать на компонент - избавит нас от нужды создавать и вызывать лишние проки, достаточно будет зарегистрировать сигнал в RegisterWIthParent

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

к слову регистрация сигналов в манифесте происходит в целях оптимизации

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

посмотрю что такое компоненты, боже помилуй

Comment on lines 31 to 32
if(list_voice?["AbsolutePomny"])
famous_voices |= list_voice["AbsolutePomny"]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"AbsolutePomny" - это что? Нужно использовать нормальные названия ключей

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

это я забыл удалить

Comment on lines 26 to 29
//Специфическая функция которая добавляет что нужно короче
/datum/voice_model/proc/SpecialMassAddVoice(suka, list/list_voice)
SIGNAL_HANDLER
var/datum/job/prom_job = SSjobs.GetJob(host.job) //Нужно чтобы небыло предупеждений
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

убрать комментарии на русском языке/перевести их

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

да

Copy link
Contributor

@Antoonij Antoonij left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В таком виде мержить не стоит из-за наличия большого количества костылей. Для приведения в минимальный, готовый к мержу вид стоит сделать следующее:

  1. Войсмодель нужно переделать на компонент, а не изобретать велосипед из проков, которые еще и вручную придется вызывать в разных местах. (RegisterWithParent - в нем регистрируют сигналы, Initialize компонента - тут будем уже деструктуризировать переданную куклу и получать голоса и другие варки)
  2. Убрать закомменченный код
  3. Переделать запоминание лиц при экзамайне на сигналы (COMSIG_MOB_RUN_EXAMINATE использовать)

@Antoonij Antoonij added the Do Not Merge Либо не прошла предложка, либо кто-то не доволен. label Jan 8, 2025
@Pelmenik123
Copy link
Contributor Author

бляяяяяяяяяяять

@Pelmenik123
Copy link
Contributor Author

сидеть еще компоненты курить

@BeebBeebBoob BeebBeebBoob added Testmerge candidate Этот PR будет в тестмерже после определенного времени and removed Требует отчёт предложки Всё ещё проходит голосовалки, либо ещё нету самой предложке в книге. labels Jan 8, 2025
@BeebBeebBoob
Copy link
Member

На всякий поставил лейбл кандидата. Такой ПР на вид конфликтный т.к. существует вероятность что откатят такое.
Также костыли. Много чего подправить, а то переделать. Самое главное, нарушение стиля.
/proc/DoSomeItem()
Поменять на
/proc/do_some_item()

Comment on lines +55 to +57
#define isIdCard(A) (istype(A, /obj/item/card/id))

#define isWallet(A) (istype(A, /obj/item/storage/wallet))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#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))

Copy link
Contributor Author

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 = "Неизвестный")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#define GENDER_NAME_UNKNOW list(MALE = "Незнакомец", FEMALE = "Незнакомка", NEUTER = "Неизвестный", PLURAL = "Неизвестный")
#define GENDER_NAME_UNKNOWN list(MALE = "Незнакомец", FEMALE = "Незнакомка", NEUTER = "Неизвестный", PLURAL = "Неизвестный")

Copy link
Contributor Author

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()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут названия пороков решили на пофиг сделать.
Сохраняем стиль

Suggested change
/mob/proc/UpdateVoice()
/mob/proc/update_voice()

Copy link
Contributor Author

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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/datum/voice_model/proc/I_do_remember(mob/target)
/datum/voice_model/proc/can_remember_voice(mob/target)

Не делаем, а можем ли сделать

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Пупупу

Comment on lines +140 to +141
. = famous_voices?[target.adv_voice.voice_name]
if(.)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?!
Точка здесь тогда бессмысленна, если мы выводим либо TRUE или FALSE

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Точка имеет смысл, иначе вывод неизвестный

Comment on lines +29 to +30
voice_name = GetVoice()
adv_voice = new(src)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мертвецам голос зачем??

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Голос есть у всех мобов, но регистрация сигналов идёт только в daracore (экипаж) это нужно для корректной работы

Copy link
Contributor Author

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это стоит превратить в элемент или компонент, добавить сигналы на получения голоса. Если элемент удалят, то игра пойдет по старой методичке и ничего не поломается. И мертвецам это не нужно

Copy link
Contributor Author

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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я думаю можно сделать и так

Suggested change
if(LAZYLEN(mass_update) != 0)
if(!LAZYLEN(mass_update))

Но я может немного туплю по спискам, но если список пустой то он и так 0, а значит FALSE а значит можно поменять с помощью !

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я сделал это поскольку не имею возможности быстро тестировать поведение бульена в таких моментах (загрузка по 5 минут :aga:)

Copy link
Contributor Author

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()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мертвецам голос не нужен. Дайте живым. И да, пусть будет выдавать ошибку на это если дойдет до мертвецов

Copy link
Contributor Author

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
Copy link
Member

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 нету голоса

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Всмысле living и dead, разве мертвый от живого не отличается только не работающим Life?

Copy link
Contributor Author

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")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А чем это отличается от station_departments? Вроде для того же самого используется.

Copy link
Contributor Author

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)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Как Пун Пун связан с предложкой? И почему ему нужны часы за сервис?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Пун пуну не нужны часы за сервис. Я изменил немного пун пуна поскольку автор предложки давно просил отказаться от ошейника (убогая текстура на Монке)

@Pelmenik123
Copy link
Contributor Author

Костылей тут почти нет. Voice_model будет изменена на компоненты. Конфликтности не вижу на текущий момент (если новый сигнал фонда помощи уже в мердже то переделаю запоминание лиц)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Do Not Merge Либо не прошла предложка, либо кто-то не доволен. Testmerge candidate Этот PR будет в тестмерже после определенного времени
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants