Skip to content

Commit

Permalink
tweak: add chat boxes, port from Official Paradise
Browse files Browse the repository at this point in the history
  • Loading branch information
ROdenFL committed Dec 11, 2023
1 parent 9a3825e commit 3b1fc24
Show file tree
Hide file tree
Showing 49 changed files with 373 additions and 214 deletions.
7 changes: 7 additions & 0 deletions code/__DEFINES/chat_box_defines.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#define chat_box_regular(str) ("<div class='boxed_message'>" + str + "</div>")
#define chat_box_examine(str) ("<div class='boxed_message left_align_text'>" + str + "</div>")
#define chat_box_red(str) ("<div class='boxed_message red_border'>" + str + "</div>")
#define chat_box_green(str) ("<div class='boxed_message green_border'>" + str + "</div>")
#define chat_box_notice(str) ("<div class='boxed_message notice_border'>" + str + "</div>")
#define chat_box_healthscan(str) ("<div class='boxed_message notice_border left_align_text'>" + str + "</div>")
#define chat_box_notice_thick(str) ("<div class='boxed_message notice_border thick_border'>" + str + "</div>")
30 changes: 16 additions & 14 deletions code/controllers/subsystem/jobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -443,30 +443,32 @@ SUBSYSTEM_DEF(jobs)
alt_title = H.mind.role_alt_title

CreateMoneyAccount(H, rank, job)

to_chat(H, "<B>Вы <span class='red'>[alt_title ? alt_title : rank]</span>.</B>")
to_chat(H, "<b>На этой должности вы отвечаете непосредственно перед <span class='red'>[replacetext(job.supervisors,"the ","")]</span>. Особые обстоятельства могут это изменить.</b>")
to_chat(H, "<b>Для получения дополнительной информации о работе на станции, см. <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure\">Стандартные Рабочие Процедуры (СРП)</a></b>")
var/list/L = list()
L.Add("<B>Вы <span class='red'>[alt_title ? alt_title : rank]</span>.</B>")
L.Add("<b>На этой должности вы отвечаете непосредственно перед <span class='red'>[replacetext(job.supervisors,"the ","")]</span>. Особые обстоятельства могут это изменить.</b>")
L.Add("<b>Для получения дополнительной информации о работе на станции, см. <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure\">Стандартные Рабочие Процедуры (СРП)</a></b>")
if(job.is_service)
to_chat(H, "<b>Будучи работником отдела Обслуживания, убедитесь что прочли <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Service&#41\">СРП своего отдела</a></b>")
L.Add("<b>Будучи работником отдела Обслуживания, убедитесь что прочли <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Service&#41\">СРП своего отдела</a></b>")
if(job.is_supply)
to_chat(H, "<b>Будучи работником отдела Снабжения, убедитесь что прочли <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Supply&#41\">СРП своего отдела</a></b>")
L.Add("<b>Будучи работником отдела Снабжения, убедитесь что прочли <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Supply&#41\">СРП своего отдела</a></b>")
if(job.is_command)
to_chat(H, "<b>Будучи важным членом Командования, убедитесь что прочли <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Command&#41\">СРП своего отдела</a></b>")
L.Add("<b>Будучи важным членом Командования, убедитесь что прочли <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Command&#41\">СРП своего отдела</a></b>")
if(job.is_legal)
to_chat(H, "<b>Ваша должность требует полного знания <a href=\"https://ss220.space/wiki/index.php/Space_Law\">Космического Закона</a> и <a href=\"https://ss220.space/wiki/index.php/Legal_Standard_Operating_Procedure\">Правовых Стандартных Рабочих Процедур</a></b>")
L.Add("<b>Ваша должность требует полного знания <a href=\"https://ss220.space/wiki/index.php/Space_Law\">Космического Закона</a> и <a href=\"https://ss220.space/wiki/index.php/Legal_Standard_Operating_Procedure\">Правовых Стандартных Рабочих Процедур</a></b>")
if(job.is_engineering)
to_chat(H, "<b>Будучи работником Инженерного отдела, убедитесь что прочли <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Engineering&#41\">СРП своего отдела</a></b>")
L.Add("<b>Будучи работником Инженерного отдела, убедитесь что прочли <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Engineering&#41\">СРП своего отдела</a></b>")
if(job.is_medical)
to_chat(H, "<b>Будучи работником Медицинского отдела, убедитесь что прочли <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Medical&#41\">СРП своего отдела</a></b>")
L.Add("<b>Будучи работником Медицинского отдела, убедитесь что прочли <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Medical&#41\">СРП своего отдела</a></b>")
if(job.is_science)
to_chat(H, "<b>Будучи работником Научного отдела, убедитесь что прочли <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Science&#41\">СРП своего отдела</a></b>")
L.Add("<b>Будучи работником Научного отдела, убедитесь что прочли <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Science&#41\">СРП своего отдела</a></b>")
if(job.is_security)
to_chat(H, "<b>Будучи работником Службы Безопасности, вам необходимо знание <a href=\"https://ss220.space/wiki/index.php/Space_Law\">Космического Закона</a>, <a href=\"https://ss220.space/wiki/index.php/Legal_Standard_Operating_Procedure\">Правовых СРП</a>, а также <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Security&#41\">СРП своего отдела</a></b>")
L.Add("<b>Будучи работником Службы Безопасности, вам необходимо знание <a href=\"https://ss220.space/wiki/index.php/Space_Law\">Космического Закона</a>, <a href=\"https://ss220.space/wiki/index.php/Legal_Standard_Operating_Procedure\">Правовых СРП</a>, а также <a href=\"https://ss220.space/wiki/index.php/Standard_Operating_Procedure_&#40;Security&#41\">СРП своего отдела</a></b>")
if(job.req_admin_notify)
to_chat(H, "<b>Вы играете на важной для игрового процесса должности. Если вам необходимо покинуть игру, пожалуйста, используйте крио и проинформируйте командование. Если вы не можете это сделать, пожалуйста, проинформируйте админов через админхэлп.</b>")
L.Add("<b>Вы играете на важной для игрового процесса должности. Если вам необходимо покинуть игру, пожалуйста, используйте крио и проинформируйте командование. Если вы не можете это сделать, пожалуйста, проинформируйте админов через админхэлп.</b>")
if(job.is_novice)
to_chat(H, "<b>Ваша должность ограничена во всех взаимодействиях с рабочим имуществом отдела и экипажем станции, при отсутствии приставленного к нему квалифицированного сотрудника или полученного разрешения от вышестоящего начальства. Не забудьте ознакомиться с СРП вашей должности. По истечению срока прохождения стажировки, данная должность более не будет вам доступна. Используйте её для обучения, не стесняйтесь задавать вопросы вашим старшим коллегам!</b>")
L.Add("<b>Ваша должность ограничена во всех взаимодействиях с рабочим имуществом отдела и экипажем станции, при отсутствии приставленного к нему квалифицированного сотрудника или полученного разрешения от вышестоящего начальства. Не забудьте ознакомиться с СРП вашей должности. По истечению срока прохождения стажировки, данная должность более не будет вам доступна. Используйте её для обучения, не стесняйтесь задавать вопросы вашим старшим коллегам!</b>")

