[MIRROR] Revise OOC notes panel (#6831)

Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com>
Co-authored-by: Raeschen <rycoop29@gmail.com>
This commit is contained in:
CHOMPStation2
2023-08-18 00:42:55 -07:00
committed by GitHub
parent b9e34f0746
commit c15451f51f
9 changed files with 98 additions and 206 deletions

View File

@@ -50,7 +50,7 @@
if(isanimal(bound_mob))
. += "<span class = 'notice'>[bound_mob.health / bound_mob.maxHealth * 100]%</span>"
if(bound_mob.ooc_notes)
. += "<span class = 'deptradio'>OOC Notes:</span> <a href='?src=\ref[bound_mob];ooc_notes=1'>\[View\]</a>"
. += "<span class = 'deptradio'>OOC Notes:</span> <a href='?src=\ref[bound_mob];ooc_notes=1'>\[View\]</a> - <a href='?src=\ref[src];print_ooc_notes_to_chat=1'>\[Print\]</a>"
. += "<span class='deptradio'><a href='?src=\ref[bound_mob];vore_prefs=1'>\[Mechanical Vore Preferences\]</a></span>"
//Command! This lets the owner toggle hostile on AI controlled mobs, or send a silent command message to your bound mob, wherever they may be.

View File

@@ -94,7 +94,7 @@
. += "<b>Age:</b> <a href='?src=\ref[src];age=1'>[pref.age]</a> <b>Birthday:</b> <a href='?src=\ref[src];bday_month=1'>[pref.bday_month]</a><b>/</b><a href='?src=\ref[src];bday_day=1'>[pref.bday_day]</a> - <b>Announce?:</b> <a href='?src=\ref[src];bday_announce=1'>[pref.bday_announce ? "Yes" : "Disabled"]</a><br>" //ChompEDIT - DISABLE the announcement
. += "<b>Spawn Point</b>: <a href='?src=\ref[src];spawnpoint=1'>[pref.spawnpoint]</a><br>"
if(config.allow_Metadata)
. += "<b>OOC Notes:</b> <a href='?src=\ref[src];metadata=1'> Edit </a><br>"
. += "<b>OOC Notes: <a href='?src=\ref[src];edit_ooc_notes=1'>Edit</a><a href='?src=\ref[src];edit_ooc_note_likes=1'>Likes</a><a href='?src=\ref[src];edit_ooc_note_dislikes=1'>Dislikes</a></b><br>"
. = jointext(.,null)
/datum/category_item/player_setup_item/general/basic/OnTopic(var/href,var/list/href_list, var/mob/user)
@@ -215,27 +215,18 @@
pref.spawnpoint = choice
return TOPIC_REFRESH
else if(href_list["metadata"])
// var/new_metadata = strip_html_simple(tgui_input_text(user, "Enter any information you'd like others to see, such as Roleplay-preferences:", "Game Preference" , html_decode(pref.metadata), multiline = TRUE, prevent_enter = TRUE)) //VOREStation Edit
if(CanUseTopic(user))
ooc_notes_window(user)
// pref.metadata = new_metadata
return TOPIC_HANDLED
else if(href_list["edit_ooc_notes"])
var/new_metadata = strip_html_simple(tgui_input_text(usr, "Enter any information you'd like others to see, such as Roleplay-preferences. This will not be saved permanently unless you click save in the Character Setup panel!", "Game Preference" , html_decode(pref.metadata), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(user))
pref.metadata = new_metadata
ooc_notes_window(usr)
else if(href_list["edit_ooc_note_likes"])
var/new_metadata = strip_html_simple(tgui_input_text(usr, "Enter any information you'd like others to see relating to your LIKED roleplay preferences. This will not be saved permanently unless you click save in the Character Setup panel!", "Game Preference" , html_decode(pref.metadata_likes), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(user))
pref.metadata_likes = new_metadata
ooc_notes_window(usr)
else if(href_list["edit_ooc_note_dislikes"])
var/new_metadata = strip_html_simple(tgui_input_text(usr, "Enter any information you'd like others to see relating to your DISLIKED roleplay preferences. This will not be saved permanently unless you click save in the Character Setup panel!", "Game Preference" , html_decode(pref.metadata_dislikes), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(user))
pref.metadata_dislikes = new_metadata
ooc_notes_window(usr)
return ..()
/datum/category_item/player_setup_item/general/basic/proc/get_genders()
@@ -250,131 +241,3 @@
possible_genders = possible_genders.Copy()
possible_genders |= NEUTER
return possible_genders
/datum/category_item/player_setup_item/general/basic/proc/ooc_notes_window(mob/user)
//I tried to get it to accept things like emojis and all that, but, it wouldn't do! It would be cool if it did.
var/notes = replacetext(html_decode(pref.metadata), "\n", "<BR>")
var/likes = replacetext(html_decode(pref.metadata_likes), "\n", "<BR>")
var/dislikes = replacetext(html_decode(pref.metadata_dislikes), "\n", "<BR>")
var/dat = {"
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<html>
<head>
<style>
body {
margin-top:5px;
font-family:Verdana;
color:white;
font-size:13px;
background-image:url('ooc_notes.png');
background-repeat:repeat-x;
background-color:#272727;
background-position:center top;
}
table {
font-size:13px;
margin-left:-2px;
}
h2 {
font-size:15px;
}
.collapsible {
background-color: #263d20;
color: white;
padding: 5px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 20px;
}
.collapsible_b {
background-color: #3f1a1a;
color: white;
padding: 5px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 20px;
}
.content {
padding: 5;
width: 100%;
background-color: #363636;
}
.button {
background-color: #40628a;
text-align: center;
}
td.button {
border: 1px solid #161616;
background-color: #40628a;
text-align: center;
}
a.button {
color:white;
text-decoration: none;
}
</style>
</head>"}
dat += {"<body>
<p><b>Save your changes in the character setup!</b></p>
<b><font size='3px'>[pref.real_name]'s OOC notes</font></b><br>"}
dat += {"
<br>
<table>
<td class="button">
<a href='byond://?src=\ref[src];edit_ooc_notes=1' class='button'>Edit</a>
</td>
</table>
"}
dat += {"
<br>
<p>[notes]</p>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<body>
<div class="collapsible"><b>Likes</b></div>"}
dat += {"
<table>
<td class="button">
<a href='byond://?src=\ref[src];edit_ooc_note_likes=1' class='button'>Edit</a>
</td>
</table>
"}
dat += {"
<div class="content">
<p>[likes]</p>
</div>"}
dat += {"
<br>
<div class="collapsible_b"><b>Dislikes</b></div>"}
dat += {"
<table>
<td class="button">
<a href='byond://?src=\ref[src];edit_ooc_note_dislikes=1' class='button'>Edit</a>
</td>
</table>
"}
dat += {"
<div class="content">
<p>[dislikes]</p>
</div>
</body>
</html>
<br><br>
<p><b>This only updates your character save file, to update your notes in the round use the Set OOC Metainfo verb!</b></p>
"}
user << browse("<html><head><title>OOC Notes: [pref.real_name]</title></head>[dat]</html>", "window=[pref.real_name]mvp;size=500x600;can_resize=1;can_minimize=0")
onclose(usr, "[pref.real_name]")

View File

@@ -94,7 +94,10 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
name = strangername
species = "[H.custom_species ? H.custom_species : H.species.name]"
ooc_notes = H.ooc_notes
ooc_notes += "\n\n LIKES\n\n[H.ooc_notes_likes]\n\nDISLIKES\n\n[H.ooc_notes_dislikes]"
if(H.ooc_notes_likes)
ooc_notes += "\n\nLIKES\n\n[H.ooc_notes_likes]"
if(H.ooc_notes_dislikes)
ooc_notes += "\n\nDISLIKES\n\n[H.ooc_notes_dislikes]"
if(LAZYLEN(H.flavor_texts)) //ChompEDIT
flavor_text = H.flavor_texts["general"] //ChompEDIT
@@ -103,7 +106,11 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
name = A.name
species = "Artificial Intelligence"
ooc_notes = A.ooc_notes
ooc_notes += "\n\nLIKES\n\n[A.ooc_notes_likes]\n\nDISLIKES\n\n[A.ooc_notes_dislikes]"
if(A.ooc_notes_likes)
ooc_notes += "\n\nLIKES\n\n[A.ooc_notes_likes]"
if(A.ooc_notes_dislikes)
ooc_notes += "\n\nDISLIKES\n\n[A.ooc_notes_dislikes]"
flavor_text = null // No flavor text for AIs :c
if(isrobot(C.mob))
@@ -113,7 +120,11 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
name = R.name
species = "[R.modtype] [R.braintype]"
ooc_notes = R.ooc_notes
ooc_notes += "\n\nLIKES\n\n[R.ooc_notes_likes]\n\nDISLIKES\n\n[R.ooc_notes_dislikes]"
if(R.ooc_notes_likes)
ooc_notes += "\n\nLIKES\n\n[R.ooc_notes_likes]"
if(R.ooc_notes_dislikes)
ooc_notes += "\n\nDISLIKES\n\n[R.ooc_notes_dislikes]"
flavor_text = R.flavor_text
if(istype(C.mob, /mob/living/silicon/pai))

View File

@@ -436,7 +436,7 @@
msg += "Custom link: [custom_link]"
if(ooc_notes)
msg += "<span class = 'deptradio'>OOC Notes:</span> <a href='?src=\ref[src];ooc_notes=1'>\[View\]</a>"
msg += "<span class = 'deptradio'>OOC Notes:</span> <a href='?src=\ref[src];ooc_notes=1'>\[View\]</a> - <a href='?src=\ref[src];print_ooc_notes_to_chat=1'>\[Print\]</a>"
msg += "<span class='deptradio'><a href='?src=\ref[src];vore_prefs=1'>\[Mechanical Vore Preferences\]</a></span>"
// VOREStation End
msg += "*---------*</span>"

View File

@@ -36,8 +36,21 @@
to_chat(usr, "<span class='filter_notice'>OOC notes updated. Don't forget to save!</span>")
log_admin("[key_name(usr)] updated their OOC notes mid-round.")
ooc_notes_window(usr)
set_metainfo_likes(FALSE)
set_metainfo_dislikes(FALSE)
/mob/living/proc/set_metainfo_likes()
/mob/living/verb/set_metainfo_panel()
if(usr != src)
return
var/new_metadata = strip_html_simple(tgui_input_text(usr, "Enter any information you'd like others to see, such as Roleplay-preferences. This will not be saved permanently unless you click save in the OOC notes panel!", "Game Preference" , html_decode(ooc_notes), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(usr))
ooc_notes = new_metadata
client.prefs.metadata = new_metadata
to_chat(usr, "<span class='filter_notice'>OOC notes updated. Don't forget to save!</span>")
log_admin("[key_name(usr)] updated their OOC notes mid-round.")
ooc_notes_window(usr)
/mob/living/proc/set_metainfo_likes(var/reopen = TRUE)
if(usr != src)
return
var/new_metadata = strip_html_simple(tgui_input_text(usr, "Enter any information you'd like others to see relating to your LIKED roleplay preferences. This will not be saved permanently unless you click save in the OOC notes panel!", "Game Preference" , html_decode(ooc_notes_likes), multiline = TRUE, prevent_enter = TRUE))
@@ -46,9 +59,10 @@
client.prefs.metadata_likes = new_metadata
to_chat(usr, "<span class='filter_notice'>OOC note likes have been updated. Don't forget to save!</span>")
log_admin("[key_name(usr)] updated their OOC note likes mid-round.")
ooc_notes_window(usr)
if(reopen)
ooc_notes_window(usr)
/mob/living/proc/set_metainfo_dislikes()
/mob/living/proc/set_metainfo_dislikes(var/reopen = TRUE)
if(usr != src)
return
var/new_metadata = strip_html_simple(tgui_input_text(usr, "Enter any information you'd like others to see relating to your DISLIKED roleplay preferences. This will not be saved permanently unless you click save in the OOC notes panel!", "Game Preference" , html_decode(ooc_notes_dislikes), multiline = TRUE, prevent_enter = TRUE))
@@ -57,7 +71,8 @@
client.prefs.metadata_dislikes = new_metadata
to_chat(usr, "<span class='filter_notice'>OOC note dislikes have been updated. Don't forget to save!</span>")
log_admin("[key_name(usr)] updated their OOC note dislikes mid-round.")
ooc_notes_window(usr)
if(reopen)
ooc_notes_window(usr)
/mob/living/proc/save_ooc_panel()
if(usr != src)
@@ -68,6 +83,16 @@
if(client.prefs.save_character())
to_chat(usr, "<span class='filter_notice'>Character preferences saved.</span>")
/mob/living/proc/print_ooc_notes_to_chat()
if(!ooc_notes)
return
var/msg = ooc_notes
if(ooc_notes_likes)
msg += "<br><br><b>LIKES</b><br><br>[ooc_notes_likes]"
if(ooc_notes_dislikes)
msg += "<br><br><b>DISLIKES</b><br><br>[ooc_notes_dislikes]"
to_chat(usr, "<span class='filter_notice'>[src]'s Metainfo:<br>[msg]</span>")
/mob/living/verb/set_custom_link()
set name = "Set Custom Link"
set desc = "Set a custom link to show up with your examine text."

View File

@@ -10,77 +10,43 @@
<html>
<head>
<style>
body {
margin-top:5px;
font-family:Verdana;
color:white;
font-size:13px;
background-image:url('ooc_notes.png');
background-repeat:repeat-x;
background-color:#272727;
background-position:center top;
}
table {
font-size:13px;
margin-left:-2px;
}
h2 {
font-size:15px;
}
.collapsible {
background-color: #263d20;
color: white;
padding: 5px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 20px;
}
.collapsible_b {
background-color: #3f1a1a;
color: white;
padding: 5px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 20px;
}
.content {
padding: 5;
width: 100%;
background-color: #363636;
}
.button {
background-color: #40628a;
text-align: center;
}
td.button {
border: 1px solid #161616;
background-color: #40628a;
text-align: center;
}
a.button {
color:white;
text-decoration: none;
}
</style>
</head>"}
dat += {"<body>
<b><font size='3px'>[src.name]'s OOC notes</font></b><br>"}
dat += {"<body><table>"}
if(user == src)
dat += {"
<table>
<td class="button">
<a href='byond://?src=\ref[src];save_ooc_panel=1' class='button'>Save Character Preferences</a>
</td>
</table>
"}
<td class="button">
<a href='byond://?src=\ref[src];save_ooc_panel=1' class='button'>Save Character Preferences</a>
</td>
"}
dat += {"
<td class="button">
<a href='byond://?src=\ref[src];print_ooc_notes_to_chat=1' class='button'>Print to chat</a>
</td>
</table>
"}
if(user == src)
dat += {"
<br>
@@ -95,10 +61,10 @@
<br>
<p>[notes]</p>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<body>
<meta name="viewport" content="width=device-width, initial-scale=1">"}
<div class="collapsible"><b>Likes</b></div>"}
if(likes || user == src)
dat += {"<div class="collapsible"><b><center>Likes</center></b></div>"}
if(user == src)
dat += {"
<table>
@@ -113,9 +79,10 @@
<div class="content">
<p>[likes]</p>
</div>"}
dat += {"
<br>
<div class="collapsible_b"><b>Dislikes</b></div>"}
if(dislikes || user == src)
dat += {"
<br>
<div class="collapsible_b"><b><center>Dislikes</center></b></div>"}
if(user == src)
dat += {"
<table>
@@ -134,6 +101,14 @@
</html>
"}
user << browse("<html><head><title>OOC Notes: [src]</title></head>[dat]</html>", "window=[src.name]mvp;size=500x600;can_resize=1;can_minimize=1")
var/key = "ooc_notes[src.real_name]" //Generate a unique key so we can make unique clones of windows, that way we can have more than one
if(src.ckey)
key = "[key][src.ckey]" //Add a ckey if they have one, in case their name is the same
onclose(usr, "[src.name]")
winclone(user, "ooc_notes", key) //Allows us to have more than one OOC notes panel open
winshow(user, key, TRUE) //Register our window
var/datum/browser/popup = new(user, key, "OOC Notes: [src.name]", 500, 600) //Create the window
popup.set_content(dat) //Populate window contents
popup.open(FALSE) // Skip registring onclose on the browser pane
onclose(user, key, src) // We want to register on the window itself

View File

@@ -1126,7 +1126,7 @@
if(custom_link)
. += "Custom link: [custom_link]"
if(ooc_notes)
. += "<span class = 'deptradio'>OOC Notes:</span> <a href='?src=\ref[src];ooc_notes=1'>\[View\]</a>"
. += "<span class = 'deptradio'>OOC Notes:</span> <a href='?src=\ref[src];ooc_notes=1'>\[View\]</a> - <a href='?src=\ref[src];print_ooc_notes_to_chat=1'>\[Print\]</a>"
. += "<span class='deptradio'><a href='?src=\ref[src];vore_prefs=1'>\[Mechanical Vore Preferences\]</a></span>"
@@ -1137,7 +1137,7 @@
src.Examine_OOC()
if(href_list["edit_ooc_notes"])
if(usr == src)
set_metainfo()
set_metainfo_panel()
if(href_list["edit_ooc_note_likes"])
if(usr == src)
set_metainfo_likes()
@@ -1147,8 +1147,8 @@
if(href_list["save_ooc_panel"])
if(usr == src)
save_ooc_panel()
if(href_list["print_ooc_notes_to_chat"])
print_ooc_notes_to_chat()
return ..()
/mob/living/proc/display_voreprefs(mob/user) //Called by Topic() calls on instances of /mob/living (and subtypes) containing vore_prefs as an argument

View File

@@ -105,4 +105,4 @@
. += "[flavor_text]"
if(master.ooc_notes)
. += "<span class = 'deptradio'>OOC Notes:</span> <a href='?src=\ref[master];ooc_notes=1'>\[View\]</a>"
. += "<span class = 'deptradio'>OOC Notes:</span> <a href='?src=\ref[master];ooc_notes=1'>\[View\]</a> - <a href='?src=\ref[master];print_ooc_notes_to_chat=1'>\[Print\]</a>"

View File

@@ -1501,6 +1501,24 @@ window "preferences_window"
right-click = true
saved-params = "zoom;letterbox;zoom-mode"
window "ooc_notes"
elem "ooc_notes"
type = MAIN
pos = 25,25
size = 500x600
anchor1 = -1,-1
anchor2 = -1,-1
is-visible = false
saved-params = "pos;is-minimized;is-maximized"
statusbar = false
elem "ooc_notes_panel"
type = BROWSER
pos = 0,0
size = 500x600
anchor1 = 0,0
anchor2 = 80,100
saved-params = ""
window "infowindow"
elem "infowindow"
type = MAIN