Files
VOREStation/code/modules/vore/eating/stumblevore_vr.dm
T
Cameron Lennox 44c6b2f707 Spontaneous Vore Element (#18556)
* true/false

* wip p1

* Refactors stumble vore to be an element

* Makes dropnoms a component

* cleanup

* Fixes these

* checked further down

* framework here

* needs testing

* MORE CLEAR

* Fixes slipvore

* this works aye

* no copy paste

* Update stumblevore.dm

* Update stumblevore.dm

* Update stumblevore.dm

* Fixes

* only one has to slip

* fix this

* rename

* Update spontaneous_vore.dm

* SLIP VORE

* Update code/modules/mob/living/living_movement.dm

* Update unlucky.dm
2025-10-06 15:43:42 -04:00

49 lines
1.6 KiB
Plaintext

/mob/living/Bump(atom/movable/AM)
//. = ..()
if(isliving(AM))
var/mob/living/L = AM
if(!L.is_incorporeal())
if(buckled != AM && (((confused || is_blind()) && stat == CONSCIOUS && prob(50) && m_intent==I_RUN) || flying && flight_vore))
AM.stumble_into(src)
return ..()
// Because flips toggle density
/mob/living/Crossed(var/atom/movable/AM)
if(isliving(AM) && isturf(loc) && AM != src)
var/mob/living/AMV = AM
if(AMV.buckled != src && (((AMV.confused || AMV.is_blind()) && AMV.stat == CONSCIOUS && prob(50) && AMV.m_intent==I_RUN) || AMV.flying && AMV.flight_vore))
INVOKE_ASYNC(src,TYPE_PROC_REF(/atom/movable, stumble_into), AMV)
..()
/mob/living/stumble_into(mob/living/M)
if(buckled || M.buckled)
return
//Stumblevore occurs here. Look at the 'stumblevore' element for more information.
if(SEND_SIGNAL(src, COMSIG_LIVING_STUMBLED_INTO, M) & CANCEL_STUMBLED_INTO)
return
playsound(src, "punch", 25, 1, -1)
M.Weaken(4)
M.stop_flying()
if(ishuman(src))
var/mob/living/carbon/human/S = src
if(S.species.lightweight == 1)
visible_message(span_vwarning("[M] carelessly bowls [src] over!"))
M.forceMove(get_turf(src))
M.apply_damage(0.5, BRUTE)
Weaken(4)
stop_flying()
apply_damage(0.5, BRUTE)
return
if(round(weight) > 474)
var/throwtarget = get_edge_target_turf(M, reverse_direction(M.dir))
visible_message(span_vwarning("[M] bounces backwards off of [src]'s plush body!"))
M.throw_at(throwtarget, 5, 1) //it's funny and nobdy ever takes weight >474 so this is extremely rare
return
visible_message(span_vwarning("[M] trips over [src]!"))
M.forceMove(get_turf(src))
M.apply_damage(1, BRUTE)