mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-22 04:37:45 +01:00
[MIRROR] Makes absorbs escapable (and other tweaks) (#7318)
Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Co-authored-by: CHOMPStation2 <chompsation2@gmail.com>
This commit is contained in:
co-authored by
Heroman3003
CHOMPStation2
parent
45430008b1
commit
dad9d2cbca
@@ -81,7 +81,7 @@ TODO: Make them light up and heat the air when exposed to oxygen.
|
||||
vore_ignores_undigestable = 0 // they absorb rather than digest, you're going in either way
|
||||
vore_default_mode = DM_HOLD
|
||||
vore_digest_chance = 0 // Chance to switch to digest mode if resisted
|
||||
vore_absorb_chance = 20 // BECOME A PART OF ME.
|
||||
vore_absorb_chance = 100 // Will always start to absorb if the prey fails its generous escape chance
|
||||
vore_pounce_chance = 5 // Small chance to punish people who abuse their nomming behaviour to try and kite them forever with repeated melee attacks.
|
||||
vore_stomach_name = "internal chamber"
|
||||
vore_stomach_flavor = "You are squeezed into the tight embrace of the alien creature's warm and cozy insides."
|
||||
@@ -94,7 +94,8 @@ TODO: Make them light up and heat the air when exposed to oxygen.
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "internal chamber"
|
||||
B.desc = "Having been too slow to disentangle yourself from the gaslamp's tentacles, the alien creature eventually winds enough of them around your body to lift you up off of the ground. Struggle as you might now, it is too late to deny the jellyfish-esque scavenger its lucky catch; inch by inch, the gaslamp tugs you upwards into its equivalent of a stomach, the transition between the cool-to-frigid atmosphere on the outside to its surprising internal heat something you can feel through any outer wear you possess. Minutes pass, soon resulting in the gentle creature's body sporting a rounded, bulging swell, an indistinct shadow shifting and twitching inside it as you squirm about. Be it to escape or simply to get settled, you might want to take care, however. The gaslamp's internal chamber is slick and squishy instead of overly oppressive, yet, each wave of warmth that pulses over you leaves you feeling weaker than the last..."
|
||||
|
||||
B.escapechance = 40 //easy to squirm out of...
|
||||
B.escapechance_absorbed = 5 //...but EXTREMELY clingy if you fail
|
||||
B.emote_lists[DM_HOLD] = list(
|
||||
"The gaslamp gently bobs up and down as it lazily drifts elsewhere, the movement hardly enough to disturb the shadowy, indistinct figure curled up within it: you.",
|
||||
"The fungal creature’s inner walls tenderly ripple and squeeze about your form for a few moments, squelching softly... until another wave of warmth pulses through the chamber.",
|
||||
|
||||
@@ -572,7 +572,7 @@ I think I covered everything.
|
||||
autotransferwait = 150
|
||||
escapable = 1
|
||||
escapechance = 100
|
||||
escapetime = 30
|
||||
escapetime = 15
|
||||
fancy_vore = 1
|
||||
contamination_color = "grey"
|
||||
contamination_flavor = "Wet"
|
||||
|
||||
@@ -325,7 +325,7 @@
|
||||
B.digestchance = 0
|
||||
B.absorbchance = 0
|
||||
B.escapechance = 10
|
||||
B.escapetime = 10 SECONDS
|
||||
B.escapetime = 5 SECONDS
|
||||
B.selective_preference = DM_DIGEST
|
||||
B.escape_stun = 3
|
||||
|
||||
|
||||
@@ -27,10 +27,11 @@
|
||||
var/digest_clone = 0 // Clone damage per tick in digestion mode
|
||||
var/immutable = FALSE // Prevents this belly from being deleted
|
||||
var/escapable = FALSE // Belly can be resisted out of at any time
|
||||
var/escapetime = 20 SECONDS // Deciseconds, how long to escape this belly
|
||||
var/escapetime = 10 SECONDS // Deciseconds, how long to escape this belly
|
||||
var/digestchance = 0 // % Chance of stomach beginning to digest if prey struggles
|
||||
var/absorbchance = 0 // % Chance of stomach beginning to absorb if prey struggles
|
||||
var/escapechance = 0 // % Chance of prey beginning to escape if prey struggles.
|
||||
var/escapechance_absorbed = 20 // % Chance of absorbed prey finishing an escape. Requires a successful escape roll against the above as well.
|
||||
var/escape_stun = 0 // AI controlled mobs with a number here will be weakened by the provided var when someone escapes, to prevent endless nom loops
|
||||
var/transferchance = 0 // % Chance of prey being trasnsfered, goes from 0-100%
|
||||
var/transferchance_secondary = 0 // % Chance of prey being transfered to transferchance_secondary, also goes 0-100%
|
||||
@@ -1545,7 +1546,6 @@
|
||||
|
||||
for(var/mob/M in hearers(4, owner))
|
||||
M.show_message(struggle_outer_message, 2) // hearable
|
||||
to_chat(R, struggle_user_message)
|
||||
|
||||
var/sound/struggle_snuggle
|
||||
var/sound/struggle_rustle = sound(get_sfx("rustle"))
|
||||
@@ -1645,10 +1645,10 @@
|
||||
return
|
||||
|
||||
else //Nothing interesting happened.
|
||||
to_chat(R, "<span class='warning'>You make no progress in escaping [owner]'s [lowertext(name)].</span>")
|
||||
to_chat(R, struggle_user_message)
|
||||
to_chat(owner, "<span class='warning'>Your prey appears to be unable to make any progress in escaping your [lowertext(name)].</span>")
|
||||
return
|
||||
|
||||
to_chat(R, struggle_user_message)
|
||||
|
||||
/obj/belly/proc/relay_absorbed_resist(mob/living/R)
|
||||
if (!(R in contents) || !R.absorbed)
|
||||
@@ -1679,7 +1679,6 @@
|
||||
|
||||
for(var/mob/M in hearers(4, owner))
|
||||
M.show_message(struggle_outer_message, 2) // hearable
|
||||
to_chat(R, struggle_user_message)
|
||||
|
||||
var/sound/struggle_snuggle
|
||||
var/sound/struggle_rustle = sound(get_sfx("rustle"))
|
||||
@@ -1693,6 +1692,27 @@
|
||||
else
|
||||
playsound(src, struggle_rustle, vary = 1, vol = 75, falloff = VORE_SOUND_FALLOFF, frequency = noise_freq, preference = /datum/client_preference/digestion_noises, volume_channel = VOLUME_CHANNEL_VORE) //CHOMPEdit
|
||||
|
||||
//absorb resists
|
||||
if(escapable || owner.stat) //If the stomach has escapable enabled or the owner is dead/unconscious
|
||||
if(prob(escapechance) || owner.stat) //Let's have it check to see if the prey's escape attempt starts.
|
||||
to_chat(R, "<span class='warning'>You try to force yourself out of \the [lowertext(name)].</span>")
|
||||
to_chat(owner, "<span class='warning'>Someone is attempting to free themselves from your [lowertext(name)]!</span>")
|
||||
if(do_after(R, escapetime))
|
||||
if((escapable || owner.stat) && (R.loc == src) && prob(escapechance_absorbed)) //Does the escape attempt succeed?
|
||||
release_specific_contents(R)
|
||||
to_chat(R,"<span class='warning'>You manage to free yourself from \the [lowertext(name)].</span>")
|
||||
to_chat(owner,"<span class='warning'>[R] forces themselves free of your [lowertext(name)]!</span>")
|
||||
for(var/mob/M in hearers(4, owner))
|
||||
M.show_message("<span class='warning'>[R] climbs out of [owner]'s [lowertext(name)]!</span>", 2)
|
||||
return
|
||||
else if(!(R.loc == src)) //Aren't even in the belly. Quietly fail.
|
||||
return
|
||||
else //Belly became inescapable or you failed your roll.
|
||||
to_chat(R,"<span class='warning'>Before you manage to reach freedom, you feel yourself getting dragged back into \the [lowertext(name)]!</span>")
|
||||
to_chat(owner,"<span class='notice'>The attempt to escape from your [lowertext(name)] has failed!</span>")
|
||||
return
|
||||
to_chat(R, struggle_user_message)
|
||||
|
||||
/obj/belly/proc/get_mobs_and_objs_in_belly()
|
||||
var/list/see = list()
|
||||
var/list/belly_mobs = list()
|
||||
|
||||
Reference in New Issue
Block a user