mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-26 13:39:16 +01:00
Kitchen Sink P2 TGUI Prefs (#17579)
* Kitchen Sink V2 * tsx * Update vorestation.dme * Update 01_basic.dm * Update 01_basic.dm * Deletes the character directory * F & M tags * Flexible * Update misc.dm * ICP * more fixes * missing sounds
This commit is contained in:
@@ -520,6 +520,9 @@
|
||||
ooc_notes = AI.ooc_notes
|
||||
ooc_notes_likes = AI.ooc_notes_likes
|
||||
ooc_notes_dislikes = AI.ooc_notes_dislikes
|
||||
ooc_notes_favs = AI.ooc_notes_favs
|
||||
ooc_notes_maybes = AI.ooc_notes_maybes
|
||||
ooc_notes_style = AI.ooc_notes_style
|
||||
to_chat(src, span_notice("You feel a tingle in your circuits as your systems interface with \the [initial(src.name)]."))
|
||||
if(AI.idcard.GetAccess())
|
||||
botcard.access |= AI.idcard.GetAccess()
|
||||
@@ -531,6 +534,9 @@
|
||||
AI.ooc_notes = ooc_notes
|
||||
AI.ooc_notes_likes = ooc_notes_likes
|
||||
AI.ooc_notes_dislikes = ooc_notes_dislikes
|
||||
AI.ooc_notes_favs = ooc_notes_favs
|
||||
AI.ooc_notes_maybes = ooc_notes_maybes
|
||||
AI.ooc_notes_style = ooc_notes_style
|
||||
paicard.forceMove(src.loc)
|
||||
paicard = null
|
||||
name = initial(name)
|
||||
|
||||
@@ -378,6 +378,9 @@
|
||||
blob.ooc_notes = ooc_notes
|
||||
blob.ooc_notes_likes = ooc_notes_likes
|
||||
blob.ooc_notes_dislikes = ooc_notes_dislikes
|
||||
blob.ooc_notes_favs = ooc_notes_favs
|
||||
blob.ooc_notes_maybes = ooc_notes_maybes
|
||||
blob.ooc_notes_style = ooc_notes_style
|
||||
blob.transforming = FALSE
|
||||
blob.name = name
|
||||
blob.real_name = real_name
|
||||
@@ -467,6 +470,9 @@
|
||||
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
|
||||
ooc_notes_favs = blob.ooc_notes_favs
|
||||
ooc_notes_maybes = blob.ooc_notes_maybes
|
||||
ooc_notes_style = blob.ooc_notes_style
|
||||
transforming = FALSE
|
||||
blob.name = "Promethean Blob"
|
||||
var/obj/item/hat = blob.hat
|
||||
|
||||
@@ -475,6 +475,9 @@
|
||||
blob.ooc_notes = ooc_notes
|
||||
blob.ooc_notes_likes = ooc_notes_likes
|
||||
blob.ooc_notes_dislikes = ooc_notes_dislikes
|
||||
blob.ooc_notes_favs = ooc_notes_favs
|
||||
blob.ooc_notes_maybes = ooc_notes_maybes
|
||||
blob.ooc_notes_style = ooc_notes_style
|
||||
temporary_form = blob
|
||||
var/obj/item/radio/R = null
|
||||
if(isradio(l_ear))
|
||||
@@ -602,6 +605,9 @@
|
||||
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
|
||||
ooc_notes_favs = blob.ooc_notes_favs
|
||||
ooc_notes_maybes = blob.ooc_notes_maybes
|
||||
ooc_notes_style = blob.ooc_notes_style
|
||||
temporary_form = null
|
||||
|
||||
//Transfer vore organs
|
||||
|
||||
@@ -1433,6 +1433,36 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
struggle_anim_taur = FALSE
|
||||
update_vore_tail_sprite()
|
||||
|
||||
/mob/living/carbon/human/proc/GetAppearanceFromPrefs(var/flavourtext, var/oocnotes)
|
||||
/* Jank code that effectively creates the client's mob from save, then copies its appearance to our current mob.
|
||||
Intended to be used with shapeshifter species so we don't reset their organs in doing so.*/
|
||||
if(client.prefs)
|
||||
var/mob/living/carbon/human/dummy/mannequin/Dummy = get_mannequin(client.ckey)
|
||||
client.prefs.copy_to(Dummy)
|
||||
//Important, since some sprites only work for specific species
|
||||
/* Probably not needed anymore since impersonate_bodytype no longer exists
|
||||
if(Dummy.species.base_species == "Promethean")
|
||||
impersonate_bodytype = "Human"
|
||||
else
|
||||
impersonate_bodytype = Dummy.species.base_species
|
||||
*/
|
||||
custom_species = Dummy.custom_species
|
||||
var/list/traits = dna.species_traits.Copy()
|
||||
dna = Dummy.dna.Clone()
|
||||
dna.species_traits.Cut()
|
||||
dna.species_traits = traits.Copy()
|
||||
UpdateAppearance()
|
||||
icon = Dummy.icon
|
||||
if(flavourtext)
|
||||
flavor_texts = client.prefs.flavor_texts.Copy()
|
||||
if(oocnotes)
|
||||
ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes)
|
||||
ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes)
|
||||
ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes)
|
||||
ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
|
||||
ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
|
||||
ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
|
||||
|
||||
//Human Overlays Indexes/////////
|
||||
#undef MUTATIONS_LAYER
|
||||
#undef SKIN_LAYER
|
||||
|
||||
@@ -1477,3 +1477,39 @@
|
||||
drop.invisibility = 0
|
||||
//else
|
||||
// come up with drips for other mobs someday
|
||||
|
||||
/mob/living/proc/set_metainfo_favs(var/mob/user, var/reopen = TRUE)
|
||||
if(user != src)
|
||||
return
|
||||
var/new_metadata = strip_html_simple(tgui_input_text(user, "Enter any information you'd like others to see relating to your FAVOURITE roleplay preferences. This will not be saved permanently unless you click save in the OOC notes panel! Type \"!clear\" to empty.", "Game Preference" , html_decode(ooc_notes_favs), multiline = TRUE, prevent_enter = TRUE))
|
||||
if(new_metadata && CanUseTopic(user))
|
||||
if(new_metadata == "!clear")
|
||||
new_metadata = ""
|
||||
ooc_notes_favs = new_metadata
|
||||
client.prefs.update_preference_by_type(/datum/preference/text/living/ooc_notes_favs, new_metadata)
|
||||
to_chat(user, span_filter_notice("OOC note favs have been updated. Don't forget to save!"))
|
||||
log_admin("[key_name(user)] updated their OOC note favs mid-round.")
|
||||
if(reopen)
|
||||
ooc_notes_window(user)
|
||||
|
||||
/mob/living/proc/set_metainfo_maybes(var/mob/user, var/reopen = TRUE)
|
||||
if(user != src)
|
||||
return
|
||||
var/new_metadata = strip_html_simple(tgui_input_text(user, "Enter any information you'd like others to see relating to your MAYBE roleplay preferences. This will not be saved permanently unless you click save in the OOC notes panel! Type \"!clear\" to empty.", "Game Preference" , html_decode(ooc_notes_maybes), multiline = TRUE, prevent_enter = TRUE))
|
||||
if(new_metadata && CanUseTopic(user))
|
||||
if(new_metadata == "!clear")
|
||||
new_metadata = ""
|
||||
ooc_notes_maybes = new_metadata
|
||||
client.prefs.update_preference_by_type(/datum/preference/text/living/ooc_notes_maybes, new_metadata)
|
||||
to_chat(user, span_filter_notice("OOC note maybes have been updated. Don't forget to save!"))
|
||||
log_admin("[key_name(user)] updated their OOC note maybes mid-round.")
|
||||
if(reopen)
|
||||
ooc_notes_window(user)
|
||||
|
||||
/mob/living/proc/set_metainfo_ooc_style(var/mob/user, var/reopen = TRUE)
|
||||
if(user != src)
|
||||
return
|
||||
ooc_notes_style = !ooc_notes_style
|
||||
client.prefs.update_preference_by_type(/datum/preference/toggle/living/ooc_notes_style, ooc_notes_style)
|
||||
if(reopen)
|
||||
ooc_notes_window(user)
|
||||
|
||||
@@ -112,3 +112,7 @@
|
||||
|
||||
var/mob/living/tf_form // Shapeshifter shenanigans
|
||||
var/tf_form_ckey
|
||||
|
||||
var/ooc_notes_favs = null
|
||||
var/ooc_notes_maybes = null
|
||||
var/ooc_notes_style = FALSE
|
||||
|
||||
@@ -91,11 +91,49 @@
|
||||
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(user, span_chatexport("[src]'s Metainfo:<br>[msg]"))
|
||||
if(ooc_notes_style && (ooc_notes_favs || ooc_notes_likes || ooc_notes_maybes || ooc_notes_dislikes) && !user.client?.prefs?.read_preference(/datum/preference/toggle/vchat_enable)) // Oldchat hates proper formatting
|
||||
msg += "<br><br>"
|
||||
msg += "<table><tr>"
|
||||
if(ooc_notes_favs)
|
||||
msg += "<th><b>\t[span_blue("FAVOURITES")]</b></th>"
|
||||
if(ooc_notes_likes)
|
||||
msg += "<th><b>\t[span_green("LIKES")]</b></th>"
|
||||
if(ooc_notes_maybes)
|
||||
msg += "<th><b>\t[span_yellow("MAYBES")]</b></th>"
|
||||
if(ooc_notes_dislikes)
|
||||
msg += "<th><b>\t[span_red("DISLIKES")]</b></th>"
|
||||
msg += "</tr><tr>"
|
||||
if(ooc_notes_favs)
|
||||
msg += "<td>"
|
||||
for(var/line in splittext(ooc_notes_favs, "\n"))
|
||||
msg += "\t[line]\n"
|
||||
msg += "</td>"
|
||||
if(ooc_notes_likes)
|
||||
msg += "<td>"
|
||||
for(var/line in splittext(ooc_notes_likes, "\n"))
|
||||
msg += "\t[line]\n"
|
||||
msg += "</td>"
|
||||
if(ooc_notes_maybes)
|
||||
msg += "<td>"
|
||||
for(var/line in splittext(ooc_notes_maybes, "\n"))
|
||||
msg += "\t[line]\n"
|
||||
msg += "</td>"
|
||||
if(ooc_notes_dislikes)
|
||||
msg += "<td>"
|
||||
for(var/line in splittext(ooc_notes_dislikes, "\n"))
|
||||
msg += "\t[line]\n"
|
||||
msg += "</td>"
|
||||
msg += "</tr></table>"
|
||||
else
|
||||
if(ooc_notes_favs)
|
||||
msg += "<br><br><b>[span_blue("FAVOURITES")]</b><br>[ooc_notes_favs]"
|
||||
if(ooc_notes_likes)
|
||||
msg += "<br><br><b>[span_green("LIKES")]</b><br>[ooc_notes_likes]"
|
||||
if(ooc_notes_maybes)
|
||||
msg += "<br><br><b>[span_yellow("MAYBES")]</b><br>[ooc_notes_maybes]"
|
||||
if(ooc_notes_dislikes)
|
||||
msg += "<br><br><b>[span_red("DISLIKES")]</b><br>[ooc_notes_dislikes]"
|
||||
to_chat(user, span_chatexport("<b>[src]'s Metainfo:</b><br>[msg]"))
|
||||
|
||||
/mob/living/verb/set_custom_link()
|
||||
set name = "Set Custom Link"
|
||||
|
||||
@@ -3,14 +3,27 @@
|
||||
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/favs = replacetext(html_decode(src.ooc_notes_favs), "\n", "<BR>")
|
||||
var/likes = replacetext(html_decode(src.ooc_notes_likes), "\n", "<BR>")
|
||||
var/maybes = replacetext(html_decode(src.ooc_notes_maybes), "\n", "<BR>")
|
||||
var/dislikes = replacetext(html_decode(src.ooc_notes_dislikes), "\n", "<BR>")
|
||||
var/style = src.ooc_notes_style
|
||||
var/dat = {"
|
||||
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.collapsible {
|
||||
background-color: #1a1e3f;
|
||||
color: white;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
font-size: 20px;
|
||||
}
|
||||
.collapsible_a {
|
||||
background-color: #263d20;
|
||||
color: white;
|
||||
width: 100%;
|
||||
@@ -18,6 +31,13 @@
|
||||
font-size: 20px;
|
||||
}
|
||||
.collapsible_b {
|
||||
background-color: #3e3f1a;
|
||||
color: white;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
font-size: 20px;
|
||||
}
|
||||
.collapsible_c {
|
||||
background-color: #3f1a1a;
|
||||
color: white;
|
||||
width: 100%;
|
||||
@@ -29,6 +49,17 @@
|
||||
width: 100%;
|
||||
background-color: #363636;
|
||||
}
|
||||
.column {
|
||||
verflow-wrap: break-word;
|
||||
float: left;
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.row:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>"}
|
||||
@@ -44,8 +75,21 @@
|
||||
<td class="button">
|
||||
<a href='byond://?src=\ref[src];print_ooc_notes_chat=1' class='button'>Print to chat</a>
|
||||
</td>
|
||||
</table>
|
||||
"}
|
||||
if(user == src)
|
||||
if(style)
|
||||
dat += {"
|
||||
<td class="button">
|
||||
<a href='byond://?src=\ref[src];set_metainfo_ooc_style=1' class='button'>Lists</a>
|
||||
</td>
|
||||
"}
|
||||
else
|
||||
dat += {"
|
||||
<td class="button">
|
||||
<a href='byond://?src=\ref[src];set_metainfo_ooc_style=1' class='button'>Fields</a>
|
||||
</td>
|
||||
"}
|
||||
dat += {"</table>"}
|
||||
|
||||
if(user == src)
|
||||
dat += {"
|
||||
@@ -59,12 +103,36 @@
|
||||
|
||||
dat += {"
|
||||
<br>
|
||||
<p>[notes]</p>
|
||||
<div class="content">
|
||||
<p>[notes]</p>
|
||||
</div>
|
||||
<br>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">"}
|
||||
if(style)
|
||||
dat += {"<div class='row'><div class='column'>"}
|
||||
if(favs || user == src)
|
||||
dat += "<div class=\"collapsible\">" + span_bold("<center>Favourites</center>") + "</div>"
|
||||
if(user == src)
|
||||
dat += {"
|
||||
<table>
|
||||
<td class="button">
|
||||
<a href='byond://?src=\ref[src];edit_ooc_note_favs=1' class='button'>Edit</a>
|
||||
</td>
|
||||
</table>
|
||||
"}
|
||||
|
||||
if(favs)
|
||||
dat += {"
|
||||
<div class="content">
|
||||
<p>[favs]</p>
|
||||
</div>"}
|
||||
|
||||
if(style)
|
||||
dat += {"</div>"}
|
||||
dat += {"<div class='column'>"}
|
||||
if(likes || user == src)
|
||||
dat += {"<div class="collapsible"><b><center>Likes</center></b></div>"}
|
||||
dat += "<div class=\"collapsible_a\">" + span_bold("<center>Likes</center>") + "</div>"
|
||||
if(user == src)
|
||||
dat += {"
|
||||
<table>
|
||||
@@ -77,12 +145,36 @@
|
||||
if(likes)
|
||||
dat += {"
|
||||
<div class="content">
|
||||
<p>[likes]</p>
|
||||
<p>[likes]</p>
|
||||
</div>"}
|
||||
if(dislikes || user == src)
|
||||
|
||||
if(style)
|
||||
dat += {"</div>"}
|
||||
dat += {"<div class='column'>"}
|
||||
if(maybes || user == src)
|
||||
dat += "<div class=\"collapsible_b\">" + span_bold("<center>Maybes</center>") + "</div>"
|
||||
if(user == src)
|
||||
dat += {"
|
||||
<br>
|
||||
<div class="collapsible_b"><b><center>Dislikes</center></b></div>"}
|
||||
<table>
|
||||
<td class="button">
|
||||
<a href='byond://?src=\ref[src];edit_ooc_note_maybes=1' class='button'>Edit</a>
|
||||
</td>
|
||||
</table>
|
||||
"}
|
||||
|
||||
if(maybes)
|
||||
dat += {"
|
||||
<div class="content">
|
||||
<p>[maybes]</p>
|
||||
</div>
|
||||
"}
|
||||
|
||||
|
||||
if(style)
|
||||
dat += {"</div>"}
|
||||
dat += {"<div class='column'>"}
|
||||
if(dislikes || user == src)
|
||||
dat += "<div class=\"collapsible_c\">" + span_bold("<center>Dislikes</center>") + "</div>"
|
||||
if(user == src)
|
||||
dat += {"
|
||||
<table>
|
||||
@@ -95,11 +187,13 @@
|
||||
if(dislikes)
|
||||
dat += {"
|
||||
<div class="content">
|
||||
<p>[dislikes]</p>
|
||||
<p>[dislikes]</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
"}
|
||||
if(style)
|
||||
dat += {"</div></div>"}
|
||||
dat+= {" </body>
|
||||
</html>"}
|
||||
|
||||
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)
|
||||
|
||||
@@ -218,6 +218,9 @@ var/list/ai_verbs_default = list(
|
||||
ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes)
|
||||
ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes)
|
||||
ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes)
|
||||
ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
|
||||
ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
|
||||
ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
|
||||
private_notes = client.prefs.read_preference(/datum/preference/text/living/private_notes)
|
||||
|
||||
if (malf && !(mind in malf.current_antagonists))
|
||||
|
||||
@@ -155,6 +155,9 @@
|
||||
ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes)
|
||||
ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes)
|
||||
ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes)
|
||||
ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
|
||||
ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
|
||||
ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
|
||||
private_notes = client.prefs.read_preference(/datum/preference/text/living/private_notes)
|
||||
|
||||
src << sound('sound/effects/pai_login.ogg', volume = 75) //VOREStation Add
|
||||
|
||||
@@ -411,6 +411,9 @@
|
||||
ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes)
|
||||
ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes)
|
||||
ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes)
|
||||
ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
|
||||
ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
|
||||
ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
|
||||
private_notes = client.prefs.read_preference(/datum/preference/text/living/private_notes)
|
||||
custom_link = client.prefs.custom_link
|
||||
|
||||
|
||||
@@ -15,9 +15,16 @@
|
||||
var/pred_ooc_notes
|
||||
var/pred_ooc_likes
|
||||
var/pred_ooc_dislikes
|
||||
var/pred_ooc_favs
|
||||
var/pred_ooc_maybes
|
||||
var/pred_ooc_style
|
||||
var/prey_ooc_favs
|
||||
var/prey_ooc_maybes
|
||||
var/prey_ooc_style
|
||||
var/prey_ooc_notes
|
||||
var/prey_ooc_likes
|
||||
var/prey_ooc_dislikes
|
||||
var/was_mob
|
||||
|
||||
/mob/living/dominated_brain/Initialize(mapload, var/mob/living/pred, preyname, var/mob/living/prey)
|
||||
prey_name = preyname
|
||||
@@ -112,6 +119,9 @@
|
||||
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.ooc_notes_favs = prey_ooc_favs
|
||||
prey_goes_here.ooc_notes_maybes = prey_ooc_maybes
|
||||
prey_goes_here.ooc_notes_style = prey_ooc_style
|
||||
add_verb(prey_goes_here, /mob/living/dominated_brain/proc/cease_this_foolishness)
|
||||
|
||||
|
||||
@@ -128,6 +138,9 @@
|
||||
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.ooc_notes_favs = prey_ooc_favs
|
||||
prey_goes_here.ooc_notes_maybes = prey_ooc_maybes
|
||||
prey_goes_here.ooc_notes_style = prey_ooc_style
|
||||
|
||||
///////////////////
|
||||
|
||||
@@ -140,6 +153,9 @@
|
||||
pred_body.ooc_notes = pred_ooc_notes
|
||||
pred_body.ooc_notes_likes = pred_ooc_likes
|
||||
pred_body.ooc_notes_dislikes = pred_ooc_dislikes
|
||||
pred_body.ooc_notes_favs = pred_ooc_favs
|
||||
pred_body.ooc_notes_maybes = pred_ooc_maybes
|
||||
pred_body.ooc_notes_style = pred_ooc_style
|
||||
log_and_message_admins("is now controlled by [pred_body.ckey]. They were restored to control through prey domination, and had been controlled by [prey_ckey].", pred_body)
|
||||
pred_body.absorb_langs()
|
||||
pred_body.prey_controlled = FALSE
|
||||
@@ -173,6 +189,7 @@
|
||||
set category = "Abilities.Vore"
|
||||
set name = "Dominate Predator"
|
||||
set desc = "Connect to and dominate the brain of your predator."
|
||||
var/is_mob = FALSE // - tracks if character is a non player mob TODO: Add
|
||||
|
||||
var/mob/living/pred
|
||||
var/mob/living/prey = src
|
||||
@@ -196,9 +213,6 @@
|
||||
to_chat(prey, span_warning("[pred] is unable to be dominated."))
|
||||
return
|
||||
|
||||
if(!pred.ckey)
|
||||
to_chat(prey, span_notice("\The [pred] isn't able to be dominated."))
|
||||
return
|
||||
if(isrobot(pred) && jobban_isbanned(prey, JOB_CYBORG))
|
||||
to_chat(prey, span_warning("Forces beyond your comprehension forbid you from taking control of [pred]."))
|
||||
return
|
||||
@@ -212,11 +226,21 @@
|
||||
return
|
||||
to_chat(prey, span_notice("You attempt to exert your control over \the [pred]..."))
|
||||
log_admin("[key_name_admin(prey)] attempted to take over [pred].")
|
||||
if(tgui_alert(pred, "\The [prey] has elected to attempt to take control of you. Is this something you will allow to happen?", "Allow Prey Domination",list("No","Yes")) != "Yes")
|
||||
to_chat(prey, span_warning("\The [pred] declined your request for control."))
|
||||
return
|
||||
if(tgui_alert(pred, "Are you sure? If you should decide to revoke this, you will have the ability to do so in your 'Abilities' tab.", "Allow Prey Domination",list("No","Yes")) != "Yes")
|
||||
return
|
||||
|
||||
if(pred.ckey) //check if body is assigned to another player currently
|
||||
if(tgui_alert(pred, "\The [prey] has elected to attempt to take control of you. Is this something you will allow to happen?", "Allow Prey Domination",list("No","Yes")) != "Yes")
|
||||
to_chat(prey, span_warning("\The [pred] declined your request for control."))
|
||||
return
|
||||
if(tgui_alert(pred, "Are you sure? If you should decide to revoke this, you will have the ability to do so in your 'Abilities' tab.", "Allow Prey Domination",list("No","Yes")) != "Yes")
|
||||
return
|
||||
else if(!pred.client && ("original_player" in pred.vars)) //check if the body belonged to a player and give proper log about it while preparing it
|
||||
log_and_message_admins("[key_name_admin(prey)] is taking control over [pred] while they are out of their body.")
|
||||
pred.ckey="DOMPLY[rand(100000,999999)]"
|
||||
is_mob = TRUE
|
||||
else //at this point we end up with a mob
|
||||
pred.ckey = "DOMMOB[rand(100000,999999)]" //this is cursed, but it does work and is cleaned up after
|
||||
is_mob = TRUE
|
||||
|
||||
to_chat(pred, span_warning("You can feel the will of another overwriting your own, control of your body being sapped away from you..."))
|
||||
to_chat(prey, span_warning("You can feel the will of your host diminishing as you exert your will over them!"))
|
||||
if(!do_after(prey, 10 SECONDS, exclusive = TRUE))
|
||||
@@ -241,6 +265,12 @@
|
||||
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.prey_ooc_favs = prey.ooc_notes_favs
|
||||
pred_brain.prey_ooc_maybes = prey.ooc_notes_maybes
|
||||
pred_brain.prey_ooc_style = prey.ooc_notes_style
|
||||
pred_brain.pred_ooc_favs = pred.ooc_notes_favs
|
||||
pred_brain.pred_ooc_maybes = pred.ooc_notes_maybes
|
||||
pred_brain.pred_ooc_style = pred.ooc_notes_style
|
||||
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
|
||||
@@ -256,6 +286,9 @@
|
||||
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.ooc_notes_favs = pred_brain.prey_ooc_favs
|
||||
pred.ooc_notes_maybes = pred_brain.prey_ooc_maybes
|
||||
pred.ooc_notes_style = pred_brain.prey_ooc_style
|
||||
|
||||
add_verb(pred, /mob/proc/release_predator)
|
||||
|
||||
@@ -268,6 +301,9 @@
|
||||
if(delete_source)
|
||||
qdel(prey)
|
||||
|
||||
if(is_mob == 1)
|
||||
pred_brain.was_mob = TRUE
|
||||
|
||||
/mob/proc/release_predator()
|
||||
set category = "Abilities.Vore"
|
||||
set name = "Restore Control"
|
||||
@@ -279,7 +315,12 @@
|
||||
if(db.ckey == db.pred_ckey)
|
||||
to_chat(src, span_notice("You ease off of your control, releasing \the [db]."))
|
||||
to_chat(db, span_notice("You feel the alien presence fade, and restore control of your body to you of their own will..."))
|
||||
db.restore_control()
|
||||
if(db.was_mob)
|
||||
db.pred_ckey = null
|
||||
db.ckey = null
|
||||
db.restore_control()
|
||||
else
|
||||
db.restore_control()
|
||||
return
|
||||
else
|
||||
continue
|
||||
@@ -317,6 +358,14 @@
|
||||
possible_mobs |= L
|
||||
else
|
||||
continue
|
||||
var/obj/item/grab/G = src.get_active_hand()
|
||||
if(istype(G))
|
||||
var/mob/living/L = G.affecting
|
||||
if(istype(L) && L.allow_mind_transfer)
|
||||
if(G.state != GRAB_NECK)
|
||||
possible_mobs |= "~~[L.name]~~ (reinforce grab first)"
|
||||
else
|
||||
possible_mobs |= L
|
||||
if(!possible_mobs)
|
||||
to_chat(src, span_warning("There are no valid targets inside of you."))
|
||||
return
|
||||
@@ -324,6 +373,9 @@
|
||||
if(!input)
|
||||
return
|
||||
var/mob/living/M = input
|
||||
if(!istype(M))
|
||||
to_chat(src, span_warning("You must have a tighter grip to dominate this creature."))
|
||||
return
|
||||
if(!M.allow_mind_transfer) //check if the dominated mob pref is enabled
|
||||
to_chat(src, span_warning("[M] is unable to be dominated."))
|
||||
return
|
||||
@@ -340,11 +392,13 @@
|
||||
to_chat(M, span_warning("You can feel the will of another pulling you away from your body..."))
|
||||
to_chat(src, span_warning("You can feel the will of your prey diminishing as you gather them!"))
|
||||
|
||||
if(istype(G) && M == G.affecting)
|
||||
src.visible_message(span_danger("[src] seems to be doing something to [M], resulting in [M]'s body looking increasingly drowsy with every passing moment!"))
|
||||
if(!do_after(src, 10 SECONDS, exclusive = TRUE))
|
||||
to_chat(M, span_notice("The alien presence fades, and you are left along in your body..."))
|
||||
to_chat(src, span_notice("Your attempt to gather [M]'s mind has been interrupted."))
|
||||
return
|
||||
if(!isbelly(M.loc))
|
||||
if(!isbelly(M.loc) && !(istype(G) && M == G.affecting && G.state == GRAB_NECK)) //CHOMPEdit - Let dominate prey work on grabbed people
|
||||
to_chat(M, span_notice("The alien presence fades, and you are left along in your body..."))
|
||||
to_chat(src, span_notice("Your attempt to gather [M]'s mind has been interrupted."))
|
||||
return
|
||||
@@ -364,6 +418,12 @@
|
||||
db.ooc_notes = M.ooc_notes
|
||||
db.ooc_notes_likes = M.ooc_notes_likes
|
||||
db.ooc_notes_dislikes = M.ooc_notes_dislikes
|
||||
db.ooc_notes_favs = M.ooc_notes_favs
|
||||
db.ooc_notes_maybes = M.ooc_notes_maybes
|
||||
db.ooc_notes_style = M.ooc_notes_style
|
||||
db.prey_ooc_favs = M.ooc_notes_favs
|
||||
db.prey_ooc_maybes = M.ooc_notes_maybes
|
||||
db.prey_ooc_style = M.ooc_notes_style
|
||||
db.prey_ooc_likes = M.ooc_notes_likes
|
||||
db.prey_ooc_dislikes = M.ooc_notes_dislikes
|
||||
add_verb(db, /mob/living/dominated_brain/proc/cease_this_foolishness)
|
||||
@@ -374,6 +434,8 @@
|
||||
log_admin("[db] ([db.ckey]) has agreed to [src]'s dominate prey attempt, and so no longer occupies their original body.")
|
||||
to_chat(src, span_notice("You feel your mind expanded as [M] is incorporated into you."))
|
||||
to_chat(M, span_warning("Your mind is gathered into \the [src], becoming part of them..."))
|
||||
if(istype(G) && M == G.affecting)
|
||||
visible_message(span_danger("[src] seems to finish whatever they were doing to [M]."))
|
||||
|
||||
/mob/living/dominated_brain/proc/cease_this_foolishness()
|
||||
set category = "Abilities.Vore"
|
||||
@@ -472,6 +534,12 @@
|
||||
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.prey_ooc_favs = prey.ooc_notes_favs
|
||||
pred_brain.prey_ooc_maybes = prey.ooc_notes_maybes
|
||||
pred_brain.prey_ooc_style = prey.ooc_notes_style
|
||||
pred_brain.pred_ooc_favs = pred.ooc_notes_favs
|
||||
pred_brain.pred_ooc_maybes = pred.ooc_notes_maybes
|
||||
pred_brain.pred_ooc_style = pred.ooc_notes_style
|
||||
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
|
||||
@@ -486,6 +554,9 @@
|
||||
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.ooc_notes_favs = pred_brain.prey_ooc_favs
|
||||
pred.ooc_notes_maybes = pred_brain.prey_ooc_maybes
|
||||
pred.ooc_notes_style = pred_brain.prey_ooc_style
|
||||
|
||||
add_verb(pred, /mob/proc/release_predator)
|
||||
|
||||
|
||||
@@ -22,11 +22,9 @@
|
||||
ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes)
|
||||
ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes)
|
||||
ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes)
|
||||
/* Not implemented on virgo
|
||||
ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
|
||||
ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
|
||||
ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
|
||||
*/
|
||||
private_notes = client.prefs.read_preference(/datum/preference/text/living/private_notes)
|
||||
digestable = client.prefs_vr.digestable
|
||||
devourable = client.prefs_vr.devourable
|
||||
|
||||
Reference in New Issue
Block a user