[DOWNSTREAM] Cyrillic Support v2 (#24075)

* cyrillic fixes https://github.com/ss220club/Paradise/commit/cbdad6f11f0e0e16694cdb60f8ccb3d6dd23fe92

* fix: remove control characters

* utf-8 support

* more fixes

* spellbook to utf8

* Update code/modules/research/server.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/research/server.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/paperwork/paper.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/paperwork/folders.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/mob/mob_say_base.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* update formatting

* fix ai alerts

* fix spaceheater

* fix noticeboard

---------

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
This commit is contained in:
larentoun
2024-03-11 12:35:08 +03:00
committed by GitHub
parent d0514fef1f
commit c5c911d252
68 changed files with 185 additions and 185 deletions
+2 -2
View File
@@ -77,7 +77,7 @@ GLOBAL_VAR_INIT(nologevent, 0)
if(!check_rights(R_ADMIN|R_MOD))
return
var/body = "<html><head><title>Options for [M.key]</title></head>"
var/body = "<html><meta charset='UTF-8'><head><title>Options for [M.key]</title></head>"
body += "<body>Options panel for <b>[M]</b>"
if(M.client)
body += " played by <b>[M.client]</b> "
@@ -390,7 +390,7 @@ GLOBAL_VAR_INIT(nologevent, 0)
set desc = "Instantly ends the round and brings up the scoreboard, in the same way that wizards dying do."
if(!check_rights(R_SERVER))
return
var/input = sanitize(copytext(input(usr, "What text should players see announcing the round end? Input nothing to cancel.", "Specify Announcement Text", "Shift Has Ended!"), 1, MAX_MESSAGE_LEN))
var/input = sanitize(copytext_char(input(usr, "What text should players see announcing the round end? Input nothing to cancel.", "Specify Announcement Text", "Shift Has Ended!"), 1, MAX_MESSAGE_LEN))
if(!input)
return
+1 -1
View File
@@ -108,7 +108,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
pda_select += "</select>"
var/dat = {"
<html><head><title>Create Outfit</title></head><body>
<html><meta charset='utf-8'><head><title>Create Outfit</title></head><body>
<form name="outfit" action="byond://?src=[UID()];" method="get">
<input type="hidden" name="src" value="[UID()]">
<input type="hidden" name="create_outfit_finalize" value="1">
@@ -14,7 +14,7 @@
permissions_asset.send(usr)
var/output = {"<!DOCTYPE html>
<html>
<html><meta charset='utf-8'>
<head>
<title>Permissions Panel</title>
<script type='text/javascript' src='[SSassets.transport.get_asset_url("search.js")]'></script>
+5 -5
View File
@@ -6,7 +6,7 @@
if(!check_rights(R_ADMIN))
message_admins("[key_name_admin(usr)] attempted to invoke player panel without admin rights. If this is a mentor, its a chance they accidentally hit F7. If this is NOT a mentor, there is a high chance an exploit is being used")
return
var/dat = "<html><head><title>Admin Player Panel</title></head>"
var/dat = "<html><meta charset='utf-8'><head><title>Admin Player Panel</title></head>"
//javascript, the part that does most of the work~
dat += {"
@@ -349,10 +349,10 @@
if(!check_rights(R_ADMIN))
return
if(SSticker && SSticker.current_state >= GAME_STATE_PLAYING)
var/dat = "<html><head><title>Round Status</title></head><body><h1><B>Round Status</B></h1>"
dat += "Current Game Mode: <B>[SSticker.mode.name]</B><BR>"
dat += "Round Duration: <B>[round(ROUND_TIME / 36000)]:[add_zero(num2text(ROUND_TIME / 600 % 60), 2)]:[add_zero(num2text(ROUND_TIME / 10 % 60), 2)]</B><BR>"
dat += "<B>Emergency shuttle</B><BR>"
var/dat = "<html><meta charset='utf-8'><head><title>Round Status</title></head><body><h1><b>Round Status</b></h1>"
dat += "Current Game Mode: <b>[SSticker.mode.name]</b><br>"
dat += "Round Duration: <b>[round(ROUND_TIME / 36000)]:[add_zero(num2text(ROUND_TIME / 600 % 60), 2)]:[add_zero(num2text(ROUND_TIME / 10 % 60), 2)]</b><br>"
dat += "<b>Emergency shuttle</b><br>"
if(SSshuttle.emergency.mode < SHUTTLE_CALL)
dat += "<a href='?src=[UID()];call_shuttle=1'>Call Shuttle</a><br>"
else
+1 -1
View File
@@ -5,7 +5,7 @@
if(!check_rights(0)) return
var/dat = "<html><body><center>"
var/dat = "<html><meta charset='utf-8'><body><center>"
dat += "<a href='?src=[UID()];secretsmenu=tab;tab=0' [current_tab == 0 ? "class='linkOn'" : ""]>Debug</a>"
dat += "<a href='?src=[UID()];secretsmenu=tab;tab=1' [current_tab == 1 ? "class='linkOn'" : ""]>IC Events</a>"
+1 -1
View File
@@ -179,7 +179,7 @@
var/navbar
var/ruler
ruler = "<hr style='background:#000000; border:0; height:3px'>"
navbar = "<a href='?_src_=holder;nonalpha=1'>\[All\]</a>|<a href='?_src_=holder;nonalpha=2'>\[#\]</a>"
navbar = "<meta charset='UTF-8'><a href='?_src_=holder;nonalpha=1'>\[All\]</a>|<a href='?_src_=holder;nonalpha=2'>\[#\]</a>"
for(var/letter in GLOB.alphabet)
navbar += "|<a href='?_src_=holder;shownote=[letter]'>\[[letter]\]</a>"
navbar += "<br><form method='GET' name='search' action='?'>\
+5 -5
View File
@@ -1072,9 +1072,9 @@
var/painame = "Default"
var/name = ""
if(alert(usr, "Do you want to set their name or let them choose their own name?", "Name Choice", "Set Name", "Let them choose") == "Set Name")
name = sanitize(copytext(input(usr, "Enter a name for the new pAI. Default name is [painame].", "pAI Name", painame),1,MAX_NAME_LEN))
name = sanitize(copytext_char(input(usr, "Enter a name for the new pAI. Default name is [painame].", "pAI Name", painame), 1, MAX_NAME_LEN))
else
name = sanitize(copytext(input(H, "An admin wants to make you into a pAI. Choose a name. Default is [painame].", "pAI Name", painame),1,MAX_NAME_LEN))
name = sanitize(copytext_char(input(H, "An admin wants to make you into a pAI. Choose a name. Default is [painame].", "pAI Name", painame), 1, MAX_NAME_LEN))
if(!name)
name = painame
@@ -2017,7 +2017,7 @@
D.assignment = "Pet"
C.access_id = D
spawn(30)
var/newname = sanitize(copytext(input(P, "You are [P], special event pet of [H]. Change your name to something else?", "Name change", P.name) as null|text,1,MAX_NAME_LEN))
var/newname = sanitize(copytext_char(input(P, "You are [P], special event pet of [H]. Change your name to something else?", "Name change", P.name) as null|text, 1, MAX_NAME_LEN))
if(newname && newname != P.name)
P.name = newname
if(P.mind)
@@ -2950,7 +2950,7 @@
return
if(alert(usr, "Are you sure you want to do this?", "Confirmation", "Yes", "No") != "Yes")
return
var/objective = sanitize(copytext(input("Enter an objective"),1,MAX_MESSAGE_LEN))
var/objective = sanitize(copytext_char(input("Enter an objective"), 1, MAX_MESSAGE_LEN))
if(!objective)
return
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Traitor All ([objective])")
@@ -3345,7 +3345,7 @@
if(!check_rights(R_ADMIN))
return
var/text = html_decode(href_list["showdetails"])
usr << browse("<HTML><HEAD><TITLE>Details</TITLE></HEAD><BODY><TT>[replacetext(text, "\n", "<BR>")]</TT></BODY></HTML>",
usr << browse("<html><meta charset='utf-8'><head><title>Details</title></head><body><tt>[replacetext(text, "\n", "<BR>")]</tt></body></html>",
"window=show_details;size=500x200")
else if(href_list["create_outfit_finalize"])
+1 -1
View File
@@ -21,7 +21,7 @@
if(handle_spam_prevention(msg, MUTE_ADMINHELP, OOC_COOLDOWN))
return
msg = sanitize_simple(copytext(msg, 1, MAX_MESSAGE_LEN))
msg = sanitize_simple(copytext_char(msg, 1, MAX_MESSAGE_LEN))
if(!msg) // No message after sanitisation
return
+1 -1
View File
@@ -106,7 +106,7 @@
//clean the message if it's not sent by a high-rank admin
if(!check_rights(R_SERVER|R_DEBUG,0))
msg = sanitize_simple(copytext(msg,1,MAX_MESSAGE_LEN))
msg = sanitize_simple(copytext_char(msg, 1, MAX_MESSAGE_LEN))
if(!msg)
return
else
+2 -2
View File
@@ -3,7 +3,7 @@
set hidden = 1
if(!check_rights(R_ADMIN)) return
msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN))
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
if(!msg) return
var/datum/asays/asay = new(usr.ckey, usr.client.holder.rank, msg, world.timeofday)
@@ -60,7 +60,7 @@
else if(!check_rights(R_ADMIN|R_MOD)) // Catch any other non-admins trying to use this proc
return
msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN))
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
log_mentorsay(msg, src)
mob.create_log(OOC_LOG, "MSAY: [msg]")
+1 -1
View File
@@ -31,7 +31,7 @@
if(check_rights(R_ADMIN, 0))
stafftype = "ADMIN"
msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN))
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
log_admin("[key_name(src)] : [msg]")
if(!msg)
+1 -1
View File
@@ -19,7 +19,7 @@ GLOBAL_VAR_INIT(deathsquad_sent, FALSE)
log_admin("[key_name_admin(proccaller)] has started to spawn a DeathSquad.")
to_chat(proccaller, "<span class='boldwarning'>This 'mode' will go on until everyone is dead or the station is destroyed. You may also admin-call the evac shuttle or use the end round verb when appropriate. Spawned commandos have internals cameras which are viewable through a monitor inside the Spec. Ops. Office. The first one selected will be the team leader.</span>")
var/mission = sanitize(copytext(input(src, "Please specify which mission the Deathsquad shall undertake.", "Specify Mission", "",), 1, MAX_MESSAGE_LEN))
var/mission = sanitize(copytext_char(input(src, "Please specify which mission the Deathsquad shall undertake.", "Specify Mission", "",), 1, MAX_MESSAGE_LEN))
if(!mission)
if(alert("Error, no mission set. Do you want to exit the setup process?",, "Yes", "No") == "Yes")
message_admins("[key_name_admin(proccaller)] cancelled their Deathsquad.")
+1 -1
View File
@@ -23,7 +23,7 @@
return
var/themission = null
while(!themission)
themission = sanitize(copytext(input(src, "Please specify a briefing message for the team.", "Specify Mission", ""),1,MAX_MESSAGE_LEN))
themission = sanitize(copytext_char(input(src, "Please specify a briefing message for the team.", "Specify Mission", ""), 1, MAX_MESSAGE_LEN))
if(!themission)
alert("No mission specified. Aborting.")
return
@@ -28,7 +28,7 @@ GLOBAL_VAR_INIT(sent_syndicate_infiltration_team, 0)
return
var/input = null
while(!input)
input = sanitize(copytext(input(src, "Please specify which mission the syndicate infiltration team shall undertake.", "Specify Mission", ""),1,MAX_MESSAGE_LEN))
input = sanitize(copytext_char(input(src, "Please specify which mission the syndicate infiltration team shall undertake.", "Specify Mission", ""), 1, MAX_MESSAGE_LEN))
if(!input)
alert("No mission specified. Aborting.")
return
+1 -1
View File
@@ -6,7 +6,7 @@
return
var/msg = input(src, "What message do you want the ping to show?", "Ping all admins") as text|null
msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN))
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
if(!msg)
return
+4 -4
View File
@@ -2,7 +2,7 @@
set category = "IC"
set name = "Pray"
msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN))
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
if(!msg)
return
@@ -42,7 +42,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Pray") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/proc/Centcomm_announce(text, mob/Sender)
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
var/msg = sanitize(copytext_char(text, 1, MAX_MESSAGE_LEN))
msg = "<span class='boldnotice'><font color=orange>CENTCOMM: </font>[key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_CENTCOM_REPLY(Sender,"RPLY")])):</span> [msg]"
for(var/client/X in GLOB.admins)
if(R_EVENT & X.holder.rights)
@@ -51,7 +51,7 @@
SEND_SOUND(X, sound('sound/effects/adminhelp.ogg'))
/proc/Syndicate_announce(text, mob/Sender)
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
var/msg = sanitize(copytext_char(text, 1, MAX_MESSAGE_LEN))
msg = "<span class='boldnotice'><font color='#DC143C'>SYNDICATE: </font>[key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_SYNDICATE_REPLY(Sender,"RPLY")]):</span> [msg]"
for(var/client/X in GLOB.admins)
if(check_rights(R_EVENT,0,X.mob))
@@ -79,7 +79,7 @@
/proc/Nuke_request(text , mob/Sender)
var/nuke_code = get_nuke_code()
var/nuke_status = get_nuke_status()
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
var/msg = sanitize(copytext_char(text, 1, MAX_MESSAGE_LEN))
msg = "<span class='adminnotice'><b><font color=orange>NUKE CODE REQUEST: </font>[key_name(Sender)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_CENTCOM_REPLY(Sender,"RPLY")]):</b> [msg]</span>"
for(var/client/X in GLOB.admins)
if(check_rights(R_EVENT,0,X.mob))
+3 -3
View File
@@ -1003,9 +1003,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
return
/* ======== SSD Section ========= */
var/msg = "<html><head><title>SSD & AFK Report</title></head><body>"
msg += "SSD Players:<BR><TABLE border='1'>"
msg += "<TR><TD><B>Key</B></TD><TD><B>Real Name</B></TD><TD><B>Job</B></TD><TD><B>Mins SSD</B></TD><TD><B>Special Role</B></TD><TD><B>Area</B></TD><TD><B>PPN</B></TD><TD><B>Cryo</B></TD></TR>"
var/msg = "<html><meta charset='utf-8'><head><title>SSD & AFK Report</title></head><body>"
msg += "SSD Players:<br><TABLE border='1'>"
msg += "<tr><td><b>Key</b></td><td><b>Real Name</b></td><td><b>Job</b></td><td><b>Mins SSD</b></td><td><b>Special Role</b></td><td><b>Area</b></td><td><b>PPN</b></td><td><b>Cryo</b></td></tr>"
var/mins_ssd
var/job_string
var/key_string
@@ -23,7 +23,7 @@ GLOBAL_VAR_INIT(sent_syndicate_strike_team, 0)
var/input = null
while(!input)
input = sanitize(copytext(input(src, "Please specify which mission the syndicate strike team shall undertake.", "Specify Mission", ""),1,MAX_MESSAGE_LEN))
input = sanitize(copytext_char(input(src, "Please specify which mission the syndicate strike team shall undertake.", "Specify Mission", ""),1,MAX_MESSAGE_LEN))
if(!input)
if(alert("Error, no mission set. Do you want to exit the setup process?",,"Yes","No")=="Yes")
return