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:
Cameron Lennox
2025-04-26 16:08:58 -04:00
committed by GitHub
parent ea488c4ba4
commit a0e9785d0d
62 changed files with 1210 additions and 397 deletions
+6
View File
@@ -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
+36
View File
@@ -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
+43 -5
View File
@@ -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"
+104 -10
View File
@@ -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)
+3
View File
@@ -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