to_chat(H, chat_box_green(L.Join("<br>")))

return H

Expand Down
16 changes: 10 additions & 6 deletions code/datums/mind.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2552,7 +2552,8 @@
message_admins("[key_name_admin(usr)] has given [key_name_admin(current)] an uplink")

else if(href_list["obj_announce"])
announce_objectives()
var/list/messages = prepare_announce_objectives()
to_chat(current, chat_box_red(messages.Join("<br>")))
SEND_SOUND(current, sound('sound/ambience/alarm4.ogg'))
log_admin("[key_name(usr)] has announced [key_name(current)]'s objectives")
message_admins("[key_name_admin(usr)] has announced [key_name_admin(current)]'s objectives")
Expand Down Expand Up @@ -2807,11 +2808,14 @@
return A


/datum/mind/proc/announce_objectives()
if(current)
to_chat(current, "<span class='notice'>Your current objectives:</span>")
for(var/line in splittext(gen_objective_text(), "<br>"))
to_chat(current, line)
/datum/mind/proc/prepare_announce_objectives(title = TRUE)
if(!current)
return
var/list/text = list()
if(title)
text.Add("<span class='notice'>Your current objectives:</span>")
text.Add(gen_objective_text())
return text


/datum/mind/proc/find_syndicate_uplink()
Expand Down
21 changes: 11 additions & 10 deletions code/game/gamemodes/devil/devilinfo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -507,16 +507,17 @@ GLOBAL_LIST_INIT(lawlorify, list (
// SECTION: Messages and explanations

/datum/devilinfo/proc/announce_laws(mob/living/owner)
to_chat(owner, "<span class='boldwarning'>You remember your link to the infernal. You are [truename], an agent of hell, a devil. And you were sent to the plane of creation for a reason. A greater purpose. Convince the crew to sin, and embroiden Hell's grasp.</span>")
to_chat(owner, "<span class='boldwarning'>However, your infernal form is not without weaknesses.</span>")
to_chat(owner, "You may not use violence to coerce someone into selling their soul.")
to_chat(owner, "You may not directly and knowingly physically harm a devil, other than yourself.")
to_chat(owner,GLOB.lawlorify[LAW][bane])
to_chat(owner,GLOB.lawlorify[LAW][ban])
to_chat(owner,GLOB.lawlorify[LAW][obligation])
to_chat(owner,GLOB.lawlorify[LAW][banish])
to_chat(owner, "<br/><br/><span class='warning'>Remember, the crew can research your weaknesses if they find out your devil name.</span><br>")

var/list/messages = list()
messages.Add("<span class='boldwarning'>You remember your link to the infernal. You are [truename], an agent of hell, a devil. And you were sent to the plane of creation for a reason. A greater purpose. Convince the crew to sin, and embroiden Hell's grasp.</span>")
messages.Add("<span class='boldwarning'>However, your infernal form is not without weaknesses.</span>")
messages.Add("You may not use violence to coerce someone into selling their soul.")
messages.Add("You may not directly and knowingly physically harm a devil, other than yourself.")
messages.Add(GLOB.lawlorify[LAW][bane])
messages.Add(GLOB.lawlorify[LAW][ban])
messages.Add(GLOB.lawlorify[LAW][obligation])
messages.Add(GLOB.lawlorify[LAW][banish])
messages.Add("<br/><br/><span class='warning'>Remember, the crew can research your weaknesses if they find out your devil name.</span><br>")
return messages

#undef BLOOD_THRESHOLD
#undef TRUE_THRESHOLD
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/devil/game_mode.dm
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
if(!devil_mind.devilinfo)
return
devil_mind.devilinfo.announce_laws(devil_mind.current)
devil_mind.announce_objectives()
devil_mind.prepare_announce_objectives()


/datum/game_mode/proc/printdevilinfo(datum/mind/ply)
Expand Down
6 changes: 4 additions & 2 deletions code/game/gamemodes/devil/true_devil/_true_devil.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,11 @@

/mob/living/carbon/true_devil/Login()
..()
var/list/messages = list()
if(mind.devilinfo)
mind.devilinfo.announce_laws(src)
mind.announce_objectives()
messages.Add(mind.devilinfo.announce_laws(src))
messages.Add(mind.prepare_announce_objectives())
to_chat(mind.current, chat_box_red(messages.Join("<br>")))


/mob/living/carbon/true_devil/death(gibbed)
Expand Down
29 changes: 18 additions & 11 deletions code/game/gamemodes/miniantags/abduction/abduction.dm
Original file line number Diff line number Diff line change
Expand Up @@ -149,29 +149,36 @@
greet_scientist(scientist,team_number)
update_abductor_icons_added(scientist)

/datum/game_mode/abduction/proc/greet_agent(datum/mind/abductor,team_number)
/datum/game_mode/abduction/proc/greet_agent(datum/mind/abductor, team_number)
var/datum/objective/stay_hidden/O = new
abductor.objectives += O
abductor.objectives += team_objectives[team_number]
var/team_name = team_names[team_number]

to_chat(abductor.current, "<span class='notice'>You are an agent of [team_name]!</span>")
to_chat(abductor.current, "<span class='notice'>With the help of your teammate, kidnap and experiment on station crew members!</span>")
to_chat(abductor.current, "<span class='notice'>Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve.</span>")

abductor.announce_objectives()
var/list/messages = list()
messages.Add("<span class='notice'>You are an agent of [team_name]!</span>")
messages.Add("<span class='notice'>With the help of your teammate, kidnap and experiment on station crew members!</span>")
messages.Add("<span class='notice'>Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve.</span>")
messages.Add("<span class='motd'>С полной информацией вы можете ознакомиться на вики: <a href=\"https://wiki.ss220.space/index.php/Abductor\">Абдуктор</a></span>")
messages.Add(abductor.prepare_announce_objectives())
to_chat(abductor.current, chat_box_red(messages.Join("<br>")))
log_game("[abductor] has become an abductor agent.")

/datum/game_mode/abduction/proc/greet_scientist(datum/mind/abductor,team_number)
var/datum/objective/stay_hidden/O = new
abductor.objectives += O
abductor.objectives += team_objectives[team_number]
var/team_name = team_names[team_number]

to_chat(abductor.current, "<span class='notice'>You are a scientist of [team_name]!</span>")
to_chat(abductor.current, "<span class='notice'>With the help of your teammate, kidnap and experiment on station crew members!</span>")
to_chat(abductor.current, "<span class='notice'>Use your tool and ship consoles to support the agent and retrieve human specimens.</span>")

abductor.announce_objectives()
var/list/messages = list()
messages.Add("<span class='notice'>You are a scientist of [team_name]!</span>")
messages.Add("<span class='notice'>With the help of your teammate, kidnap and experiment on station crew members!</span>")
messages.Add("<span class='notice'>Use your tool and ship consoles to support the agent and retrieve human specimens.</span>")
messages.Add("<span class='motd'>For more information, check the wiki page: <a href=\"https://wiki.ss220.space/index.php/Abductor\">Абдуктор</a></span>")
messages.Add(abductor.prepare_announce_objectives())
to_chat(abductor.current, chat_box_red(messages.Join("<br>")))
abductor.current.create_log(MISC_LOG, "[abductor.current] was made into an abductor scientist")
log_game("[abductor] has become an abductor scientist.")

/datum/game_mode/abduction/proc/get_team_console(team_number)
for(var/obj/machinery/abductor/console/C in GLOB.machines)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,11 +143,8 @@
var/datum/objective/abductee/O = new objtype()
SSticker.mode.abductees += H.mind
H.mind.objectives += O
var/obj_count = 1
to_chat(H, "<span class='notice'>Your current objectives:</span>")
for(var/datum/objective/objective in H.mind.objectives)
to_chat(H, "<B>Objective #[obj_count]</B>: [objective.explanation_text]")
obj_count++
var/list/messages = list(H.mind.prepare_announce_objectives())
to_chat(H, chat_box_red(messages.Join("<br>"))) // let the player know they have a new objective
SSticker.mode.update_abductor_icons_added(H.mind)

for(var/obj/item/organ/internal/heart/gland/G in H.internal_organs)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@
/mob/living/simple_animal/hostile/headslug/evented/proc/make_slug_antag(give_default_objectives = TRUE)
mind.assigned_role = SPECIAL_ROLE_HEADSLUG
mind.special_role = SPECIAL_ROLE_HEADSLUG
to_chat(src, "<b><font size=3 color='red'>We are a headslug.</font><br></b>")
to_chat(src, span_changeling("Our eggs can be laid in any dead humanoid, but not in small ones. Use <B>Alt-Click</B> on the valid mob and keep calm for 5 seconds."))
to_chat(src, span_notice("Though this form shall perish after laying the egg, our true self shall be reborn in time."))
var/list/messages = list()
messages.Add("<b><font size=3 color='red'>We are a headslug.</font><br></b>")
messages.Add(span_changeling("Our eggs can be laid in any dead humanoid, but not in small ones. Use <B>Alt-Click</B> on the valid mob and keep calm for 5 seconds."))
messages.Add(span_notice("Though this form shall perish after laying the egg, our true self shall be reborn in time."))

SEND_SOUND(src, sound('sound/vox_fem/changeling.ogg'))
if(give_default_objectives)
Expand All @@ -22,7 +23,8 @@
findhost.completed = TRUE
findhost.needs_target = FALSE
mind.objectives += findhost
mind.announce_objectives()
messages.Add(mind.prepare_announce_objectives())
to_chat(src, chat_box_red(messages.Join("<br>")))

/datum/antagonist/changeling/evented // make buffed changeling
evented = TRUE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@
greeting.Add(span_clock("<b>A being made of pure electrical energy, you travel through the station's wires and infest machinery.</b>"))
greeting.Add(span_clock("<b>Navigate the station's power cables to find power sources to steal from, and hijack APCs to interact with their connected machines.</b>"))
greeting.Add(span_clock("<b>If the wire or power source you're connected to runs out of power you'll start losing health and eventually die, but you are otherwise immune to damage.</b>"))
to_chat(src, span_notice(greeting.Join("<br>")))
greeting.Add("<span class='motd'>С полной информацией вы можете ознакомиться на вики: <a href=\"https://wiki.ss220.space/index.php/Pulse_Demon\">Электродемон</a></span>")
var/datum/objective/pulse_demon/infest/infestapc = new
var/datum/objective/pulse_demon/drain/drainpower = new
var/datum/objective/pulse_demon/tamper/tampermach = new
Expand All @@ -257,7 +257,8 @@
infestapc.owner = mind
drainpower.owner = mind
tampermach.owner = mind
mind.announce_objectives()
greeting.Add(mind.prepare_announce_objectives(FALSE))
to_chat(src, chat_box_red(greeting.Join("<br>")))
SSticker.mode.traitors |= mind
return

Expand Down
Loading

0 comments on commit 3b1fc24

Please sign in to comment.