mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-29 16:19:36 +01:00
[MIRROR] Spontaneous Prey Bellies (#12216)
Co-authored-by: SatinIsle <98125273+SatinIsle@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> Co-authored-by: C.L. <killer65311@gmail.com>
This commit is contained in:
co-authored by
SatinIsle
Kashargul
C.L.
parent
caedc0bcaf
commit
ddb541f067
@@ -28,7 +28,8 @@
|
||||
//We are able to eat the person stumbling into us.
|
||||
if(can_stumble_vore(prey = target, pred = source)) //This is if the person stumbling into us is able to eat us!
|
||||
source.visible_message(span_vwarning("[target] flops carelessly into [source]!"))
|
||||
source.begin_instant_nom(source, prey = target, pred = source, belly = source.vore_selected)
|
||||
var/obj/belly/destination_belly = source.get_current_spont_belly(target)
|
||||
source.begin_instant_nom(source, prey = target, pred = source, belly = destination_belly)
|
||||
target.stop_flying()
|
||||
return CANCEL_STUMBLED_INTO
|
||||
|
||||
@@ -36,7 +37,8 @@
|
||||
if(can_stumble_vore(prey = source, pred = target)) //This is if the person stumbling into us is able to be eaten by us! BROKEN!
|
||||
source.visible_message(span_vwarning("[target] flops carelessly into [source]!"))
|
||||
target.forceMove(get_turf(source))
|
||||
source.begin_instant_nom(target, prey = source, pred = target, belly = target.vore_selected)
|
||||
var/obj/belly/destination_belly = target.get_current_spont_belly(source)
|
||||
source.begin_instant_nom(target, prey = source, pred = target, belly = destination_belly)
|
||||
source.stop_flying()
|
||||
return CANCEL_STUMBLED_INTO
|
||||
|
||||
@@ -72,11 +74,14 @@
|
||||
//Handle object throw vore
|
||||
if(isitem(hitby))
|
||||
var/obj/item/O = hitby
|
||||
if(source.stat != DEAD && source.trash_catching && source.vore_selected)
|
||||
var/obj/belly/destination_belly = source.get_current_spont_belly(O)
|
||||
if(!destination_belly)
|
||||
return
|
||||
if(source.stat != DEAD && source.trash_catching)
|
||||
if(source.adminbus_trash || is_type_in_list(O, GLOB.edible_trash) && O.trash_eatable && !is_type_in_list(O, GLOB.item_vore_blacklist))
|
||||
source.visible_message(span_vwarning("[O] is thrown directly into [source]'s [lowertext(source.vore_selected.name)]!"))
|
||||
source.visible_message(span_vwarning("[O] is thrown directly into [source]'s [lowertext(destination_belly.name)]!"))
|
||||
O.throwing = 0
|
||||
source.vore_selected.nom_atom(O)
|
||||
destination_belly.nom_atom(O)
|
||||
return COMSIG_CANCEL_HITBY
|
||||
|
||||
//Throwing a prey into a pred takes priority. After that it checks to see if the person being thrown is a pred.
|
||||
@@ -94,23 +99,25 @@
|
||||
// PERSON BEING HIT: CAN BE DROP PRED, ALLOWS THROW VORE.
|
||||
// PERSON BEING THROWN: DEVOURABLE, ALLOWS THROW VORE, CAN BE DROP PREY.
|
||||
if(can_throw_vore(prey = thrown_mob, pred = source))
|
||||
if(!source.vore_selected)
|
||||
var/obj/belly/destination_belly = source.get_current_spont_belly(thrown_mob)
|
||||
if(!destination_belly)
|
||||
return
|
||||
source.vore_selected.nom_atom(thrown_mob) //Eat them!!!
|
||||
source.visible_message(span_vwarning("[thrown_mob] is thrown right into [source]'s [lowertext(source.vore_selected.name)]!"))
|
||||
destination_belly.nom_atom(thrown_mob) //Eat them!!!
|
||||
source.visible_message(span_vwarning("[thrown_mob] is thrown right into [source]'s [lowertext(destination_belly.name)]!"))
|
||||
source.on_throw_vore_special(TRUE, thrown_mob)
|
||||
add_attack_logs(thrown_mob.thrower,source,"Devoured [thrown_mob.name] via throw vore.")
|
||||
return //We can stop here. We don't need to calculate damage or anything else. They're eaten.
|
||||
return COMSIG_CANCEL_HITBY //We can stop here. We don't need to calculate damage or anything else. They're eaten.
|
||||
|
||||
// PERSON BEING HIT: CAN BE DROP PREY, ALLOWS THROW VORE, AND IS DEVOURABLE.
|
||||
// PERSON BEING THROWN: CAN BE DROP PRED, ALLOWS THROW VORE.
|
||||
else if(can_throw_vore(prey = source, pred = thrown_mob))//Pred thrown into prey.
|
||||
if(!thrown_mob.vore_selected)
|
||||
var/obj/belly/destination_belly = thrown_mob.get_current_spont_belly(source)
|
||||
if(!destination_belly)
|
||||
return
|
||||
source.visible_message(span_vwarning("[source] suddenly slips inside of [thrown_mob]'s [lowertext(thrown_mob.vore_selected.name)] as [thrown_mob] flies into them!"))
|
||||
thrown_mob.vore_selected.nom_atom(source) //Eat them!!!
|
||||
source.visible_message(span_vwarning("[source] suddenly slips inside of [thrown_mob]'s [lowertext(destination_belly.name)] as [thrown_mob] flies into them!"))
|
||||
destination_belly.nom_atom(source) //Eat them!!!
|
||||
add_attack_logs(thrown_mob.LAssailant,source,"Was Devoured by [thrown_mob.name] via throw vore.")
|
||||
return
|
||||
return COMSIG_CANCEL_HITBY
|
||||
|
||||
//source = person standing up
|
||||
//crossed = person sliding
|
||||
@@ -120,12 +127,19 @@
|
||||
if(source == crossed || !istype(crossed))
|
||||
return
|
||||
|
||||
|
||||
//Person being slipped into eats the person slipping
|
||||
if(can_slip_vore(pred = source, prey = crossed)) //If we can vore them go for it
|
||||
source.begin_instant_nom(source, prey = crossed, pred = source, belly = source.vore_selected)
|
||||
var/obj/belly/destination_belly = source.get_current_spont_belly(crossed)
|
||||
if(!destination_belly)
|
||||
return
|
||||
source.begin_instant_nom(source, prey = crossed, pred = source, belly = destination_belly)
|
||||
return COMPONENT_BLOCK_CROSS
|
||||
|
||||
//The person slipping eats the person being slipped into
|
||||
else if(can_slip_vore(pred = crossed, prey = source))
|
||||
source.begin_instant_nom(crossed, prey = source, pred = crossed, belly = crossed.vore_selected) //Must be
|
||||
var/obj/belly/destination_belly = crossed.get_current_spont_belly(source)
|
||||
if(!destination_belly)
|
||||
return
|
||||
source.begin_instant_nom(crossed, prey = source, pred = crossed, belly = destination_belly) //Must be
|
||||
return //We DON'T block it here. Pred can slip onto the prey's tile, no problem.
|
||||
|
||||
Reference in New Issue
Block a user