OOC notes panel

This commit is contained in:
VerySoft
2023-08-11 02:10:38 -04:00
parent 05cfee8053
commit fdab4990ce
27 changed files with 297 additions and 10 deletions
+5 -1
View File
@@ -517,6 +517,8 @@
src.ckey = AI.ckey
name = AI.name
ooc_notes = AI.ooc_notes
ooc_notes_likes = AI.ooc_notes_likes
ooc_notes_dislikes = AI.ooc_notes_dislikes
to_chat(src, span_notice("You feel a tingle in your circuits as your systems interface with \the [initial(src.name)]."))
if(AI.idcard.access)
botcard.access |= AI.idcard.access
@@ -526,6 +528,8 @@
var/mob/living/silicon/pai/AI = paicard.pai
AI.ckey = src.ckey
AI.ooc_notes = ooc_notes
AI.ooc_notes_likes = ooc_notes_likes
AI.ooc_notes_dislikes = ooc_notes_dislikes
paicard.forceMove(src.loc)
paicard = null
name = initial(name)
@@ -568,4 +572,4 @@
feeding = FALSE
can_be_drop_pred = FALSE
return ..()
return ..()
@@ -8,7 +8,7 @@
unity = TRUE
water_resist = 100 // Lets not kill the prommies
cores = 0
movement_cooldown = 0
movement_cooldown = 0
//appearance_flags = RADIATION_GLOWS
shock_resist = 0 // Lets not be immune to zaps.
friendly = list("nuzzles", "glomps", "snuggles", "cuddles", "squishes") // lets be cute :3
@@ -392,6 +392,8 @@
blob.transforming = TRUE
blob.ckey = ckey
blob.ooc_notes = ooc_notes
blob.ooc_notes_likes = ooc_notes_likes
blob.ooc_notes_dislikes = ooc_notes_dislikes
blob.transforming = FALSE
blob.name = name
blob.nutrition = nutrition
@@ -464,6 +466,8 @@
transforming = TRUE
ckey = blob.ckey
ooc_notes = blob.ooc_notes // Updating notes incase they change them in blob form.
ooc_notes_likes = blob.ooc_notes_likes
ooc_notes_dislikes = blob.ooc_notes_dislikes
transforming = FALSE
blob.name = "Promethean Blob"
var/obj/item/hat = blob.hat
@@ -381,6 +381,8 @@ var/global/list/disallowed_protean_accessories = list(
//Put our owner in it (don't transfer var/mind)
blob.ckey = ckey
blob.ooc_notes = ooc_notes
blob.ooc_notes_likes = ooc_notes_likes
blob.ooc_notes_dislikes = ooc_notes_dislikes
temporary_form = blob
//Mail them to nullspace
@@ -463,6 +465,8 @@ var/global/list/disallowed_protean_accessories = list(
//Put our owner in it (don't transfer var/mind)
ckey = blob.ckey
ooc_notes = blob.ooc_notes // Lets give the protean any updated notes from blob form.
ooc_notes_likes = blob.ooc_notes_likes
ooc_notes_dislikes = blob.ooc_notes_dislikes
temporary_form = null
//Transfer vore organs
+2 -1
View File
@@ -697,7 +697,8 @@
//VOREStation Edit Start - Making it so SSD people have prefs with fallback to original style.
if(config.allow_Metadata)
if(ooc_notes)
to_chat(usr, "<span class='filter_notice'>[src]'s Metainfo:<br>[ooc_notes]</span>")
ooc_notes_window(usr)
// to_chat(usr, "<span class='filter_notice'>[src]'s Metainfo:<br>[ooc_notes]</span>")
else if(client)
to_chat(usr, "<span class='filter_notice'>[src]'s Metainfo:<br>[client.prefs.metadata]</span>")
else
@@ -5,6 +5,8 @@
var/autowhisper_mode = null // Mode to use with autowhisper
/mob/living
var/ooc_notes = null
var/ooc_notes_likes = null
var/ooc_notes_dislikes = null
appearance_flags = TILE_BOUND|PIXEL_SCALE|KEEP_TOGETHER|LONG_GLIDE
var/hunger_rate = DEFAULT_HUNGER_FACTOR
//custom say verbs
+37 -2
View File
@@ -27,11 +27,46 @@
set desc = "Sets OOC notes about yourself or your RP preferences or status."
set category = "OOC"
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, only for this round.", "Game Preference" , html_decode(ooc_notes), multiline = TRUE, prevent_enter = TRUE))
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 panel!", "Game Preference" , html_decode(ooc_notes), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(usr))
ooc_notes = new_metadata
to_chat(usr, "<span class='filter_notice'>OOC notes updated.</span>")
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()
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 panel!", "Game Preference" , html_decode(ooc_notes_likes), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(usr))
ooc_notes_likes = new_metadata
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)
/mob/living/proc/set_metainfo_dislikes()
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 panel!", "Game Preference" , html_decode(ooc_notes_dislikes), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(usr))
ooc_notes_dislikes = new_metadata
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)
/mob/living/proc/save_ooc_panel()
if(usr != src)
return
if(client.prefs.real_name != real_name)
to_chat(usr, "<span class='danger'>Your selected character slot name is not the same as your character's name. Aborting save. Please select [real_name]'s character slot in character setup before saving.</span>")
return
if(client.prefs.save_character())
to_chat(usr, "<span class='filter_notice'>Character preferences saved.</span>")
/mob/living/verb/set_voice_freq()
set name = "Set Voice Frequency"
+139
View File
@@ -0,0 +1,139 @@
/mob/living/proc/ooc_notes_window(mob/user)
if(!ooc_notes)
return
//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(src.ooc_notes), "\n", "<BR>")
var/likes = replacetext(html_decode(src.ooc_notes_likes), "\n", "<BR>")
var/dislikes = replacetext(html_decode(src.ooc_notes_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>
<b><font size='3px'>[src.name]'s OOC notes</font><br>"}
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>
"}
if(user == src)
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>"}
if(user == src)
dat += {"
<table>
<td class="button">
<a href='byond://?src=\ref[src];edit_ooc_note_likes=1' class='button'>Edit</a>
</td>
</table>
"}
if(likes)
dat += {"
<div class="content">
<p>[likes]</p>
</div>"}
dat += {"
<br>
<div class="collapsible_b"><b>Dislikes</b></div>"}
if(user == src)
dat += {"
<table>
<td class="button">
<a href='byond://?src=\ref[src];edit_ooc_note_dislikes=1' class='button'>Edit</a>
</td>
</table>
"}
if(dislikes)
dat += {"
<div class="content">
<p>[dislikes]</p>
</div>
</body>
</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")
onclose(usr, "[src.name]")
+2
View File
@@ -212,6 +212,8 @@ var/list/ai_verbs_default = list(
var/meta_info = client.prefs.metadata
if (meta_info)
ooc_notes = meta_info
ooc_notes_likes = client.prefs.metadata_likes
ooc_notes_dislikes = client.prefs.metadata_dislikes
if (malf && !(mind in malf.current_antagonists))
show_laws()
@@ -149,6 +149,9 @@
// Vorestation Edit: Meta Info for pAI
if (client.prefs)
ooc_notes = client.prefs.metadata
ooc_notes_likes = client.prefs.metadata_likes
ooc_notes_dislikes = client.prefs.metadata_dislikes
src << sound('sound/effects/pai_login.ogg', volume = 75) //VOREStation Add
// this function shows the information about being silenced as a pAI in the Status panel
@@ -344,6 +344,8 @@
var/meta_info = client.prefs.metadata
if (meta_info)
ooc_notes = meta_info
ooc_notes_likes = client.prefs.metadata_likes
ooc_notes_dislikes = client.prefs.metadata_dislikes
/mob/living/silicon/robot/verb/Namepick()
set category = "Robot Commands"
@@ -13,7 +13,11 @@
var/mob/living/pred_body //The body of the person who was dominated
var/pred_ckey //The ckey of the person who was dominated
var/pred_ooc_notes
var/pred_ooc_likes
var/pred_ooc_dislikes
var/prey_ooc_notes
var/prey_ooc_likes
var/prey_ooc_dislikes
/mob/living/dominated_brain/New(loc, var/mob/living/pred, preyname, var/mob/living/prey)
. = ..()
@@ -108,6 +112,8 @@
src.languages -= src.temp_languages
prey_goes_here.languages |= src.prey_langs
prey_goes_here.ooc_notes = prey_ooc_notes
prey_goes_here.ooc_notes_likes = prey_ooc_likes
prey_goes_here.ooc_notes_dislikes = prey_ooc_dislikes
prey_goes_here.verbs |= /mob/living/dominated_brain/proc/cease_this_foolishness
@@ -122,6 +128,8 @@
prey_goes_here.languages |= src.prey_langs
prey_goes_here.real_name = src.prey_name
prey_goes_here.ooc_notes = prey_ooc_notes
prey_goes_here.ooc_notes_likes = prey_ooc_likes
prey_goes_here.ooc_notes_dislikes = prey_ooc_dislikes
///////////////////
@@ -132,6 +140,8 @@
prey_goes_here.ckey = src.prey_ckey
pred_body.ckey = src.pred_ckey
pred_body.ooc_notes = pred_ooc_notes
pred_body.ooc_notes_likes = pred_ooc_likes
pred_body.ooc_notes_dislikes = pred_ooc_dislikes
log_and_message_admins("[pred_body] is now controlled by [pred_body.ckey]. They were restored to control through prey domination, and had been controlled by [prey_ckey].")
pred_body.absorb_langs()
pred_body.prey_controlled = FALSE
@@ -229,7 +239,12 @@
pred_brain = new /mob/living/dominated_brain(pred, pred, name, prey)
pred_brain.prey_ooc_notes = prey.ooc_notes
pred_brain.prey_ooc_likes = prey.ooc_notes_likes
pred_brain.prey_ooc_dislikes = prey.ooc_notes_dislikes
pred_brain.pred_ooc_notes = pred.ooc_notes
pred_brain.pred_ooc_likes = pred.ooc_notes_likes
pred_brain.pred_ooc_dislikes = pred.ooc_notes_dislikes
pred_brain.name = pred.name
var/list/preylangs = list()
preylangs |= prey.languages
@@ -239,6 +254,8 @@
pred_brain.pred_ckey = pred.ckey
pred_brain.pred_body.absorb_langs()
pred.ooc_notes = pred_brain.prey_ooc_notes
pred.ooc_notes_likes = pred_brain.prey_ooc_likes
pred.ooc_notes_dislikes = pred_brain.prey_ooc_dislikes
pred.verbs |= /mob/proc/release_predator
@@ -342,6 +359,10 @@
M.languages -= M.temp_languages
db.languages |= M.languages
db.ooc_notes = M.ooc_notes
db.ooc_notes_likes = M.ooc_notes_likes
db.ooc_notes_dislikes = M.ooc_notes_dislikes
db.prey_ooc_likes = M.ooc_notes_likes
db.prey_ooc_likes = M.ooc_notes_dislikes
db.verbs |= /mob/living/dominated_brain/proc/cease_this_foolishness
absorb_langs()
@@ -443,7 +464,11 @@
pred_brain = new /mob/living/dominated_brain(pred, pred, name, prey)
pred_brain.prey_ooc_notes = prey.ooc_notes
pred_brain.prey_ooc_likes = prey.ooc_notes_likes
pred_brain.prey_ooc_dislikes = prey.ooc_notes_dislikes
pred_brain.pred_ooc_notes = pred.ooc_notes
pred_brain.pred_ooc_likes = pred.ooc_notes_likes
pred_brain.pred_ooc_dislikes = pred.ooc_notes_dislikes
pred_brain.name = pred.name
var/list/preylangs = list()
preylangs |= prey.languages
@@ -453,6 +478,8 @@
pred_brain.pred_ckey = pred.ckey
pred_brain.pred_body.absorb_langs()
pred.ooc_notes = pred_brain.prey_ooc_notes
pred.ooc_notes_likes = pred_brain.prey_ooc_likes
pred.ooc_notes_dislikes = pred_brain.prey_ooc_dislikes
pred.verbs |= /mob/proc/release_predator
@@ -18,6 +18,8 @@
/mob/living/proc/login_prefs()
ooc_notes = client.prefs.metadata
ooc_notes_likes = client.prefs.metadata_likes
ooc_notes_dislikes = client.prefs.metadata_dislikes
digestable = client.prefs_vr.digestable
devourable = client.prefs_vr.devourable
absorbable = client.prefs_vr.absorbable