Merge pull request #3185 from Verkister/voreday

A whole bunch of vore related fixes.
This commit is contained in:
Aronai Sieyes
2018-03-06 13:08:43 -05:00
committed by GitHub
14 changed files with 35 additions and 13 deletions
+1 -1
View File
@@ -70,7 +70,7 @@
if(stat == DEAD)
return 0
if(src.loc && istype(loc,/mob/living)) deathmessage = "no message" //VOREStation Add - Prevents death messages from inside mobs
if(src.loc && istype(loc,/obj/belly)) deathmessage = "no message" //VOREStation Add - Prevents death messages from inside mobs
facing_dir = null
if(!gibbed && deathmessage != "no message") // This is gross, but reliable. Only brains use it.
@@ -901,6 +901,11 @@
if(overeatduration > 1)
overeatduration -= 2 //doubled the unfat rate
if(noisy == TRUE && nutrition < 250 && prob(10)) //VOREStation edit for hunger noises.
var/growlsound = pick(hunger_sounds)
var/growlmultiplier = 100 - (nutrition / 250 * 100)
playsound(src, growlsound, vol = growlmultiplier, vary = 1, falloff = 0.1, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises)
if(!isSynthetic() && (species.flags & IS_PLANT) && (!light_organ || light_organ.is_broken()))
if(nutrition < 200)
take_overall_damage(2,0)
@@ -123,6 +123,7 @@
//R.icon_state = "k9"
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
..()
@@ -175,6 +176,7 @@
//R.icon_state = "medihound"
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
..()
@@ -202,6 +204,7 @@
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
..()
@@ -226,6 +229,7 @@
//R.icon_state = "scrubpup"
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
..()
@@ -259,6 +263,7 @@
//R.icon_state = "science"
R.pixel_x = -16
R.old_x = -16
R.default_pixel_x = -16
R.dogborg = TRUE
R.wideborg = TRUE
..()
@@ -89,7 +89,7 @@
if(M.size_multiplier < vore_min_size || M.size_multiplier > vore_max_size)
ai_log("vr/wont eat [M] because they too small or too big", 3)
return 0
if(vore_capacity != 0 && (vore_fullness + M.size_multiplier > vore_capacity)) // We're too full to fit them
if(vore_capacity != 0 && (vore_fullness >= vore_capacity)) // We're too full to fit them
ai_log("vr/wont eat [M] because I am too full", 3)
return 0
return 1
@@ -188,7 +188,7 @@
"The juices pooling beneath you sizzle against your sore skin.",
"The churning walls slowly pulverize you into meaty nutrients.",
"The stomach glorps and gurgles as it tries to work you into slop.")
/mob/living/simple_animal/Bumped(var/atom/movable/AM, yes)
if(ismob(AM))
var/mob/tmob = AM
@@ -33,6 +33,7 @@
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
@@ -5,7 +5,7 @@
icon_dead = "megacarp-dead"
icon_living = "megacarp"
icon_state = "megacarp"
maxHealth = 600 // Boss
health = 600
speed = 3
@@ -16,6 +16,8 @@
melee_damage_upper = 25
old_x = -16
old_y = -16
default_pixel_x = -16
default_pixel_y = -16
pixel_x = -16
pixel_y = -16
vore_capacity = 2
@@ -18,6 +18,7 @@
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
@@ -26,6 +26,7 @@
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
@@ -41,6 +41,7 @@
meat_amount = 6
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
@@ -193,7 +194,7 @@
. = ..()
/mob/living/simple_animal/otie/security/feed_grabbed_to_self(var/mob/living/user, var/mob/living/prey) // Make the gut start out safe for bellybrigging.
if(ishuman(target_mob))
if(ishuman(prey))
vore_selected.digest_mode = DM_HOLD
if(istype(prey,/mob/living/simple_animal/mouse))
vore_selected.digest_mode = DM_DIGEST
@@ -22,6 +22,7 @@
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
@@ -15,6 +15,8 @@
old_x = -16
old_y = -16
default_pixel_x = -16
default_pixel_y = -16
pixel_x = -16
pixel_y = -16
@@ -68,6 +68,7 @@
vore_icons = SA_ICON_LIVING
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
+7 -5
View File
@@ -1,4 +1,4 @@
#define VORE_SOUND_FALLOFF 0.05
#define VORE_SOUND_FALLOFF 0.1
//
// Belly system 2.0, now using objects instead of datums because EH at datums.
@@ -44,7 +44,7 @@
var/tmp/list/items_preserved = list() // Stuff that wont digest so we shouldn't process it again.
var/tmp/next_emote = 0 // When we're supposed to print our next emote, as a belly controller tick #
var/tmp/recent_sound = FALSE // Prevent audio spam
// Don't forget to watch your commas at the end of each line if you change these.
var/list/struggle_messages_outside = list(
"%pred's %belly wobbles with a squirming meal.",
@@ -152,14 +152,14 @@
//Generic entered message
to_chat(owner,"<span class='notice'>[thing] slides into your [lowertext(name)].</span>")
//Sound w/ antispam flag setting
if(vore_sound && !recent_sound)
var/soundfile = vore_sounds[vore_sound]
if(soundfile)
playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
recent_sound = TRUE
//Messages if it's a mob
if(isliving(thing))
var/mob/living/M = thing
@@ -168,11 +168,13 @@
var/taste
if(can_taste && (taste = M.get_taste_message(FALSE)))
to_chat(owner, "<span class='notice'>[M] tastes of [taste].</span>")
// Release all contents of this belly into the owning mob's location.
// If that location is another mob, contents are transferred into whichever of its bellies the owning mob is in.
// Returns the number of mobs so released.
/obj/belly/proc/release_all_contents(var/include_absorbed = FALSE)
if(!contents.len)
return 0
var/atom/destination = drop_location()
var/count = 0
for(var/thing in contents)
+3 -3
View File
@@ -3,7 +3,7 @@
if((times_fired < next_process) || !contents.len)
recent_sound = FALSE
return SSBELLIES_IGNORED
if(loc != owner)
if(istype(owner))
loc = owner
@@ -41,7 +41,7 @@
if(prob(50)) //Was SO OFTEN. AAAA.
play_sound = pick(digestion_sounds)
for (var/mob/living/M in contents)
//Pref protection!
if (!M.digestable || M.absorbed)
@@ -472,5 +472,5 @@
put_in_egg(P,1)
if(play_sound)
playsound(src, play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, ignore_walls = FALSE, preference = /datum/client_preference/digestion_noises)
playsound(src, play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises)
return SSBELLIES_PROCESSED