diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm
index 89b0760c185..8c54fbaee03 100644
--- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm
+++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm
@@ -500,3 +500,13 @@
/datum/trait/neutral/dominate_prey/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..(S,H)
H.verbs |= /mob/living/proc/dominate_prey
+
+/datum/trait/neutral/submit_to_prey
+ name = "Submit To Prey"
+ desc = "Allow prey's mind to control your own body."
+ cost = 0
+ custom_only = FALSE
+
+/datum/trait/neutral/submit_to_prey/apply(var/datum/species/S,var/mob/living/carbon/human/H)
+ ..(S,H)
+ H.verbs |= /mob/living/proc/lend_prey_control
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm
index 8b38d1965ee..82375f0a153 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm
@@ -267,7 +267,7 @@
set name = "Resist Control"
set desc = "Attempt to resist control."
if(pred_body.ckey == pred_ckey)
- dominate_predator()
+ dominate_predator()
return
if(pred_ckey == ckey && pred_body.prey_controlled)
to_chat(src, "You begin to resist \the [prey_name]'s control!!!")
@@ -306,7 +306,7 @@
to_chat(src, "Attempting to dominate and gather \the [M]'s mind...")
if(tgui_alert(M, "\The [src] has elected collect your mind into their own. Is this something you will allow to happen?", "Allow Dominate Prey",list("No","Yes")) != "Yes")
to_chat(src, "\The [M] has declined your Dominate Prey attempt.")
- return
+ return
if(tgui_alert(M, "Are you sure? You can only undo this while your body is inside of [src]. (You can resist, or use the resist verb in the abilities tab)", "Allow Dominate Prey",list("No","Yes")) != "Yes")
to_chat(src, "\The [M] has declined your Dominate Prey attempt.")
return
@@ -328,7 +328,7 @@
db.name = M.name
db.prey_ckey = M.ckey
db.pred_ckey = src.ckey
-
+
db.real_name = M.real_name
@@ -370,3 +370,90 @@
else
to_chat(src, "Your body seems to no longer exist, so, you cannot return to it.")
verbs -= /mob/living/dominated_brain/proc/cease_this_foolishness
+
+/mob/living/proc/lend_prey_control()
+ set category = "Abilities"
+ set name = "Give Prey Control"
+ set desc = "Allow prey control of your body."
+
+ var/list/possible_mobs = list()
+ for(var/obj/belly/B in src.vore_organs)
+ for(var/mob/living/L in B)
+ if(isliving(L) && L.ckey)
+ possible_mobs |= L
+ else
+ continue
+ if(!possible_mobs)
+ to_chat(src, "There are no valid targets inside of you.")
+ return
+ var/input = tgui_input_list(src, "Select a mob to give control:", "Give Prey Control", possible_mobs)
+ if(!input)
+ return
+ var/mob/living/prey = input
+ var/mob/living/pred = src
+
+ if(prey.stat == DEAD)
+ to_chat(prey, "You cannot do that to this prey.")
+ return
+
+ if(!prey.ckey)
+ to_chat(prey, "\The [prey] cannot take control.")
+ return
+ if(prey.prey_controlled)
+ to_chat(prey, "\The [prey] is already under someone's control and cannot be given control of your body.")
+ return
+ if(pred.prey_controlled)
+ to_chat(prey, "You are already controlling someone's body.")
+ return
+ if(tgui_alert(pred, "You are attempting to give [prey] control over you, are you sure? Ensure that their preferences align with this kind of play.", "Give Prey Control",list("No","Yes")) != "Yes")
+ return
+ to_chat(pred, "You attempt to give your control over to \the [prey]...")
+ log_admin("[key_name_admin(pred)] attempted to give control to [prey].")
+ if(tgui_alert(prey, "\The [pred] has elected to attempt to give you control of them. Is this something you will allow to happen?", "Allow Prey Domination",list("No","Yes")) != "Yes")
+ to_chat(pred, "\The [prey] declined your request for control.")
+ return
+ if(tgui_alert(prey, "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
+ to_chat(pred, "You diminish your will, reducing it and allowing will of your prey to take over...")
+ to_chat(prey, "You can feel the will of your host diminishing as you are given control over them!")
+ if(!do_after(pred, 10 SECONDS, exclusive = TRUE))
+ to_chat(pred, "Your attempt to share control has been interrupted...")
+ to_chat(prey, "The dominant sensation fades away...")
+ return
+
+ to_chat(prey, "You plunge your conciousness into \the [pred], assuming control over their very body, leaving your own behind within \the [pred]'s [loc].")
+ to_chat(pred, "You feel your body move on its own, as you move to the background, and an alien consciousness displaces yours.")
+ var/mob/living/dominated_brain/pred_brain
+ var/delete_source = FALSE
+ if(istype(prey, /mob/living/dominated_brain))
+ var/mob/living/dominated_brain/punished_prey = prey
+ if(punished_prey.prey_body)
+ pred_brain = new /mob/living/dominated_brain(pred, pred, name, punished_prey.prey_body)
+ else
+ pred_brain = new /mob/living/dominated_brain(pred, pred, name) //We have to play musical chairs with 3 bodies, or everyone gets d/ced
+ delete_source = TRUE
+ else
+ pred_brain = new /mob/living/dominated_brain(pred, pred, name, prey)
+
+ pred_brain.prey_ooc_notes = prey.ooc_notes
+ pred_brain.pred_ooc_notes = pred.ooc_notes
+ pred_brain.name = pred.name
+ var/list/preylangs = list()
+ preylangs |= prey.languages
+ preylangs -= prey.temp_languages
+ pred_brain.prey_langs |= preylangs
+ pred_brain.prey_ckey = prey.ckey
+ pred_brain.pred_ckey = pred.ckey
+ pred_brain.pred_body.absorb_langs()
+ pred.ooc_notes = pred_brain.prey_ooc_notes
+
+ pred.verbs |= /mob/proc/release_predator
+
+ //Now actually put the people in the mobs
+ pred_brain.ckey = pred_brain.pred_ckey
+ pred_brain.real_name = pred.real_name
+ pred.ckey = pred_brain.prey_ckey
+ pred.prey_controlled = TRUE
+ log_and_message_admins("[pred] is now controlled by [pred.ckey], they were taken over via pred submission, and were originally controlled by [pred_brain.pred_ckey].")
+ if(delete_source)
+ qdel(prey)
\ No newline at end of file