diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 208313e26e..7146a3fa97 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -132,7 +132,7 @@ M.visible_message(span_warning("[M.name] sits down on [L.name]!")) else M.visible_message(span_warning("[M.name] is forced to sit down on [L.name] by [user.name]!")) - M.perform_the_nom(user, L, M, M.vore_selected, 1) + M.perform_the_nom(user, L, M, M.vore_selected, -1) add_fingerprint(user) // unbuckle_mob() diff --git a/code/game/objects/structures/crates_lockers/__closets.dm b/code/game/objects/structures/crates_lockers/__closets.dm index 1d4b2d8909..a0cb0f0035 100644 --- a/code/game/objects/structures/crates_lockers/__closets.dm +++ b/code/game/objects/structures/crates_lockers/__closets.dm @@ -586,4 +586,4 @@ playsound(src, vore_sound, 25) var/mob/living/M = usr - M.perform_the_nom(usr,target,usr,usr.vore_selected,1) + M.perform_the_nom(usr,target,usr,usr.vore_selected,-1) diff --git a/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 4a361685fb..896d931ee6 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -343,7 +343,7 @@ m.drop_from_inventory(S.OurRig) if(wearer && devour) //We're being worn. Engulf em', if prefs align.. otherwise just drop off. if(P.can_be_drop_pred && wearer.devourable && wearer.can_be_drop_prey && P.vore_selected) - perform_the_nom(P,wearer,P,P.vore_selected,1) + perform_the_nom(P,wearer,P,P.vore_selected,-1) else to_chat(P, span_vwarning("You can't assimilate your current host.")) P.forceMove(get_turf(S.OurRig)) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm index 28488a4590..dbbe826b85 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm @@ -87,7 +87,7 @@ if(vore_fullness == 0 && movement_cooldown == 10) movement_cooldown = initial(movement_cooldown) -/mob/living/simple_mob/vore/alienanimals/dustjumper/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay) +/mob/living/simple_mob/vore/alienanimals/dustjumper/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay_time) . = ..() movement_cooldown = 10 diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/stardog.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/stardog.dm index abb7e99538..e093dcefef 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/stardog.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/stardog.dm @@ -147,7 +147,7 @@ child_om_marker.set_light(0) movement_cooldown = 0 -/mob/living/simple_mob/vore/overmap/stardog/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay) +/mob/living/simple_mob/vore/overmap/stardog/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay_time) to_chat(src, span_warning("You can't do that.")) //The dog can move back and forth between the overmap. return //If it can do normal vore mechanics, it can carry players to the OM, //and release them there. I think that's probably a bad idea. diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm index fad21376a9..e4d32fb38e 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm @@ -823,7 +823,7 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have? ai_holder.set_busy(FALSE) -/mob/living/simple_mob/vore/alienanimals/teppi/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay) +/mob/living/simple_mob/vore/alienanimals/teppi/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay_time) if(!pred) pred = user if(client) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/plants.dm b/code/modules/mob/living/simple_mob/subtypes/vore/plants.dm index 075c29f648..ae361de792 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/plants.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/plants.dm @@ -81,7 +81,7 @@ if(L in eaten_mobs) return if(L.devourable && L.allowmobvore && (src.vore_fullness < src.vore_capacity)) - perform_the_nom(src,L,src,src.vore_selected,1) + perform_the_nom(src,L,src,src.vore_selected,-1) eaten_mobs += L diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 7fd9d1b9d4..93aab7e26d 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -1,9 +1,9 @@ ///////////////////// Mob Living ///////////////////// /mob/living var/showvoreprefs = TRUE // Determines if the mechanical vore preferences button will be displayed on the mob or not. - var/list/temp_language_sources = list() //VOREStation Addition - Absorbs add languages to the pred - var/list/temp_languages = list() //VOREStation Addition - Absorbs add languages to the pred - var/prey_controlled = FALSE //VOREStation Addition + var/list/temp_language_sources = list() //Absorbs add languages to the pred + var/list/temp_languages = list() // Absorbs add languages to the pred + var/prey_controlled = FALSE // If the mob is currently controlled by their prey. var/weight = 137 // Weight for mobs for weightgain system var/weight_gain = 1 // How fast you gain weight var/weight_loss = 0.5 // How fast you lose weight @@ -32,11 +32,11 @@ 'sound/effects/mob_effects/xenochimera/regen_3.ogg', 'sound/effects/mob_effects/xenochimera/regen_5.ogg' ) - var/trash_catching = FALSE //Toggle for trash throw vore from chompstation + var/trash_catching = FALSE //Toggle for trash throw vore var/list/trait_injection_reagents = list() //List of all the reagents allowed to be used for injection via venom bite - var/trait_injection_selected = null //RSEdit: What trait reagent you're injecting. - var/trait_injection_amount = 5 //RSEdit: How much you're injecting with traits. - var/trait_injection_verb = "bite" //RSEdit: Which fluffy manner you're doing the injecting. + var/trait_injection_selected = null //What trait reagent you're injecting. + var/trait_injection_amount = 5 //How much you're injecting with traits. + var/trait_injection_verb = "bite" //Which fluffy manner you're doing the injecting. var/mute_entry = FALSE //Toggleable vorgan entry logs. var/parasitic = FALSE //Digestion immunity and nutrition leeching variable @@ -660,7 +660,7 @@ // // Master vore proc that actually does vore procedures // -/mob/living/proc/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay) +/mob/living/proc/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay_time) //Sanity if(!user || !prey || !pred || !istype(belly) || !(belly in pred.vore_organs)) log_debug("[user] attempted to feed [prey] to [pred], via [belly ? lowertext(belly.name) : "*null*"] but it went wrong.") @@ -697,9 +697,6 @@ if("subtle") message_range = 1 - - - // Slipnoms from chompstation downstream, credit to cadyn for the original PR. // Prepare messages if(prey.is_slipping) attempt_msg = span_vwarning("It seems like [prey] is about to slide into [pred]'s [lowertext(belly.name)]!") @@ -716,14 +713,14 @@ // Announce that we start the attempt! - user.visible_message(attempt_msg, range = message_range) - // Now give the prey time to escape... return if they did var/swallow_time - if(delay) - swallow_time = delay + if(delay_time < 0) + swallow_time = 0 //No delay! + else if(delay_time) + swallow_time = delay_time else swallow_time = ishuman(prey) ? belly.human_prey_swallow_time : belly.nonhuman_prey_swallow_time @@ -734,7 +731,7 @@ if(!user.client && prey.weakened > 0) // stop crwaling instantly break swallow attempt for mobvore prey.Stun(min(prey.weakened, 2)) // stop crwaling instantly break swallow attempt for mobvore if(!do_after(user, swallow_time, prey, exclusive = TASK_USER_EXCLUSIVE)) - return FALSE // Prey escpaed (or user disabled) before timer expired. + return FALSE // Prey escaped (or user disabled) before timer expired. // If we got this far, nom successful! Announce it! user.visible_message(success_msg, range = message_range) @@ -846,7 +843,7 @@ if(user.is_incorporeal()) return FALSE var/belly = user.vore_selected - return perform_the_nom(user, prey, user, belly, delay = 1) //1/10th of a second is probably fine. + return perform_the_nom(user, prey, user, belly, -1) /mob/living/proc/glow_toggle() set name = "Glow (Toggle)" diff --git a/code/modules/vore/eating/simple_animal_vr.dm b/code/modules/vore/eating/simple_animal_vr.dm index be97886288..e63df54227 100644 --- a/code/modules/vore/eating/simple_animal_vr.dm +++ b/code/modules/vore/eating/simple_animal_vr.dm @@ -34,7 +34,7 @@ feed_grabbed_to_self(src,T) //update_icon() CHOMPEdit -/mob/living/simple_mob/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay) +/mob/living/simple_mob/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay_time) if(vore_active && !voremob_loaded && pred == src) //Only init your own bellies. voremob_loaded = TRUE init_vore() diff --git a/code/modules/vore/eating/slipvore_vr.dm b/code/modules/vore/eating/slipvore_vr.dm index b6013f2d22..c9f9bdb3fa 100644 --- a/code/modules/vore/eating/slipvore_vr.dm +++ b/code/modules/vore/eating/slipvore_vr.dm @@ -44,12 +44,12 @@ var/mob/living/target = AM if(istype(target) && !target.is_incorporeal() && !src.is_incorporeal()) //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 - perform_the_nom(src,target,src,src.vore_selected,1) + perform_the_nom(src,target,src,src.vore_selected,-1) target.slip_vore_in_progress = FALSE target.is_slipping = FALSE return 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. - perform_the_nom(target,src,target,target.vore_selected,1) + perform_the_nom(target,src,target,target.vore_selected,-1) slip_vore_in_progress = FALSE is_slipping = FALSE return diff --git a/code/modules/vore/eating/stumblevore_vr.dm b/code/modules/vore/eating/stumblevore_vr.dm index 67b8670db6..dcc65c2e39 100644 --- a/code/modules/vore/eating/stumblevore_vr.dm +++ b/code/modules/vore/eating/stumblevore_vr.dm @@ -26,7 +26,7 @@ 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)) - stumble_into(AMV) + INVOKE_ASYNC(src,TYPE_PROC_REF(/atom/movable, stumble_into), AMV) ..() /mob/living/stumble_into(mob/living/M) @@ -35,14 +35,16 @@ playsound(src, "punch", 25, 1, -1) M.Weaken(4) M.stop_flying() - if(CanStumbleVore(M)) + if(CanStumbleVore(M)) //This is if the person stumbling into us is able to eat us! visible_message(span_vwarning("[M] flops carelessly into [src]!")) - perform_the_nom(src,M,src,src.vore_selected,1) + M.forceMove(get_turf(src)) + perform_the_nom(src,M,src,src.vore_selected,-1) return - if(M.CanStumbleVore(src)) + if(M.CanStumbleVore(src)) //This is if the person stumbling into us is able to be eaten by us! BROKEN! visible_message(span_vwarning("[M] flops carelessly into [src]!")) - perform_the_nom(M,src,M,M.vore_selected,1) + M.forceMove(get_turf(src)) + perform_the_nom(M,src,M,M.vore_selected,-1) return if(istype(S) && S.species.lightweight == 1) @@ -57,7 +59,7 @@ 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, 2, 1) + 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]!"))