mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-29 08:11:11 +01:00
Merge branch 'master' into upstream-merge-9307
This commit is contained in:
@@ -421,7 +421,7 @@
|
||||
//You're in a belly!
|
||||
if(isbelly(loc))
|
||||
var/obj/belly/B = loc
|
||||
var/confirm = alert(src, "You're in a mob. Don't use this as a trick to get out of hostile animals. This is for escaping from preference-breaking and if you're otherwise unable to escape from endo (pred AFK for a long time).", "Confirmation", "Okay", "Cancel")
|
||||
var/confirm = alert(src, "Please feel free to press use this button at any time you are uncomfortable and in a belly. Consent is important.", "Confirmation", "Okay", "Cancel")
|
||||
if(!confirm == "Okay" || loc != B)
|
||||
return
|
||||
//Actual escaping
|
||||
@@ -440,7 +440,7 @@
|
||||
var/mob/living/silicon/pred = loc.loc //Thing holding the belly!
|
||||
var/obj/item/device/dogborg/sleeper/belly = loc //The belly!
|
||||
|
||||
var/confirm = alert(src, "You're in a dogborg sleeper. This is for escaping from preference-breaking or if your predator disconnects/AFKs. If your preferences were being broken, please admin-help as well.", "Confirmation", "Okay", "Cancel")
|
||||
var/confirm = alert(src, "Please feel free to press use this button at any time you are uncomfortable and in a belly. Consent is important.", "Confirmation", "Okay", "Cancel")
|
||||
if(!confirm == "Okay" || loc != belly)
|
||||
return
|
||||
//Actual escaping
|
||||
@@ -501,7 +501,14 @@
|
||||
return FALSE
|
||||
|
||||
// Prepare messages
|
||||
if(user == pred) //Feeding someone to yourself
|
||||
//CHOMPEdit begin
|
||||
if(prey.is_slipping)
|
||||
attempt_msg = "<span class='warning'>It seems like [prey] is about to slide into [pred]'s [lowertext(belly.name)]!</span>"
|
||||
success_msg = "<span class='warning'>[prey] suddenly slides into [pred]'s [lowertext(belly.name)]!</span>"
|
||||
else if(pred.is_slipping)
|
||||
attempt_msg = "<span class='warning'>It seems like [prey] is gonna end up inside [pred]'s [lowertext(belly.name)] as [pred] comes sliding over!</span>"
|
||||
success_msg = "<span class='warning'>[prey] suddenly slips inside of [pred]'s [lowertext(belly.name)] as [pred] slides into them!</span>"
|
||||
else if(user == pred) //CHOMPEdit End //Feeding someone to yourself
|
||||
attempt_msg = "<span class='warning'>[pred] is attempting to [lowertext(belly.vore_verb)] [prey] into their [lowertext(belly.name)]!</span>"
|
||||
success_msg = "<span class='warning'>[pred] manages to [lowertext(belly.vore_verb)] [prey] into their [lowertext(belly.name)]!</span>"
|
||||
else //Feeding someone to another person
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
/mob/living
|
||||
var/is_slipping = FALSE
|
||||
var/slip_vore_in_progress = FALSE
|
||||
|
||||
/mob/living/proc/can_slip_vore(var/mob/living/target)
|
||||
if(!target.is_slipping) //Obviously they have to be slipping to get slip vored
|
||||
return FALSE
|
||||
if(!(src.can_be_drop_pred && target.devourable && target.can_be_drop_prey)) //Make sure both of their prefs align with what we're gonna do.
|
||||
return FALSE
|
||||
if(!is_vore_predator(src)) //Check their bellies and stuff
|
||||
return FALSE
|
||||
if(!src.vore_selected) //Gotta have one selected as well.
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/mob/living/proc/can_be_slip_vored_by(var/mob/living/target)
|
||||
if(!target.is_slipping) //Obviously they have to be slipping to get slip vored
|
||||
return FALSE
|
||||
if(!(target.can_be_drop_pred && src.devourable && src.can_be_drop_prey)) //Make sure both of their prefs align with what we're gonna do.
|
||||
return FALSE
|
||||
if(!is_vore_predator(target)) //Check their bellies and stuff
|
||||
return FALSE
|
||||
if(!target.vore_selected) //Gotta have one selected as well.
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/mob/living/Crossed(var/atom/movable/AM)
|
||||
if(AM == src || AM.is_incorporeal()) // We're not going to run over ourselves or ghosts
|
||||
return
|
||||
|
||||
if(istype(AM, /mob/living/bot/mulebot))
|
||||
var/mob/living/bot/mulebot/MB = AM
|
||||
MB.runOver(src)
|
||||
|
||||
if(istype(AM, /obj/vehicle))
|
||||
var/obj/vehicle/V = AM
|
||||
V.RunOver(src)
|
||||
|
||||
var/mob/living/target = AM
|
||||
if(istype(target) && !target.incorporeal_move && !src.incorporeal_move) //The slip vore begins
|
||||
if(can_slip_vore(target) && !src.slip_vore_in_progress && !target.slip_vore_in_progress) //If we can vore them go for it
|
||||
target.slip_vore_in_progress = TRUE //Make them stop slipping
|
||||
perform_the_nom(src,target,src,src.vore_selected,1)
|
||||
target.slip_vore_in_progress = FALSE
|
||||
target.is_slipping = FALSE
|
||||
else if(can_be_slip_vored_by(target) && !src.slip_vore_in_progress && !target.slip_vore_in_progress) //Otherwise, if they can vore us, make it happen.
|
||||
target.slip_vore_in_progress = TRUE //Make them stop slipping
|
||||
perform_the_nom(target,src,target,target.vore_selected,1)
|
||||
target.slip_vore_in_progress = FALSE
|
||||
target.is_slipping = FALSE
|
||||
|
||||
/mob/living/carbon/slip(var/slipped_on,stun_duration=8)
|
||||
. = ..()
|
||||
if(.)
|
||||
is_slipping = TRUE
|
||||
return .
|
||||
|
||||
/mob/living/update_canmove()
|
||||
. = ..()
|
||||
if(is_slipping && !lying)
|
||||
is_slipping = FALSE
|
||||
return .
|
||||
Reference in New Issue
Block a user