diff --git a/code/__defines/sound.dm b/code/__defines/sound.dm
index 0995f0e071f..d954d34b2a0 100644
--- a/code/__defines/sound.dm
+++ b/code/__defines/sound.dm
@@ -8,11 +8,12 @@
#define CHANNEL_AMBIENCE 1018
#define CHANNEL_BUZZ 1017
#define CHANNEL_BICYCLE 1016
+#define CHANNEL_PREYLOOP 1015 //VORESTATION ADD - Fancy Sound Loop channel
//THIS SHOULD ALWAYS BE THE LOWEST ONE!
//KEEP IT UPDATED
-#define CHANNEL_HIGHEST_AVAILABLE 1015
+#define CHANNEL_HIGHEST_AVAILABLE 1014 //VORESTATION EDIT - Fancy Sound Loop channel from 1015
#define SOUND_MINIMUM_PRESSURE 10
#define FALLOFF_SOUNDS 0.5
diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm
index d1037b37abd..c9a64048a8b 100644
--- a/code/_helpers/global_lists_vr.dm
+++ b/code/_helpers/global_lists_vr.dm
@@ -42,40 +42,8 @@ var/global/list/item_vore_blacklist = list(
/obj/item/weapon/disk/nuclear,
/obj/item/clothing/suit/storage/hooded/wintercoat/roiz)
-var/global/list/digestion_sounds = list(
- 'sound/vore/digest1.ogg',
- 'sound/vore/digest2.ogg',
- 'sound/vore/digest3.ogg',
- 'sound/vore/digest4.ogg',
- 'sound/vore/digest5.ogg',
- 'sound/vore/digest6.ogg',
- 'sound/vore/digest7.ogg',
- 'sound/vore/digest8.ogg',
- 'sound/vore/digest9.ogg',
- 'sound/vore/digest10.ogg',
- 'sound/vore/digest11.ogg',
- 'sound/vore/digest12.ogg')
-
-var/global/list/death_sounds = list(
- 'sound/vore/death1.ogg',
- 'sound/vore/death2.ogg',
- 'sound/vore/death3.ogg',
- 'sound/vore/death4.ogg',
- 'sound/vore/death5.ogg',
- 'sound/vore/death6.ogg',
- 'sound/vore/death7.ogg',
- 'sound/vore/death8.ogg',
- 'sound/vore/death9.ogg',
- 'sound/vore/death10.ogg')
-
-var/global/list/hunger_sounds = list(
- 'sound/vore/growl1.ogg',
- 'sound/vore/growl2.ogg',
- 'sound/vore/growl3.ogg',
- 'sound/vore/growl4.ogg',
- 'sound/vore/growl5.ogg')
-
-var/global/list/vore_sounds = list(
+//Classic Vore sounds
+var/global/list/classic_vore_sounds = list(
"Gulp" = 'sound/vore/gulp.ogg',
"Insert" = 'sound/vore/insert.ogg',
"Insertion1" = 'sound/vore/insertion1.ogg',
@@ -86,15 +54,55 @@ var/global/list/vore_sounds = list(
"Squish2" = 'sound/vore/squish2.ogg',
"Squish3" = 'sound/vore/squish3.ogg',
"Squish4" = 'sound/vore/squish4.ogg',
- "Rustle (cloth)" = 'sound/effects/rustle5.ogg',
+ "Rustle (cloth)" = 'sound/effects/rustle1.ogg',
+ "Rustle 2 (cloth)" = 'sound/effects/rustle2.ogg',
+ "Rustle 3 (cloth)" = 'sound/effects/rustle3.ogg',
+ "Rustle 4 (cloth)" = 'sound/effects/rustle4.ogg',
+ "Rustle 5 (cloth)" = 'sound/effects/rustle5.ogg',
"None" = null)
-var/global/list/struggle_sounds = list(
- "Squish1" = 'sound/vore/squish1.ogg',
- "Squish2" = 'sound/vore/squish2.ogg',
- "Squish3" = 'sound/vore/squish3.ogg',
- "Squish4" = 'sound/vore/squish4.ogg')
+var/global/list/classic_release_sounds = list(
+ "Rustle (cloth)" = 'sound/effects/rustle1.ogg',
+ "Rustle 2 (cloth)" = 'sound/effects/rustle2.ogg',
+ "Rustle 3 (cloth)" = 'sound/effects/rustle3.ogg',
+ "Rustle 4 (cloth)" = 'sound/effects/rustle4.ogg',
+ "Rustle 5 (cloth)" = 'sound/effects/rustle5.ogg',
+ "Splatter" = 'sound/effects/splat.ogg',
+ "None" = null
+ )
+//Poojy's Fancy Sounds
+var/global/list/fancy_vore_sounds = list(
+ "Gulp" = 'sound/vore/sunesound/pred/swallow_01.ogg',
+ "Swallow" = 'sound/vore/sunesound/pred/swallow_02.ogg',
+ "Insertion1" = 'sound/vore/sunesound/pred/insertion_01.ogg',
+ "Insertion2" = 'sound/vore/sunesound/pred/insertion_02.ogg',
+ "Tauric Swallow" = 'sound/vore/sunesound/pred/taurswallow.ogg',
+ "Stomach Move" = 'sound/vore/sunesound/pred/stomachmove.ogg',
+ "Schlorp" = 'sound/vore/sunesound/pred/schlorp.ogg',
+ "Squish1" = 'sound/vore/sunesound/pred/squish_01.ogg',
+ "Squish2" = 'sound/vore/sunesound/pred/squish_02.ogg',
+ "Squish3" = 'sound/vore/sunesound/pred/squish_03.ogg',
+ "Squish4" = 'sound/vore/sunesound/pred/squish_04.ogg',
+ "Rustle (cloth)" = 'sound/effects/rustle1.ogg',
+ "Rustle 2 (cloth)" = 'sound/effects/rustle2.ogg',
+ "Rustle 3 (cloth)" = 'sound/effects/rustle3.ogg',
+ "Rustle 4 (cloth)" = 'sound/effects/rustle4.ogg',
+ "Rustle 5 (cloth)" = 'sound/effects/rustle5.ogg',
+ "None" = null
+ )
+
+var/global/list/fancy_release_sounds = list(
+ "Rustle (cloth)" = 'sound/effects/rustle1.ogg',
+ "Rustle 2 (cloth)" = 'sound/effects/rustle2.ogg',
+ "Rustle 3 (cloth)" = 'sound/effects/rustle3.ogg',
+ "Rustle 4 (cloth)" = 'sound/effects/rustle4.ogg',
+ "Rustle 5 (cloth)" = 'sound/effects/rustle5.ogg',
+ "Stomach Move" = 'sound/vore/sunesound/pred/stomachmove.ogg',
+ "Pred Escape" = 'sound/vore/sunesound/pred/escape.ogg',
+ "Splatter" = 'sound/effects/splat.ogg',
+ "None" = null
+ )
var/global/list/global_vore_egg_types = list(
"Unathi" = UNATHI_EGG,
diff --git a/code/controllers/subsystems/vote.dm b/code/controllers/subsystems/vote.dm
index e7c3d5aaf9b..54fb4879851 100644
--- a/code/controllers/subsystems/vote.dm
+++ b/code/controllers/subsystems/vote.dm
@@ -105,7 +105,7 @@ SUBSYSTEM_DEF(vote)
factor = 1.4
choices["Initiate Crew Transfer"] = round(choices["Initiate Crew Transfer"] * factor)
world << "Crew Transfer Factor: [factor]"
- greatest_votes = max(choices["Initiate Crew Transfer"], choices["Continue The Round"])
+ greatest_votes = max(choices["Initiate Crew Transfer"], choices["Extend the Shift"]) //VOREStation Edit
. = list() // Get all options with that many votes and return them in a list
if(greatest_votes)
@@ -220,8 +220,8 @@ SUBSYSTEM_DEF(vote)
if(ticker.current_state <= GAME_STATE_SETTING_UP)
initiator_key << "The crew transfer button has been disabled!"
return 0
- question = "End the shift?"
- choices.Add("Initiate Crew Transfer", "Continue The Round")
+ question = "Your PDA beeps with a message from Central. Would you like an additional hour to finish ongoing projects?" //VOREStation Edit
+ choices.Add("Initiate Crew Transfer", "Extend the Shift") //VOREStation Edit
if(VOTE_ADD_ANTAGONIST)
if(!config.allow_extra_antags || ticker.current_state >= GAME_STATE_SETTING_UP)
return 0
diff --git a/code/datums/autolathe/arms_vr.dm b/code/datums/autolathe/arms_vr.dm
index 72f0b9d15ab..546141457d3 100644
--- a/code/datums/autolathe/arms_vr.dm
+++ b/code/datums/autolathe/arms_vr.dm
@@ -32,3 +32,21 @@
name = "magazine (.44 rubber)"
path =/obj/item/ammo_magazine/m44/rubber
hidden = 1
+
+/datum/category_item/autolathe/arms/classic_smg_9mm
+ name = "SMG magazine (9mm)"
+ path = /obj/item/ammo_magazine/m9mml
+ hidden = 1
+/* De-coded?
+/datum/category_item/autolathe/arms/classic_smg_9mmr
+ name = "SMG magazine (9mm rubber)"
+ path = /obj/item/ammo_magazine/m9mml/rubber
+
+/datum/category_item/autolathe/arms/classic_smg_9mmp
+ name = "SMG magazine (9mm practice)"
+ path = /obj/item/ammo_magazine/m9mml/practice
+
+/datum/category_item/autolathe/arms/classic_smg_9mmf
+ name = "SMG magazine (9mm flash)"
+ path = /obj/item/ammo_magazine/m9mml/flash
+*/
\ No newline at end of file
diff --git a/code/game/machinery/autolathe_vr.dm b/code/game/machinery/autolathe_vr.dm
deleted file mode 100644
index 489c97f2f52..00000000000
--- a/code/game/machinery/autolathe_vr.dm
+++ /dev/null
@@ -1,17 +0,0 @@
-/datum/category_item/autolathe/arms/classic_smg_9mm
- name = "SMG magazine (9mm)"
- path = /obj/item/ammo_magazine/m9mml
- hidden = 1
-/* De-coded?
-/datum/category_item/autolathe/arms/classic_smg_9mmr
- name = "SMG magazine (9mm rubber)"
- path = /obj/item/ammo_magazine/m9mml/rubber
-
-/datum/category_item/autolathe/arms/classic_smg_9mmp
- name = "SMG magazine (9mm practice)"
- path = /obj/item/ammo_magazine/m9mml/practice
-
-/datum/category_item/autolathe/arms/classic_smg_9mmf
- name = "SMG magazine (9mm flash)"
- path = /obj/item/ammo_magazine/m9mml/flash
-*/
\ No newline at end of file
diff --git a/code/game/sound.dm b/code/game/sound.dm
index b1f0c32f66c..cd3b140bd9f 100644
--- a/code/game/sound.dm
+++ b/code/game/sound.dm
@@ -137,6 +137,46 @@
if ("button") soundin = pick('sound/machines/button1.ogg','sound/machines/button2.ogg','sound/machines/button3.ogg','sound/machines/button4.ogg')
if ("switch") soundin = pick('sound/machines/switch1.ogg','sound/machines/switch2.ogg','sound/machines/switch3.ogg','sound/machines/switch4.ogg')
if ("casing_sound") soundin = pick('sound/weapons/casingfall1.ogg','sound/weapons/casingfall2.ogg','sound/weapons/casingfall3.ogg')
+ //VORESTATION EDIT - vore sounds for better performance
+ if ("hunger_sounds") soundin = pick('sound/vore/growl1.ogg','sound/vore/growl2.ogg','sound/vore/growl3.ogg','sound/vore/growl4.ogg','sound/vore/growl5.ogg')
+
+ if("classic_digestion_sounds") soundin = pick(
+ 'sound/vore/digest1.ogg','sound/vore/digest2.ogg','sound/vore/digest3.ogg','sound/vore/digest4.ogg',
+ 'sound/vore/digest5.ogg','sound/vore/digest6.ogg','sound/vore/digest7.ogg','sound/vore/digest8.ogg',
+ 'sound/vore/digest9.ogg','sound/vore/digest10.ogg','sound/vore/digest11.ogg','sound/vore/digest12.ogg')
+ if("classic_death_sounds") soundin = pick(
+ 'sound/vore/death1.ogg','sound/vore/death2.ogg','sound/vore/death3.ogg','sound/vore/death4.ogg','sound/vore/death5.ogg',
+ 'sound/vore/death6.ogg','sound/vore/death7.ogg','sound/vore/death8.ogg','sound/vore/death9.ogg','sound/vore/death10.ogg')
+ if("classic_struggle_sounds") soundin = pick('sound/vore/squish1.ogg','sound/vore/squish2.ogg','sound/vore/squish3.ogg','sound/vore/squish4.ogg')
+
+ if("fancy_prey_struggle") soundin = pick(
+ 'sound/vore/sunesound/prey/struggle_01.ogg','sound/vore/sunesound/prey/struggle_02.ogg','sound/vore/sunesound/prey/struggle_03.ogg',
+ 'sound/vore/sunesound/prey/struggle_04.ogg','sound/vore/sunesound/prey/struggle_05.ogg')
+ if("fancy_digest_pred") soundin = pick(
+ 'sound/vore/sunesound/pred/digest_01.ogg','sound/vore/sunesound/pred/digest_02.ogg','sound/vore/sunesound/pred/digest_03.ogg',
+ 'sound/vore/sunesound/pred/digest_04.ogg','sound/vore/sunesound/pred/digest_05.ogg','sound/vore/sunesound/pred/digest_06.ogg',
+ 'sound/vore/sunesound/pred/digest_07.ogg','sound/vore/sunesound/pred/digest_08.ogg','sound/vore/sunesound/pred/digest_09.ogg',
+ 'sound/vore/sunesound/pred/digest_10.ogg','sound/vore/sunesound/pred/digest_11.ogg','sound/vore/sunesound/pred/digest_12.ogg',
+ 'sound/vore/sunesound/pred/digest_13.ogg','sound/vore/sunesound/pred/digest_14.ogg','sound/vore/sunesound/pred/digest_15.ogg',
+ 'sound/vore/sunesound/pred/digest_16.ogg','sound/vore/sunesound/pred/digest_17.ogg','sound/vore/sunesound/pred/digest_18.ogg')
+ if("fancy_death_pred") soundin = pick(
+ 'sound/vore/sunesound/pred/death_01.ogg','sound/vore/sunesound/pred/death_02.ogg','sound/vore/sunesound/pred/death_03.ogg',
+ 'sound/vore/sunesound/pred/death_04.ogg','sound/vore/sunesound/pred/death_05.ogg','sound/vore/sunesound/pred/death_06.ogg',
+ 'sound/vore/sunesound/pred/death_07.ogg','sound/vore/sunesound/pred/death_08.ogg','sound/vore/sunesound/pred/death_09.ogg',
+ 'sound/vore/sunesound/pred/death_10.ogg')
+ if("fancy_digest_prey") soundin = pick(
+ 'sound/vore/sunesound/prey/digest_01.ogg','sound/vore/sunesound/prey/digest_02.ogg','sound/vore/sunesound/prey/digest_03.ogg',
+ 'sound/vore/sunesound/prey/digest_04.ogg','sound/vore/sunesound/prey/digest_05.ogg','sound/vore/sunesound/prey/digest_06.ogg',
+ 'sound/vore/sunesound/prey/digest_07.ogg','sound/vore/sunesound/prey/digest_08.ogg','sound/vore/sunesound/prey/digest_09.ogg',
+ 'sound/vore/sunesound/prey/digest_10.ogg','sound/vore/sunesound/prey/digest_11.ogg','sound/vore/sunesound/prey/digest_12.ogg',
+ 'sound/vore/sunesound/prey/digest_13.ogg','sound/vore/sunesound/prey/digest_14.ogg','sound/vore/sunesound/prey/digest_15.ogg',
+ 'sound/vore/sunesound/prey/digest_16.ogg','sound/vore/sunesound/prey/digest_17.ogg','sound/vore/sunesound/prey/digest_18.ogg')
+ if("fancy_death_prey") soundin = pick(
+ 'sound/vore/sunesound/prey/death_01.ogg','sound/vore/sunesound/prey/death_02.ogg','sound/vore/sunesound/prey/death_03.ogg',
+ 'sound/vore/sunesound/prey/death_04.ogg','sound/vore/sunesound/prey/death_05.ogg','sound/vore/sunesound/prey/death_06.ogg',
+ 'sound/vore/sunesound/prey/death_07.ogg','sound/vore/sunesound/prey/death_08.ogg','sound/vore/sunesound/prey/death_09.ogg',
+ 'sound/vore/sunesound/prey/death_10.ogg')
+ //END VORESTATION EDIT
return soundin
//Are these even used?
diff --git a/code/modules/client/preferences_vr.dm b/code/modules/client/preferences_vr.dm
index 61c2d83025a..5c8171ce27c 100644
--- a/code/modules/client/preferences_vr.dm
+++ b/code/modules/client/preferences_vr.dm
@@ -2,3 +2,35 @@
datum/preferences
var/show_in_directory = 1 //TFF 5/8/19 - show in Character Directory
var/sensorpref = 5 //TFF 5/8/19 - set character's suit sensor level
+
+//Why weren't these in game toggles already?
+/client/verb/toggle_eating_noises()
+ set name = "Eating Noises"
+ set category = "Preferences"
+ set desc = "Toggles Vore Eating noises."
+
+ var/pref_path = /datum/client_preference/eating_noises
+
+ toggle_preference(pref_path)
+
+ src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear eating related vore noises."
+
+ SScharacter_setup.queue_preferences_save(prefs)
+
+ feedback_add_details("admin_verb","TEatNoise") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
+
+/client/verb/toggle_digestion_noises()
+ set name = "Digestion Noises"
+ set category = "Preferences"
+ set desc = "Toggles Vore Digestion noises."
+
+ var/pref_path = /datum/client_preference/digestion_noises
+
+ toggle_preference(pref_path)
+
+ src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear digestion related vore noises."
+
+ SScharacter_setup.queue_preferences_save(prefs)
+
+ feedback_add_details("admin_verb","TDigestNoise") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index cb63df8d563..bfa1d82e374 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -923,7 +923,7 @@
overeatduration -= 2 //doubled the unfat rate
if(noisy == TRUE && nutrition < 250 && prob(10)) //VOREStation edit for hunger noises.
- var/growlsound = pick(hunger_sounds)
+ var/sound/growlsound = sound(get_sfx("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)
// VOREStation Edit End
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/demon/_defines.dm b/code/modules/mob/living/simple_mob/subtypes/vore/demon/_defines.dm
new file mode 100644
index 00000000000..9557856f609
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/demon/_defines.dm
@@ -0,0 +1,3 @@
+#define AB_SHIFT_NONE 0
+#define AB_SHIFT_PASSIVE 1
+#define AB_SHIFT_ACTIVE 2
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon.dm b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon.dm
new file mode 100644
index 00000000000..b330e8fcb09
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon.dm
@@ -0,0 +1,86 @@
+/mob/living/simple_mob/vore/demon
+ name = "Rift Walker"
+ desc = "A large bipedal creature, body a mix of dark fur and scales. Marks on the creatures body pulse slowly with red light"
+
+ icon_state = "boxfox"
+ icon_living = "boxfox"
+ icon_dead = "boxfox_dead"
+ icon_rest = "boxfox_rest"
+ icon = 'icons/mob/demon_vr.dmi'
+
+ faction = "demon"
+ maxHealth = 30
+ health = 30
+ movement_cooldown = 0
+
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+ maxbodytemp = INFINITY
+
+ response_help = "touches"
+ response_disarm = "pushes"
+ response_harm = "hits"
+
+ melee_damage_lower = 3
+ melee_damage_upper = 1
+ attacktext = list("clawed")
+
+ vore_active = TRUE
+ vore_icons = SA_ICON_LIVING
+
+ var/shifted_out = FALSE
+ var/shift_state = AB_SHIFT_NONE
+ var/last_shift = 0
+ var/is_shifting = FALSE
+
+/mob/living/simple_mob/vore/demon/init_vore()
+ ..()
+ var/obj/belly/B = vore_selected
+ B.name = "Stomach"
+ B.desc = "You slide down the slick, slippery gullet of the creature. It's warm, and the air is thick. You can feel the doughy walls of the creatures gut push and knead into your form! Slimy juices coat your form stinging against your flesh as they waste no time to start digesting you. The creature's heartbeat and the gurgling of their stomach are all you can hear as your jostled about, treated like nothing but food."
+
+/mob/living/simple_mob/vore/demon/UnarmedAttack()
+ if(shifted_out)
+ return FALSE
+
+ . = ..()
+
+/mob/living/simple_mob/vore/demon/can_fall()
+ if(shifted_out)
+ return FALSE
+
+ return ..()
+
+/mob/living/simple_mob/vore/demon/zMove(direction)
+ if(shifted_out)
+ var/turf/destination = (direction == UP) ? GetAbove(src) : GetBelow(src)
+ if(destination)
+ forceMove(destination)
+ return TRUE
+
+ return ..()
+
+/mob/living/simple_mob/vore/demon/Life()
+ . = ..()
+ if(shifted_out)
+ density = FALSE
+
+/mob/living/simple_mob/vore/demon/handle_atmos()
+ if(shifted_out)
+ return
+ else
+ return .=..()
+
+/mob/living/simple_mob/vore/demon/update_canmove()
+ if(is_shifting)
+ canmove = FALSE
+ return canmove
+ else
+ return ..()
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_abilities.dm b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_abilities.dm
new file mode 100644
index 00000000000..c95dbded2c4
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_abilities.dm
@@ -0,0 +1,214 @@
+/mob/living/simple_mob/vore/demon/verb/blood_crawl()
+ set name = "Bloodcrawl"
+ set desc = "Shift out of reality using blood as your gateway"
+ set category = "Abilities"
+
+ var/turf/T = get_turf(src)
+ if(!T.CanPass(src,T) || loc != T)
+ to_chat(src,"You can't use that here!")
+ return FALSE
+
+ if(shift_state && shift_state == AB_SHIFT_ACTIVE)
+ to_chat(src,"You can't do a shift while actively shifting!")
+ return FALSE
+
+ if(!(locate(/obj/effect/decal/cleanable/blood) in src.loc))
+ to_chat(src,"You need blood to shift between realities!")
+ return FALSE
+
+ forceMove(T)
+ var/original_canmove = canmove
+ SetStunned(0)
+ SetWeakened(0)
+ if(buckled)
+ buckled.unbuckle_mob()
+ if(pulledby)
+ pulledby.stop_pulling()
+ stop_pulling()
+ canmove = FALSE
+ is_shifting = TRUE
+
+ //Shifting in
+ if(shifted_out)
+ shifted_out = FALSE
+ name = real_name
+ for(var/belly in vore_organs)
+ var/obj/belly/B = belly
+ B.escapable = initial(B.escapable)
+
+ overlays.Cut()
+ alpha = initial(alpha)
+ invisibility = initial(invisibility)
+ see_invisible = initial(see_invisible)
+ incorporeal_move = initial(incorporeal_move)
+ density = initial(density)
+ force_max_speed = initial(force_max_speed)
+
+ //Cosmetics mostly
+ flick("phasein",src)
+ custom_emote(1,"phases in!")
+ sleep(30) //The duration of the TP animation
+ is_shifting = FALSE
+ canmove = original_canmove
+
+ //Potential phase-in vore
+ if(can_be_drop_pred) //Toggleable in vore panel
+ var/list/potentials = living_mobs(0)
+ if(potentials.len)
+ var/mob/living/target = pick(potentials)
+ if(istype(target) && vore_selected)
+ target.forceMove(vore_selected)
+ to_chat(target,"\The [src] phases in around you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!")
+
+ // Do this after the potential vore, so we get the belly
+ update_icon()
+
+ shift_state = AB_SHIFT_NONE
+
+ /*
+ //Affect nearby lights
+ var/destroy_lights = 0
+
+ for(var/obj/machinery/light/L in machines)
+ if(L.z != z || get_dist(src,L) > 10)
+ continue
+
+ if(prob(destroy_lights))
+ spawn(rand(5,25))
+ L.broken()
+ else
+ L.flicker(10)
+ */
+
+ //Shifting out
+ else
+ shifted_out = TRUE
+ shift_state = AB_SHIFT_PASSIVE
+ custom_emote(1,"phases out!")
+ real_name = name
+ name = "Something"
+ health = maxHealth //Fullheal
+
+ for(var/belly in vore_organs)
+ var/obj/belly/B = belly
+ B.escapable = FALSE
+
+ overlays.Cut()
+ flick("phaseout",src)
+ sleep(30)
+ invisibility = INVISIBILITY_LEVEL_TWO
+ see_invisible = INVISIBILITY_LEVEL_TWO
+ update_icon()
+ alpha = 127
+
+ is_shifting = FALSE
+ canmove = original_canmove
+ incorporeal_move = TRUE
+ density = FALSE
+ force_max_speed = TRUE
+
+/mob/living/simple_mob/vore/demon/verb/phase_shift()
+ set name = "Phase Shift"
+ set desc = "Shift out of reality temporarily"
+ set category = "Abilities"
+
+
+ var/turf/T = get_turf(src)
+
+ if(shift_state && shift_state == AB_SHIFT_PASSIVE)
+ to_chat(src,"You can't do a shift while passively shifting!")
+ return FALSE
+
+ if(shifted_out)
+ to_chat(src,"You can't return to the physical world yet!")
+ return FALSE
+
+ if(world.time - last_shift < 600)
+ to_chat(src,"You can't temporarily shift so soon! You need to wait [round(((last_shift+600)-world.time)/10)] second\s!")
+ return FALSE
+
+ shift_state = AB_SHIFT_ACTIVE
+ forceMove(T)
+ var/original_canmove = canmove
+ SetStunned(0)
+ SetWeakened(0)
+ if(buckled)
+ buckled.unbuckle_mob()
+ if(pulledby)
+ pulledby.stop_pulling()
+ stop_pulling()
+ canmove = FALSE
+ is_shifting = TRUE
+
+ shifted_out = TRUE
+ custom_emote(1,"phases out!")
+ real_name = name
+ name = "Something"
+
+ for(var/belly in vore_organs)
+ var/obj/belly/B = belly
+ B.escapable = FALSE
+
+ overlays.Cut()
+ flick("phaseout",src)
+ sleep(30)
+ invisibility = INVISIBILITY_LEVEL_TWO
+ see_invisible = INVISIBILITY_LEVEL_TWO
+ update_icon()
+ alpha = 127
+
+ is_shifting = FALSE
+ canmove = original_canmove
+ incorporeal_move = TRUE
+ density = FALSE
+ force_max_speed = TRUE
+
+ spawn(300)
+ shifted_out = FALSE
+ name = real_name
+ for(var/belly in vore_organs)
+ var/obj/belly/B = belly
+ B.escapable = initial(B.escapable)
+
+ overlays.Cut()
+ alpha = initial(alpha)
+ invisibility = initial(invisibility)
+ see_invisible = initial(see_invisible)
+ incorporeal_move = initial(incorporeal_move)
+ density = initial(density)
+ force_max_speed = initial(force_max_speed)
+ original_canmove = canmove
+ canmove = FALSE
+ is_shifting = TRUE
+
+ //Cosmetics mostly
+ flick("phasein",src)
+ custom_emote(1,"phases in!")
+ sleep(30) //The duration of the TP animation
+ is_shifting = FALSE
+ canmove = original_canmove
+
+ var/turf/NT = get_turf(src)
+
+ if(!NT.CanPass(src,NT))
+ for(var/direction in list(1,2,4,8,5,6,9,10))
+ var/turf/L = get_step(NT, direction)
+ if(L)
+ if(L.CanPass(src,L))
+ forceMove(L)
+ break
+
+ //Potential phase-in vore
+ if(can_be_drop_pred) //Toggleable in vore panel
+ var/list/potentials = living_mobs(0)
+ if(potentials.len)
+ var/mob/living/target = pick(potentials)
+ if(istype(target) && vore_selected)
+ target.forceMove(vore_selected)
+ to_chat(target,"\The [src] phases in around you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!")
+
+ // Do this after the potential vore, so we get the belly
+ update_icon()
+
+ shift_state = AB_SHIFT_NONE
+ last_shift = world.time
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_subtypes.dm b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_subtypes.dm
new file mode 100644
index 00000000000..acd7cafd5e7
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_subtypes.dm
@@ -0,0 +1,19 @@
+/mob/living/simple_mob/vore/demon/engorge
+ name = "Engorge"
+
+ icon_state = "engorge"
+ icon_living = "engorge"
+ icon_dead = "engorge_dead"
+ icon_rest = "engorge_rest"
+
+ vore_icons = null
+
+/mob/living/simple_mob/vore/demon/zellic
+ name = "Zellic"
+
+ icon_state = "zellic"
+ icon_living = "zellic"
+ icon_dead = "zellic_dead"
+ icon_rest = null
+
+ vore_icons = null
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/demon/~defines.dm b/code/modules/mob/living/simple_mob/subtypes/vore/demon/~defines.dm
new file mode 100644
index 00000000000..8aad13c3e34
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/demon/~defines.dm
@@ -0,0 +1,3 @@
+#undef AB_SHIFT_NONE
+#undef AB_SHIFT_PASSIVE
+#undef AB_SHIFT_ACTIVE
\ No newline at end of file
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index d7559ce66c6..227e29f822e 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -20,19 +20,22 @@
var/emote_time = 60 SECONDS // How long between stomach emotes at prey
var/digest_brute = 2 // Brute damage per tick in digestion mode
var/digest_burn = 2 // Burn damage per tick in digestion mode
- var/immutable = 0 // Prevents this belly from being deleted
- var/escapable = 0 // Belly can be resisted out of at any time
+ var/immutable = FALSE // Prevents this belly from being deleted
+ var/escapable = FALSE // Belly can be resisted out of at any time
var/escapetime = 60 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/transferchance = 0 // % Chance of prey being
- var/can_taste = 0 // If this belly prints the flavor of prey when it eats someone.
+ var/can_taste = FALSE // If this belly prints the flavor of prey when it eats someone.
var/bulge_size = 0.25 // The minimum size the prey has to be in order to show up on examine.
var/shrink_grow_size = 1 // This horribly named variable determines the minimum/maximum size it will shrink/grow prey to.
var/transferlocation // Location that the prey is released if they struggle and get dropped off.
- var/release_sound = TRUE // Boolean for now, maybe replace with something else later
+ var/release_sound = "Splatter" // Sound for letting someone out. Replaced from True/false
var/mode_flags = 0 // Stripping, numbing, etc.
+ var/fancy_vore = FALSE // Using the new sounds?
+ var/is_wet = TRUE // Is this belly's insides made of slimy parts?
+ var/wet_loop = TRUE // Does the belly have a fleshy loop playing?
//I don't think we've ever altered these lists. making them static until someone actually overrides them somewhere.
//Actual full digest modes
@@ -147,7 +150,11 @@
"item_digest_mode",
"contaminates",
"contamination_flavor",
- "contamination_color"
+ "contamination_color",
+ "release_sound",
+ "fancy_vore",
+ "is_wet",
+ "wet_loop"
)
/obj/belly/New(var/newloc)
@@ -175,7 +182,11 @@
//Sound w/ antispam flag setting
if(vore_sound && !recent_sound)
- var/soundfile = vore_sounds[vore_sound]
+ var/soundfile
+ if(!fancy_vore)
+ soundfile = classic_vore_sounds[vore_sound]
+ else
+ soundfile = fancy_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
@@ -196,7 +207,7 @@
//Don't bother if we don't have contents
if(!contents.len)
- return 0
+ return FALSE
//Find where we should drop things into (certainly not the owner)
var/count = 0
@@ -218,8 +229,13 @@
//Print notifications/sound if necessary
if(!silent)
owner.visible_message("[owner] expels everything from their [lowertext(name)]!")
- if(release_sound)
- playsound(src, 'sound/effects/splat.ogg', vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
+ var/soundfile
+ if(!fancy_vore)
+ soundfile = classic_release_sounds[release_sound]
+ else
+ soundfile = fancy_release_sounds[release_sound]
+ if(soundfile)
+ playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
return count
@@ -232,12 +248,15 @@
//Place them into our drop_location
M.forceMove(drop_location())
+
items_preserved -= M
//Special treatment for absorbed prey
- if(istype(M,/mob/living))
+ if(isliving(M))
var/mob/living/ML = M
var/mob/living/OW = owner
+ if(ML.client)
+ ML.stop_sound_channel(CHANNEL_PREYLOOP) //Stop the internal loop, it'll restart if the isbelly check on next tick anyway
if(ML.muffled)
ML.muffled = 0
if(ML.absorbed)
@@ -258,8 +277,13 @@
//Print notifications/sound if necessary
if(!silent)
owner.visible_message("[owner] expels [M] from their [lowertext(name)]!")
- if(release_sound)
- playsound(src, 'sound/effects/splat.ogg', vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
+ var/soundfile
+ if(!fancy_vore)
+ soundfile = classic_release_sounds[release_sound]
+ else
+ soundfile = fancy_release_sounds[release_sound]
+ if(soundfile)
+ playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
return 1
@@ -403,6 +427,8 @@
else if(M.reagents)
M.reagents.trans_to_holder(Pred.bloodstr, M.reagents.total_volume, 0.5, TRUE)
+ //Incase they have the loop going, let's double check to stop it.
+ M.stop_sound_channel(CHANNEL_PREYLOOP)
// Delete the digested mob
qdel(M)
@@ -515,9 +541,17 @@
M.show_message(struggle_outer_message, 2) // hearable
to_chat(R,struggle_user_message)
- var/strpick = pick(struggle_sounds)
- var/strsound = struggle_sounds[strpick]
- playsound(src, strsound, vary = 1, vol = 100, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises)
+ var/sound/struggle_snuggle
+ var/sound/struggle_rustle = sound(get_sfx("rustle"))
+
+ if(is_wet)
+ if(!fancy_vore)
+ struggle_snuggle = sound(get_sfx("classic_struggle_sounds"))
+ else
+ struggle_snuggle = sound(get_sfx("fancy_prey_struggle"))
+ playsound(src, struggle_snuggle, vary = 1, vol = 75, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises)
+ else
+ playsound(src, struggle_rustle, vary = 1, vol = 75, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises)
if(escapable) //If the stomach has escapable enabled.
if(prob(escapechance)) //Let's have it check to see if the prey escapes first.
@@ -601,7 +635,11 @@
I.gurgle_contaminate(target.contents, target.contamination_flavor, target.contamination_color)
items_preserved -= content
if(!silent && target.vore_sound && !recent_sound)
- var/soundfile = vore_sounds[target.vore_sound]
+ var/soundfile
+ if(!fancy_vore)
+ soundfile = classic_vore_sounds[target.vore_sound]
+ else
+ soundfile = fancy_vore_sounds[target.vore_sound]
if(soundfile)
playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises)
owner.updateVRPanel()
@@ -639,6 +677,10 @@
dupe.contaminates = contaminates
dupe.contamination_flavor = contamination_flavor
dupe.contamination_color = contamination_color
+ dupe.release_sound = release_sound
+ dupe.fancy_vore = fancy_vore
+ dupe.is_wet = is_wet
+ dupe.wet_loop = wet_loop
//// Object-holding variables
//struggle_messages_outside - strings
diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm
index d7c40618719..f66edcbf80c 100644
--- a/code/modules/vore/eating/bellymodes_vr.dm
+++ b/code/modules/vore/eating/bellymodes_vr.dm
@@ -24,6 +24,35 @@
if(M.digestable || digest_mode != DM_DIGEST) // don't give digesty messages to indigestible people
to_chat(M,"[pick(EL)]")
+///////////////////// Prey Loop Refresh/hack //////////////////////
+ for(var/mob/living/M in contents)
+ M.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case, because byond is whack and you can't trust it
+ if(isbelly(M.loc)) //sanity check
+ if(world.time > M.next_preyloop) //We don't want it to overlap, but we also want it to replay.
+ if(is_wet && wet_loop) // Is it a fleshy environment, and does the pred have a fleshy heartbeat loop to play?
+ if(!M.client)
+ continue
+ if(M.is_preference_enabled(/datum/client_preference/digestion_noises)) //then we check if the mob has sounds enabled at all
+ var/sound/preyloop = sound('sound/vore/sunesound/prey/loop.ogg')
+ M.playsound_local(get_turf(src),preyloop, 80,0, channel = CHANNEL_PREYLOOP)
+ M.next_preyloop = (world.time + 52 SECONDS)
+
+/////////////////////////// Sound Selections ///////////////////////////
+ var/sound/prey_digest
+ var/sound/prey_death
+ var/sound/pred_digest
+ var/sound/pred_death
+ if(!fancy_vore)
+ prey_digest = sound(get_sfx("classic_digestion_sounds"))
+ prey_death = sound(get_sfx("classic_death_sounds"))
+ pred_digest = sound(get_sfx("classic_digestion_sounds"))
+ pred_death = sound(get_sfx("classic_death_sounds"))
+ else
+ prey_digest = sound(get_sfx("fancy_digest_prey"))
+ prey_death = sound(get_sfx("fancy_death_prey"))
+ pred_digest = sound(get_sfx("fancy_digest_pred"))
+ pred_death = sound(get_sfx("fancy_death_pred"))
+
/////////////////////////// Exit Early ////////////////////////////
var/list/touchable_atoms = contents - items_preserved
if(!length(touchable_atoms))
@@ -47,7 +76,7 @@
else
items_preserved |= I
if(prob(25)) //Less often than with normal digestion
- play_sound = pick(digestion_sounds)
+ play_sound = pick(pred_digest)
else if(item_digest_mode == IM_DIGEST)
if(I.digest_stage && I.digest_stage > 0)
digest_item(I)
@@ -56,7 +85,7 @@
did_an_item = TRUE
to_update = TRUE
if(prob(25)) //Less often than with normal digestion
- play_sound = pick(digestion_sounds)
+ play_sound = pick(pred_digest)
//Handle eaten mobs
else if(isliving(A))
@@ -96,11 +125,15 @@
else
items_preserved |= I
if(prob(25)) //Less often than with normal digestion
- play_sound = pick(digestion_sounds)
+ if(L && L.client && L.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(L,prey_digest)
+ play_sound = pick(pred_digest)
else if(item_digest_mode == IM_DIGEST)
digest_item(I)
if(prob(25)) //Less often than with normal digestion
- play_sound = pick(digestion_sounds)
+ if(L && L.client && L.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(L,prey_digest)
+ play_sound = pick(pred_digest)
to_update = TRUE
break
//get rid of things like blood drops and gibs that end up in there
@@ -115,7 +148,10 @@
else if(digest_mode == DM_DIGEST)
if(prob(50)) //Was SO OFTEN. AAAA.
- play_sound = pick(digestion_sounds)
+ for(var/mob/M in contents)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
for (var/target in touchable_mobs)
var/mob/living/M = target
@@ -142,7 +178,9 @@
to_chat(owner,"" + digest_alert_owner + "")
to_chat(M,"" + digest_alert_prey + "")
- play_sound = pick(death_sounds)
+ play_sound = pick(pred_death)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_death)
if((mode_flags & DM_FLAG_LEAVEREMAINS) && M.digest_leave_remains)
handle_remains_leaving(M)
digestion_death(M)
@@ -183,7 +221,9 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
if(prob(10)) //Less often than gurgles. People might leave this on forever.
- play_sound = pick(digestion_sounds)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
if(M.absorbed)
continue
@@ -216,7 +256,9 @@
var/mob/living/M = target
if(prob(10)) //Less often than gurgles. People might leave this on forever.
- play_sound = pick(digestion_sounds)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
if(M.nutrition >= 100) //Drain them until there's no nutrients left.
var/oldnutrition = (M.nutrition * 0.05)
@@ -230,7 +272,9 @@
var/mob/living/M = target
if(prob(10)) //Infinite gurgles!
- play_sound = pick(digestion_sounds)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
if(M.size_multiplier > shrink_grow_size) //Shrink until smol.
M.resize(M.size_multiplier-0.01) //Shrink by 1% per tick.
@@ -247,7 +291,9 @@
var/mob/living/M = target
if(prob(10))
- play_sound = pick(digestion_sounds)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
if(M.size_multiplier < shrink_grow_size) //Grow until large.
M.resize(M.size_multiplier+0.01) //Grow by 1% per tick.
@@ -261,7 +307,9 @@
var/mob/living/M = target
if(prob(10))
- play_sound = pick(digestion_sounds)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
if(M.size_multiplier > shrink_grow_size && owner.size_multiplier < 2) //Grow until either pred is large or prey is small.
owner.resize(owner.size_multiplier+0.01) //Grow by 1% per tick.
@@ -276,7 +324,10 @@
else if(digest_mode == DM_HEAL)
if(prob(50)) //Wet heals! The secret is you can leave this on for gurgle noises for fun.
- play_sound = pick(digestion_sounds)
+ for(var/mob/M in contents)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
for (var/target in touchable_mobs)
var/mob/living/M = target
@@ -303,7 +354,9 @@
/////////////////////////// Make any noise ///////////////////////////
if(play_sound)
- playsound(src, play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises)
+ for(var/mob/M in hearers(4, owner)) //so we don't fill the whole room with the sound effect
+ if(M && M.client && (isturf(M.loc) || (M.loc != src.contents)) && M.is_preference_enabled(/datum/client_preference/digestion_noises)) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check
+ SEND_SOUND(M, play_sound) //these are all external sound triggers now, so it's ok.
if(to_update)
for(var/mob/living/M in contents)
if(M.client)
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index 1b666c8fe81..7097aaf27d9 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -1,12 +1,12 @@
///////////////////// Mob Living /////////////////////
/mob/living
- var/digestable = 1 // Can the mob be digested inside a belly?
- var/digest_leave_remains = 0 // Will this mob leave bones/skull/etc after the melty demise?
- var/allowmobvore = 1 // Will simplemobs attempt to eat the mob?
- var/showvoreprefs = 1 // Determines if the mechanical vore preferences button will be displayed on the mob or not.
+ var/digestable = TRUE // Can the mob be digested inside a belly?
+ var/digest_leave_remains = FALSE // Will this mob leave bones/skull/etc after the melty demise?
+ var/allowmobvore = TRUE // Will simplemobs attempt to eat the mob?
+ var/showvoreprefs = TRUE // Determines if the mechanical vore preferences button will be displayed on the mob or not.
var/obj/belly/vore_selected // Default to no vore capability.
var/list/vore_organs = list() // List of vore containers inside a mob
- var/absorbed = 0 // If a mob is absorbed into another
+ var/absorbed = FALSE // If a mob is absorbed into another
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
@@ -15,16 +15,17 @@
var/revive_ready = REVIVING_READY // Only used for creatures that have the xenochimera regen ability, so far.
var/metabolism = 0.0015
var/vore_taste = null // What the character tastes like
- var/no_vore = 0 // If the character/mob can vore.
- var/openpanel = 0 // Is the vore panel open?
- var/noisy = 0 // Toggle audible hunger.
+ var/no_vore = FALSE // If the character/mob can vore.
+ var/openpanel = FALSE // Is the vore panel open?
+ var/noisy = FALSE // Toggle audible hunger.
var/absorbing_prey = 0 // Determines if the person is using the succubus drain or not. See station_special_abilities_vr.
var/drain_finalized = 0 // Determines if the succubus drain will be KO'd/absorbed. Can be toggled on at any time.
var/fuzzy = 1 // Preference toggle for sharp/fuzzy icon.
var/tail_alt = 0 // Tail layer toggle.
var/permit_healbelly = TRUE
- var/can_be_drop_prey = 0
- var/can_be_drop_pred = 1 // Mobs are pred by default.
+ var/can_be_drop_prey = FALSE
+ var/can_be_drop_pred = TRUE // Mobs are pred by default.
+ var/next_preyloop // For Fancy sound internal loop
//
// Hook for generic creation of stuff on new creatures
diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm
index 2b4a82da6c1..efc0c451c8b 100644
--- a/code/modules/vore/eating/vore_vr.dm
+++ b/code/modules/vore/eating/vore_vr.dm
@@ -19,6 +19,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
-Aro <3 */
+#define VORE_VERSION 1 //This is a Define so you don't have to worry about magic numbers.
+
//
// Overrides/additions to stock defines go here, as well as hooks. Sort them by
// the object they are overriding. So all /mob/living together, etc.
@@ -139,7 +141,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
/datum/vore_preferences/proc/save_vore()
if(!path) return 0
- var/version = 1 //For "good times" use in the future
+ var/version = VORE_VERSION //For "good times" use in the future
var/list/settings_list = list(
"version" = version,
"digestable" = digestable,
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index 4bd8a7bc585..1527092a295 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -189,6 +189,13 @@
dat += "Name:"
dat += " '[selected.name]'"
+ //Belly Type button
+ dat += "
Is this belly fleshy:"
+ dat += "[selected.is_wet ? "Yes" : "No"]"
+ if(selected.is_wet)
+ dat += "Internal loop for prey?:"
+ dat += "[selected.wet_loop ? "Yes" : "No"]"
+
//Digest Mode Button
dat += "
Belly Mode:"
var/mode = selected.digest_mode
@@ -229,10 +236,18 @@
dat += "
Flavor Text:"
dat += " '[selected.desc]'"
+ //Belly Sound Fanciness
+ dat += "
Use Fancy Sounds:"
+ dat += "[selected.fancy_vore ? "Yes" : "No"]"
+
//Belly sound
- dat += "
Set Vore Sound"
+ dat += "
Vore Sound: [selected.vore_sound]"
dat += "Test"
+ //Release sound
+ dat += "
Release Sound: [selected.release_sound]"
+ dat += "Test"
+
//Belly messages
dat += "
Belly Messages"
@@ -293,27 +308,27 @@
dat += "
"
switch(user.digestable)
- if(1)
+ if(TRUE)
dat += "Toggle Digestable"
- if(0)
+ if(FALSE)
dat += "Toggle Digestable"
switch(user.digest_leave_remains)
- if(1)
+ if(TRUE)
dat += "Toggle Leaving Remains"
- if(0)
+ if(FALSE)
dat += "Toggle Leaving Remains"
switch(user.allowmobvore)
- if(1)
+ if(TRUE)
dat += "
Toggle Mob Vore"
- if(0)
+ if(FALSE)
dat += "
Toggle Mob Vore"
switch(user.permit_healbelly)
- if(1)
+ if(TRUE)
dat += "Toggle Healbelly Permission"
- if(0)
+ if(FALSE)
dat += "Toggle Healbelly Permission"
dat += "
Toggle Drop-nom Prey" //These two get their own, custom row, too.
@@ -534,6 +549,12 @@
selected.name = new_name
+ if(href_list["b_wetness"])
+ selected.is_wet = !selected.is_wet
+
+ if(href_list["b_wetloop"])
+ selected.wet_loop = !selected.wet_loop
+
if(href_list["b_mode"])
var/list/menu_list = selected.digest_modes.Copy()
if(istype(usr,/mob/living/carbon/human))
@@ -658,17 +679,54 @@
selected.vore_verb = new_verb
- if(href_list["b_sound"])
- var/choice = input(user,"Currently set to [selected.vore_sound]","Select Sound") as null|anything in vore_sounds
+ if(href_list["b_fancy_sound"])
+ selected.fancy_vore = !selected.fancy_vore
+ selected.vore_sound = "Gulp"
+ selected.release_sound = "Splatter"
+ // defaults as to avoid potential bugs
+
+ if(href_list["b_release"])
+ var/choice
+ if(selected.fancy_vore)
+ choice = input(user,"Currently set to [selected.release_sound]","Select Sound") as null|anything in fancy_release_sounds
+ else
+ choice = input(user,"Currently set to [selected.release_sound]","Select Sound") as null|anything in classic_release_sounds
+
if(!choice)
- return 0
+ return FALSE
+
+ selected.release_sound = choice
+
+ if(href_list["b_releasesoundtest"])
+ var/sound/releasetest
+ if(selected.fancy_vore)
+ releasetest = fancy_release_sounds[selected.release_sound]
+ else
+ releasetest = classic_release_sounds[selected.release_sound]
+
+ if(releasetest)
+ SEND_SOUND(user, releasetest)
+
+ if(href_list["b_sound"])
+ var/choice
+ if(selected.fancy_vore)
+ choice = input(user,"Currently set to [selected.vore_sound]","Select Sound") as null|anything in fancy_vore_sounds
+ else
+ choice = input(user,"Currently set to [selected.vore_sound]","Select Sound") as null|anything in classic_vore_sounds
+
+ if(!choice)
+ return FALSE
selected.vore_sound = choice
if(href_list["b_soundtest"])
- var/soundfile = vore_sounds[selected.vore_sound]
- if(soundfile)
- user << soundfile
+ var/sound/voretest
+ if(selected.fancy_vore)
+ voretest = fancy_vore_sounds[selected.vore_sound]
+ else
+ voretest = classic_vore_sounds[selected.vore_sound]
+ if(voretest)
+ SEND_SOUND(user, voretest)
if(href_list["b_tastes"])
selected.can_taste = !selected.can_taste
diff --git a/html/changelogs/Poojawa - Sunesoundsntoggles.yml b/html/changelogs/Poojawa - Sunesoundsntoggles.yml
new file mode 100644
index 00000000000..ed329d766eb
--- /dev/null
+++ b/html/changelogs/Poojawa - Sunesoundsntoggles.yml
@@ -0,0 +1,37 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Poojawa
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - soundadd: "Added my fancy vore sounds."
+ - rscadd: "Porting of a few QoL Citadel changes to vore menu related to sounds."
\ No newline at end of file
diff --git a/icons/mob/demon_vr.dmi b/icons/mob/demon_vr.dmi
new file mode 100644
index 00000000000..5ad0c6e550d
Binary files /dev/null and b/icons/mob/demon_vr.dmi differ
diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm
index 6e10e840c44..c43c444e2a9 100644
--- a/maps/tether/tether-02-surface2.dmm
+++ b/maps/tether/tether-02-surface2.dmm
@@ -104,6 +104,7 @@
/obj/machinery/light{
dir = 8
},
+/obj/machinery/camera/network/medbay,
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/surgery)
"at" = (
@@ -1289,6 +1290,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 6
},
+/obj/machinery/camera/network/medbay,
/turf/simulated/floor/tiled/dark,
/area/tether/surfacebase/medical/resleeving)
"cU" = (
@@ -22279,6 +22281,7 @@
dir = 1
},
/obj/machinery/vending/medical,
+/obj/machinery/camera/network/medbay,
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/storage)
"PU" = (
@@ -22309,7 +22312,6 @@
/obj/item/weapon/tool/wrench,
/obj/item/weapon/storage/briefcase/inflatable,
/obj/item/weapon/storage/briefcase/inflatable,
-/obj/machinery/camera/network/medbay,
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/storage)
"PW" = (
@@ -22621,6 +22623,9 @@
/area/tether/surfacebase/medical/storage)
"Qu" = (
/obj/machinery/suit_cycler/medical,
+/obj/machinery/camera/network/medbay{
+ dir = 4
+ },
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/paramed)
"Qv" = (
@@ -23838,6 +23843,9 @@
/obj/structure/bed/chair/wheelchair{
dir = 8
},
+/obj/machinery/camera/network/medbay{
+ dir = 8
+ },
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/storage)
"RW" = (
@@ -24487,6 +24495,9 @@
/obj/effect/floor_decal/corner/paleblue/border{
dir = 10
},
+/obj/machinery/camera/network/medbay{
+ dir = 1
+ },
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/breakroom)
"SV" = (
@@ -24742,6 +24753,7 @@
/obj/effect/floor_decal/corner/red/border{
dir = 5
},
+/obj/machinery/camera/network/security,
/turf/simulated/floor/tiled/dark,
/area/tether/surfacebase/security/warden)
"Tr" = (
@@ -25149,21 +25161,20 @@
/turf/simulated/floor/tiled,
/area/tether/surfacebase/security/lowerhallway)
"TT" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/obj/structure/cable/green{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
+/obj/machinery/power/apc{
+ dir = 2;
+ name = "south bump";
+ pixel_y = -32
+ },
+/obj/structure/cable/green{
+ d2 = 8;
+ icon_state = "0-8"
},
-/obj/effect/floor_decal/borderfloor,
-/obj/effect/floor_decal/corner/red/border,
/turf/simulated/floor/tiled,
-/area/tether/surfacebase/security/lowerhallway)
+/area/tether/surfacebase/security/solitary)
"TU" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -25262,20 +25273,25 @@
/turf/simulated/floor/tiled,
/area/tether/surfacebase/security/solitary)
"Ua" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/obj/machinery/power/apc{
- dir = 2;
- name = "south bump";
- pixel_y = -32
- },
/obj/structure/cable/green{
+ d1 = 1;
d2 = 8;
- icon_state = "0-8"
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/red/border,
+/obj/machinery/camera/network/security{
+ c_tag = "SEC - Vault Exterior North";
+ dir = 1
},
/turf/simulated/floor/tiled,
-/area/tether/surfacebase/security/solitary)
+/area/tether/surfacebase/security/lowerhallway)
"Ub" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
@@ -25628,25 +25644,6 @@
},
/turf/simulated/floor,
/area/tether/surfacebase/security/gasstorage)
-"UE" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/green{
- icon_state = "intact";
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- icon_state = "intact-scrubbers";
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/cable/green{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/tiled,
-/area/tether/surfacebase/security/lowerhallway)
"UF" = (
/obj/machinery/atmospherics/pipe/simple/hidden/green{
icon_state = "intact";
@@ -25712,19 +25709,28 @@
/turf/simulated/floor/tiled/dark,
/area/tether/surfacebase/security/evidence)
"UJ" = (
-/obj/effect/floor_decal/borderfloorblack,
-/obj/structure/closet{
- name = "Evidence Closet"
+/obj/machinery/atmospherics/pipe/simple/hidden/green{
+ icon_state = "intact";
+ dir = 4
},
-/obj/machinery/alarm{
- alarm_id = null;
- breach_detection = 0;
- dir = 1;
- icon_state = "alarm0";
- pixel_y = -22
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ icon_state = "intact-scrubbers";
+ dir = 4
},
-/turf/simulated/floor/tiled/dark,
-/area/tether/surfacebase/security/evidence)
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/camera/network/security{
+ c_tag = "SEC - Vault Exterior North";
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/tether/surfacebase/security/lowerhallway)
"UK" = (
/obj/effect/floor_decal/borderfloorblack{
dir = 6
@@ -26176,11 +26182,23 @@
/turf/simulated/floor/tiled/dark,
/area/tether/surfacebase/security/brig)
"Vn" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
+/obj/effect/floor_decal/borderfloorblack,
+/obj/structure/closet{
+ name = "Evidence Closet"
+ },
+/obj/machinery/alarm{
+ alarm_id = null;
+ breach_detection = 0;
+ dir = 1;
+ icon_state = "alarm0";
+ pixel_y = -22
+ },
+/obj/machinery/camera/network/security{
+ c_tag = "SEC - Vault Exterior North";
+ dir = 1
},
/turf/simulated/floor/tiled/dark,
-/area/tether/surfacebase/security/brig)
+/area/tether/surfacebase/security/evidence)
"Vo" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
@@ -26475,7 +26493,13 @@
/turf/simulated/floor,
/area/tether/surfacebase/security/interrogation)
"VI" = (
-/obj/machinery/vending/hydronutrients,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/camera/network/security{
+ c_tag = "SEC - Vault Exterior North";
+ dir = 1
+ },
/turf/simulated/floor/tiled/dark,
/area/tether/surfacebase/security/brig)
"VJ" = (
@@ -26615,19 +26639,8 @@
/turf/simulated/floor/tiled/dark,
/area/tether/surfacebase/security/brig)
"VV" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/green{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/green{
- icon_state = "intact";
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+/obj/machinery/vending/hydronutrients,
+/obj/machinery/camera/network/security{
dir = 4
},
/turf/simulated/floor/tiled/dark,
@@ -27279,31 +27292,29 @@
},
/turf/simulated/floor/tiled/dark,
/area/rnd/outpost/xenobiology/outpost_slimepens)
-"WO" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/green{
- icon_state = "intact";
- dir = 9
- },
+"WM" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
/obj/structure/cable/green{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/obj/effect/floor_decal/steeldecal/steel_decals4{
+/obj/machinery/atmospherics/pipe/simple/hidden/green{
+ icon_state = "intact";
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/camera/network/security{
+ c_tag = "SEC - Vault Exterior North";
dir = 1
},
-/obj/effect/floor_decal/steeldecal/steel_decals4{
- dir = 6
- },
-/turf/simulated/floor/tiled,
-/area/tether/surfacebase/security/lowerhallway)
-"WP" = (
+/turf/simulated/floor/tiled/dark,
+/area/tether/surfacebase/security/brig)
+"WN" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
@@ -27332,8 +27343,43 @@
/obj/effect/floor_decal/corner/red/bordercorner2{
dir = 5
},
+/obj/machinery/camera/network/security{
+ c_tag = "SEC - Vault Exterior West";
+ dir = 8
+ },
/turf/simulated/floor/tiled,
/area/tether/surfacebase/security/lowerhallway)
+"WO" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/green{
+ icon_state = "intact";
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals4{
+ dir = 1
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals4{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/tether/surfacebase/security/lowerhallway)
+"WP" = (
+/obj/machinery/camera/network/interrogation{
+ icon_state = "camera";
+ dir = 4
+ },
+/turf/simulated/floor/tiled/dark,
+/area/tether/surfacebase/security/interrogation)
"WT" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 8
@@ -35550,7 +35596,7 @@ Uz
UN
Vg
Vx
-VI
+VV
VQ
We
Wo
@@ -36400,13 +36446,13 @@ Tz
UF
UN
UW
-Vn
+VI
UN
UW
-VV
+WM
UN
UW
-Vn
+VI
UN
cW
cW
@@ -36539,7 +36585,7 @@ Ty
Ue
WF
Tz
-UE
+UJ
UN
Ud
Vo
@@ -36971,7 +37017,7 @@ VZ
Ww
WC
WD
-WP
+WN
WT
Xa
Xb
@@ -37104,7 +37150,7 @@ ab
ab
Ts
TE
-TT
+Ua
Tr
Us
Us
@@ -37254,7 +37300,7 @@ UQ
Vc
Vu
VF
-VP
+WP
Wa
Wl
UQ
@@ -37817,7 +37863,7 @@ TQ
Up
Uk
Uw
-UJ
+Vn
UR
VE
US
@@ -38240,7 +38286,7 @@ ab
ab
Tt
TJ
-Ua
+TT
Uk
Uk
Uk
diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm
index fe0ba3f7b5c..34964021e8c 100644
--- a/maps/tether/tether-03-surface3.dmm
+++ b/maps/tether/tether-03-surface3.dmm
@@ -1609,15 +1609,9 @@
/turf/simulated/floor/tiled/dark,
/area/tether/surfacebase/security/armory)
"dg" = (
-/obj/machinery/vending/snack,
-/obj/effect/floor_decal/borderfloor{
- dir = 10
- },
-/obj/effect/floor_decal/corner/red/border{
- dir = 10
- },
-/turf/simulated/floor/tiled,
-/area/tether/surfacebase/security/breakroom)
+/obj/machinery/camera/network/security,
+/turf/simulated/open,
+/area/tether/surfacebase/security/upperhall)
"dh" = (
/obj/machinery/vending/cola,
/obj/effect/floor_decal/borderfloor,
@@ -2405,32 +2399,18 @@
/turf/simulated/floor/tiled,
/area/tether/surfacebase/security/common)
"eA" = (
+/obj/machinery/vending/snack,
/obj/effect/floor_decal/borderfloor{
- dir = 5
+ dir = 10
},
/obj/effect/floor_decal/corner/red/border{
- dir = 5
+ dir = 10
},
-/obj/effect/floor_decal/borderfloor/corner2{
- dir = 5
- },
-/obj/effect/floor_decal/corner/red/bordercorner2{
- dir = 5
- },
-/obj/structure/extinguisher_cabinet{
- dir = 8;
- icon_state = "extinguisher_closed";
- pixel_x = 30
- },
-/obj/effect/floor_decal/borderfloor/corner2{
+/obj/machinery/camera/network/security{
dir = 4
},
-/obj/effect/floor_decal/corner/red/bordercorner2{
- dir = 4
- },
-/obj/structure/flora/pottedplant/stoutbush,
/turf/simulated/floor/tiled,
-/area/tether/surfacebase/security/common)
+/area/tether/surfacebase/security/breakroom)
"eB" = (
/obj/structure/table/steel,
/obj/effect/floor_decal/borderfloor{
@@ -3220,12 +3200,14 @@
/turf/simulated/floor/tiled/white,
/area/crew_quarters/recreation_area_restroom)
"fR" = (
-/obj/effect/floor_decal/steeldecal/steel_decals4{
- dir = 10
+/obj/effect/floor_decal/industrial/outline/yellow,
+/obj/structure/closet/secure_closet/security,
+/obj/item/device/holowarrant,
+/obj/machinery/camera/network/security{
+ dir = 8
},
-/obj/effect/floor_decal/steeldecal/steel_decals4,
-/turf/simulated/floor/tiled,
-/area/tether/surfacebase/security/common)
+/turf/simulated/floor/tiled/dark,
+/area/tether/surfacebase/security/armory)
"fS" = (
/obj/structure/cable/green{
icon_state = "4-8"
@@ -3373,18 +3355,26 @@
/turf/simulated/floor/tiled/dark,
/area/tether/surfacebase/security/armory)
"gd" = (
-/obj/structure/table/steel,
-/obj/item/weapon/storage/box/evidence,
/obj/effect/floor_decal/borderfloor{
- dir = 8;
- icon_state = "borderfloor";
- pixel_x = 0
+ dir = 5
},
/obj/effect/floor_decal/corner/red/border{
- dir = 8
+ dir = 5
},
+/obj/structure/extinguisher_cabinet{
+ dir = 8;
+ icon_state = "extinguisher_closed";
+ pixel_x = 30
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/red/bordercorner2{
+ dir = 4
+ },
+/obj/structure/flora/pottedplant/stoutbush,
/turf/simulated/floor/tiled,
-/area/tether/surfacebase/security/processing)
+/area/tether/surfacebase/security/common)
"ge" = (
/turf/simulated/floor/tiled,
/area/tether/surfacebase/security/processing)
@@ -3700,30 +3690,16 @@
/turf/simulated/floor/tiled,
/area/tether/surfacebase/security/common)
"gI" = (
+/obj/machinery/camera/network/security{
+ c_tag = "SEC - Vault Exterior West";
+ dir = 8
+ },
/obj/effect/floor_decal/borderfloor{
dir = 4
},
/obj/effect/floor_decal/corner/red/border{
dir = 4
},
-/obj/effect/floor_decal/borderfloor/corner2{
- dir = 6
- },
-/obj/effect/floor_decal/corner/red/bordercorner2{
- dir = 6
- },
-/obj/item/device/radio/intercom/department/security{
- dir = 4;
- icon_state = "secintercom";
- pixel_x = 24;
- pixel_y = 0
- },
-/obj/effect/floor_decal/borderfloor/corner2{
- dir = 5
- },
-/obj/effect/floor_decal/corner/red/bordercorner2{
- dir = 5
- },
/turf/simulated/floor/tiled,
/area/tether/surfacebase/security/common)
"gJ" = (
@@ -4240,17 +4216,21 @@
/turf/simulated/floor/tiled,
/area/tether/surfacebase/security/frontdesk)
"hB" = (
-/obj/machinery/papershredder,
+/obj/structure/table/steel,
+/obj/item/weapon/storage/box/evidence,
/obj/effect/floor_decal/borderfloor{
- dir = 1;
+ dir = 8;
icon_state = "borderfloor";
- pixel_y = 0
+ pixel_x = 0
},
/obj/effect/floor_decal/corner/red/border{
- dir = 1
+ dir = 8
+ },
+/obj/machinery/camera/network/security{
+ dir = 4
},
/turf/simulated/floor/tiled,
-/area/tether/surfacebase/security/frontdesk)
+/area/tether/surfacebase/security/processing)
"hC" = (
/obj/structure/cable/green{
icon_state = "4-8"
@@ -14139,7 +14119,7 @@
/obj/item/weapon/book/manual/engineering_hacking,
/obj/item/weapon/book/manual/nuclear,
/turf/simulated/floor/carpet,
-/area/library)
+/area/tether/surfacebase/library/study)
"xV" = (
/obj/machinery/alarm{
pixel_y = 22
@@ -14151,7 +14131,7 @@
/obj/item/weapon/pen/invisible,
/obj/item/weapon/pen/invisible,
/turf/simulated/floor/carpet,
-/area/library)
+/area/tether/surfacebase/library/study)
"xW" = (
/obj/structure/table/rack{
dir = 8;
@@ -14166,7 +14146,7 @@
pixel_y = 0
},
/turf/simulated/floor/carpet,
-/area/library)
+/area/tether/surfacebase/library/study)
"xX" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable{
@@ -15025,14 +15005,31 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 6
},
+/obj/effect/landmark/start{
+ name = "Librarian"
+ },
+/obj/machinery/power/apc{
+ cell_type = /obj/item/weapon/cell/super;
+ dir = 8;
+ name = "west bump";
+ pixel_x = -30
+ },
+/obj/structure/cable/green{
+ icon_state = "0-4"
+ },
/turf/simulated/floor/carpet,
-/area/library)
+/area/tether/surfacebase/library/study)
"zj" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
/turf/simulated/floor/carpet,
-/area/library)
+/area/tether/surfacebase/library/study)
"zk" = (
/obj/effect/floor_decal/steeldecal/steel_decals7{
dir = 6
@@ -15062,8 +15059,13 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 6
},
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
/turf/simulated/floor/carpet,
-/area/library)
+/area/tether/surfacebase/library/study)
"zn" = (
/obj/random/tech_supply,
/obj/structure/table/steel,
@@ -15451,6 +15453,11 @@
dir = 4
},
/obj/machinery/door/firedoor/glass,
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
/turf/simulated/floor/carpet,
/area/library)
"zQ" = (
@@ -15460,6 +15467,11 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
/turf/simulated/floor/carpet,
/area/library)
"zR" = (
@@ -15478,6 +15490,11 @@
pixel_x = 2;
pixel_y = 6
},
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
/turf/simulated/floor/carpet,
/area/library)
"zS" = (
@@ -15487,6 +15504,11 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
/turf/simulated/floor/wood,
/area/library)
"zT" = (
@@ -15515,23 +15537,12 @@
/turf/simulated/floor/wood,
/area/library)
"zW" = (
-/obj/structure/table/woodentable,
-/obj/item/device/taperecorder{
- pixel_y = 0
+/obj/structure/cable/green{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
},
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
-/obj/machinery/newscaster{
- pixel_x = 0;
- pixel_y = -28
- },
-/obj/item/device/retail_scanner/civilian{
- dir = 1
- },
-/obj/item/device/camera,
-/obj/item/device/tape,
-/turf/simulated/floor/carpet,
+/turf/simulated/floor/wood,
/area/library)
"zX" = (
/obj/structure/disposalpipe/segment,
@@ -15859,14 +15870,23 @@
/area/hallway/lower/third_south)
"Aw" = (
/obj/structure/table/woodentable,
-/obj/item/weapon/paper_bin{
- pixel_x = -3;
- pixel_y = 7
+/obj/item/device/taperecorder{
+ pixel_y = 0
},
-/obj/item/weapon/pen/invisible,
-/obj/machinery/light/small,
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/machinery/newscaster{
+ pixel_x = 0;
+ pixel_y = -28
+ },
+/obj/item/device/retail_scanner/civilian{
+ dir = 1
+ },
+/obj/item/device/camera,
+/obj/item/device/tape,
/turf/simulated/floor/carpet,
-/area/library)
+/area/tether/surfacebase/library/study)
"Ax" = (
/obj/effect/floor_decal/borderfloor,
/obj/effect/floor_decal/corner/lightgrey/border,
@@ -15885,22 +15905,15 @@
/turf/simulated/floor/tiled,
/area/hallway/lower/third_south)
"Ay" = (
-/obj/machinery/firealarm{
- dir = 1;
- pixel_y = -24
- },
/obj/structure/table/woodentable,
-/obj/item/device/tvcamera,
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
-/obj/machinery/light_switch{
- dir = 8;
- pixel_x = 24;
- pixel_y = 6
+/obj/item/weapon/paper_bin{
+ pixel_x = -3;
+ pixel_y = 7
},
+/obj/item/weapon/pen/invisible,
+/obj/machinery/light/small,
/turf/simulated/floor/carpet,
-/area/library)
+/area/tether/surfacebase/library/study)
"Az" = (
/turf/simulated/floor/carpet,
/area/library)
@@ -17562,11 +17575,22 @@
name = "\improper Surface Civilian Substation"
})
"CM" = (
-/obj/structure/bed/chair/office/dark{
- dir = 4
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -24
},
-/turf/simulated/floor/wood,
-/area/library)
+/obj/structure/table/woodentable,
+/obj/item/device/tvcamera,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
+ },
+/obj/machinery/light_switch{
+ dir = 8;
+ pixel_x = 24;
+ pixel_y = 6
+ },
+/turf/simulated/floor/carpet,
+/area/tether/surfacebase/library/study)
"CN" = (
/obj/structure/noticeboard{
pixel_y = -26
@@ -18736,11 +18760,14 @@
/turf/simulated/floor/carpet,
/area/library)
"EJ" = (
-/obj/structure/bed/chair/office/dark{
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/machinery/hologram/holopad,
/obj/structure/cable/green{
- icon_state = "2-4"
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
},
/turf/simulated/floor/wood,
/area/library)
@@ -18793,15 +18820,13 @@
/turf/simulated/floor/wood,
/area/library)
"EP" = (
-/obj/structure/bed/chair/office/dark{
- dir = 8
+/obj/structure/bed/chair/comfy/black{
+ dir = 4
},
-/obj/structure/cable/green{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/effect/landmark/start{
+ name = "Librarian"
},
-/turf/simulated/floor/wood,
+/turf/simulated/floor/carpet,
/area/library)
"EQ" = (
/obj/structure/table/woodentable,
@@ -19957,9 +19982,13 @@
/turf/simulated/floor/wood,
/area/library)
"Gx" = (
-/obj/machinery/firealarm{
- dir = 4;
- pixel_x = 26
+/obj/structure/bed/chair/office/dark{
+ dir = 4
+ },
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
},
/turf/simulated/floor/wood,
/area/library)
@@ -20796,10 +20825,26 @@
/turf/simulated/floor/tiled/dark,
/area/rnd/outpost/xenobiology/outpost_south_airlock)
"HH" = (
-/obj/structure/shuttle/engine/propulsion,
-/turf/simulated/floor/reinforced,
-/turf/simulated/shuttle/plating/carry,
-/area/shuttle/tether/surface)
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/red/border{
+ dir = 4
+ },
+/obj/item/device/radio/intercom/department/security{
+ dir = 4;
+ icon_state = "secintercom";
+ pixel_x = 24;
+ pixel_y = 0
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/red/bordercorner2{
+ dir = 5
+ },
+/turf/simulated/floor/tiled,
+/area/tether/surfacebase/security/common)
"HI" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/alarm{
@@ -29887,10 +29932,17 @@
/turf/simulated/floor/carpet,
/area/library)
"Xo" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+/obj/structure/bed/chair/office/dark{
dir = 4
},
-/obj/machinery/hologram/holopad,
+/obj/structure/cable/green{
+ icon_state = "2-4"
+ },
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/simulated/floor/wood,
/area/library)
"Xp" = (
@@ -30057,6 +30109,51 @@
},
/turf/simulated/floor/tiled/white,
/area/rnd/outpost/xenobiology/outpost_first_aid)
+"XB" = (
+/obj/machinery/papershredder,
+/obj/effect/floor_decal/borderfloor{
+ dir = 1;
+ icon_state = "borderfloor";
+ pixel_y = 0
+ },
+/obj/effect/floor_decal/corner/red/border{
+ dir = 1
+ },
+/obj/machinery/camera/network/security,
+/turf/simulated/floor/tiled,
+/area/tether/surfacebase/security/frontdesk)
+"XC" = (
+/obj/structure/bed/chair/office/dark{
+ dir = 8
+ },
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/start{
+ name = "Librarian"
+ },
+/turf/simulated/floor/wood,
+/area/library)
+"XD" = (
+/obj/machinery/camera/network/outside{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/area/tether/surfacebase/outside/outside3)
+"XE" = (
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = 26
+ },
+/obj/machinery/light_switch{
+ dir = 1;
+ pixel_x = 2;
+ pixel_y = -28
+ },
+/turf/simulated/floor/wood,
+/area/library)
"XF" = (
/obj/machinery/power/apc{
dir = 2;
@@ -30066,6 +30163,11 @@
/obj/structure/cable/green,
/turf/simulated/floor/tiled/white,
/area/rnd/outpost/xenobiology/outpost_first_aid)
+"XG" = (
+/obj/structure/shuttle/engine/propulsion,
+/turf/simulated/floor/reinforced,
+/turf/simulated/shuttle/plating/carry,
+/area/shuttle/tether/surface)
"Zf" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 1
@@ -38347,7 +38449,7 @@ ac
dW
eq
fn
-gd
+hB
gQ
fc
iJ
@@ -38627,7 +38729,7 @@ aM
am
bU
cz
-dg
+eA
fc
es
fp
@@ -38903,7 +39005,7 @@ ab
ab
Om
aq
-aq
+XD
dT
al
ax
@@ -39759,7 +39861,7 @@ aq
aq
ac
af
-aX
+dg
aX
bZ
cJ
@@ -40191,9 +40293,9 @@ cr
dd
dn
dQ
-eA
-fR
+gd
gI
+HH
hu
hJ
iP
@@ -40657,7 +40759,7 @@ we
xg
xU
zi
-zW
+Aw
xg
CG
EE
@@ -40762,7 +40864,7 @@ eb
ct
gb
hx
-hB
+XB
ia
iW
kB
@@ -40799,7 +40901,7 @@ wf
xg
xV
zj
-Aw
+Ay
xg
zT
zT
@@ -40941,7 +41043,7 @@ wg
xg
xW
zm
-Ay
+CM
xg
CH
zT
@@ -41042,7 +41144,7 @@ bN
cx
eC
Xb
-dX
+fR
fl
eI
hx
@@ -41086,7 +41188,7 @@ zP
xg
xg
zT
-EG
+EP
EG
zT
FU
@@ -41650,11 +41752,11 @@ jM
wI
xT
yA
-zT
-zT
-Xo
-CM
+zW
+Fr
EJ
+Gx
+Xo
Fc
Fr
Fr
@@ -42080,10 +42182,10 @@ xg
zT
CF
EC
-EP
+XC
EC
CF
-Gx
+XE
xg
tH
Gy
@@ -43947,7 +44049,7 @@ Nk
Nl
NJ
NP
-HH
+XG
KU
bg
Ok
@@ -44089,7 +44191,7 @@ Nl
Nl
NK
NP
-HH
+XG
KU
bg
Ok
@@ -44231,7 +44333,7 @@ Nm
Nl
NK
NP
-HH
+XG
KU
bg
Ok
diff --git a/maps/tether/tether_areas2.dm b/maps/tether/tether_areas2.dm
index a65e0f866e6..9436f6c6654 100644
--- a/maps/tether/tether_areas2.dm
+++ b/maps/tether/tether_areas2.dm
@@ -214,6 +214,10 @@
/area/tether/surfacebase/medical/maints
name = "\improper Mining Upper Maintenance"
+/area/tether/surfacebase/library/study
+ name = "\improper Library Private Study"
+ lightswitch = 0
+ icon_state = "library"
/area/tether/surfacebase/security
icon_state = "security"
diff --git a/sound/vore/sunesound/LICENSE.txt b/sound/vore/sunesound/LICENSE.txt
new file mode 100644
index 00000000000..ce95152f5dc
--- /dev/null
+++ b/sound/vore/sunesound/LICENSE.txt
@@ -0,0 +1 @@
+Audio work within these folders are © Poojawa 2017, all rights reserved.
\ No newline at end of file
diff --git a/sound/vore/sunesound/pred/death_01.ogg b/sound/vore/sunesound/pred/death_01.ogg
new file mode 100644
index 00000000000..63ace65bebf
Binary files /dev/null and b/sound/vore/sunesound/pred/death_01.ogg differ
diff --git a/sound/vore/sunesound/pred/death_02.ogg b/sound/vore/sunesound/pred/death_02.ogg
new file mode 100644
index 00000000000..4185f6fb20c
Binary files /dev/null and b/sound/vore/sunesound/pred/death_02.ogg differ
diff --git a/sound/vore/sunesound/pred/death_03.ogg b/sound/vore/sunesound/pred/death_03.ogg
new file mode 100644
index 00000000000..a9e5d769dfa
Binary files /dev/null and b/sound/vore/sunesound/pred/death_03.ogg differ
diff --git a/sound/vore/sunesound/pred/death_04.ogg b/sound/vore/sunesound/pred/death_04.ogg
new file mode 100644
index 00000000000..4deb6d5ec8b
Binary files /dev/null and b/sound/vore/sunesound/pred/death_04.ogg differ
diff --git a/sound/vore/sunesound/pred/death_05.ogg b/sound/vore/sunesound/pred/death_05.ogg
new file mode 100644
index 00000000000..9c359627c3b
Binary files /dev/null and b/sound/vore/sunesound/pred/death_05.ogg differ
diff --git a/sound/vore/sunesound/pred/death_06.ogg b/sound/vore/sunesound/pred/death_06.ogg
new file mode 100644
index 00000000000..3d0fd0f58c1
Binary files /dev/null and b/sound/vore/sunesound/pred/death_06.ogg differ
diff --git a/sound/vore/sunesound/pred/death_07.ogg b/sound/vore/sunesound/pred/death_07.ogg
new file mode 100644
index 00000000000..98454abac9b
Binary files /dev/null and b/sound/vore/sunesound/pred/death_07.ogg differ
diff --git a/sound/vore/sunesound/pred/death_08.ogg b/sound/vore/sunesound/pred/death_08.ogg
new file mode 100644
index 00000000000..068d6b83550
Binary files /dev/null and b/sound/vore/sunesound/pred/death_08.ogg differ
diff --git a/sound/vore/sunesound/pred/death_09.ogg b/sound/vore/sunesound/pred/death_09.ogg
new file mode 100644
index 00000000000..a4ad821c162
Binary files /dev/null and b/sound/vore/sunesound/pred/death_09.ogg differ
diff --git a/sound/vore/sunesound/pred/death_10.ogg b/sound/vore/sunesound/pred/death_10.ogg
new file mode 100644
index 00000000000..b67868442ff
Binary files /dev/null and b/sound/vore/sunesound/pred/death_10.ogg differ
diff --git a/sound/vore/sunesound/pred/death_11.ogg b/sound/vore/sunesound/pred/death_11.ogg
new file mode 100644
index 00000000000..db125edf80c
Binary files /dev/null and b/sound/vore/sunesound/pred/death_11.ogg differ
diff --git a/sound/vore/sunesound/pred/death_12.ogg b/sound/vore/sunesound/pred/death_12.ogg
new file mode 100644
index 00000000000..ab4c548744a
Binary files /dev/null and b/sound/vore/sunesound/pred/death_12.ogg differ
diff --git a/sound/vore/sunesound/pred/death_13.ogg b/sound/vore/sunesound/pred/death_13.ogg
new file mode 100644
index 00000000000..008941942f1
Binary files /dev/null and b/sound/vore/sunesound/pred/death_13.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_01.ogg b/sound/vore/sunesound/pred/digest_01.ogg
new file mode 100644
index 00000000000..09e6805e903
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_01.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_02.ogg b/sound/vore/sunesound/pred/digest_02.ogg
new file mode 100644
index 00000000000..d6852aeb9a8
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_02.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_03.ogg b/sound/vore/sunesound/pred/digest_03.ogg
new file mode 100644
index 00000000000..9e85de831e7
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_03.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_04.ogg b/sound/vore/sunesound/pred/digest_04.ogg
new file mode 100644
index 00000000000..b35da498d37
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_04.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_05.ogg b/sound/vore/sunesound/pred/digest_05.ogg
new file mode 100644
index 00000000000..60ea067a91e
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_05.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_06.ogg b/sound/vore/sunesound/pred/digest_06.ogg
new file mode 100644
index 00000000000..4dcf50b699c
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_06.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_07.ogg b/sound/vore/sunesound/pred/digest_07.ogg
new file mode 100644
index 00000000000..4d8fefd1003
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_07.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_08.ogg b/sound/vore/sunesound/pred/digest_08.ogg
new file mode 100644
index 00000000000..da8b3fa963d
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_08.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_09.ogg b/sound/vore/sunesound/pred/digest_09.ogg
new file mode 100644
index 00000000000..072efb17fbe
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_09.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_10.ogg b/sound/vore/sunesound/pred/digest_10.ogg
new file mode 100644
index 00000000000..fb69e4fd1ae
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_10.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_11.ogg b/sound/vore/sunesound/pred/digest_11.ogg
new file mode 100644
index 00000000000..611882b6d3f
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_11.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_12.ogg b/sound/vore/sunesound/pred/digest_12.ogg
new file mode 100644
index 00000000000..c9e004afb79
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_12.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_13.ogg b/sound/vore/sunesound/pred/digest_13.ogg
new file mode 100644
index 00000000000..45a9d59f523
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_13.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_14.ogg b/sound/vore/sunesound/pred/digest_14.ogg
new file mode 100644
index 00000000000..9815d172ca5
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_14.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_15.ogg b/sound/vore/sunesound/pred/digest_15.ogg
new file mode 100644
index 00000000000..d2e44ecc86b
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_15.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_16.ogg b/sound/vore/sunesound/pred/digest_16.ogg
new file mode 100644
index 00000000000..84faa4bd999
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_16.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_17.ogg b/sound/vore/sunesound/pred/digest_17.ogg
new file mode 100644
index 00000000000..0dd6fd49894
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_17.ogg differ
diff --git a/sound/vore/sunesound/pred/digest_18.ogg b/sound/vore/sunesound/pred/digest_18.ogg
new file mode 100644
index 00000000000..a9fa5b51f94
Binary files /dev/null and b/sound/vore/sunesound/pred/digest_18.ogg differ
diff --git a/sound/vore/sunesound/pred/escape.ogg b/sound/vore/sunesound/pred/escape.ogg
new file mode 100644
index 00000000000..a823fc12846
Binary files /dev/null and b/sound/vore/sunesound/pred/escape.ogg differ
diff --git a/sound/vore/sunesound/pred/insertion_01.ogg b/sound/vore/sunesound/pred/insertion_01.ogg
new file mode 100644
index 00000000000..6a8e7e3ff00
Binary files /dev/null and b/sound/vore/sunesound/pred/insertion_01.ogg differ
diff --git a/sound/vore/sunesound/pred/insertion_02.ogg b/sound/vore/sunesound/pred/insertion_02.ogg
new file mode 100644
index 00000000000..c6e4f96d947
Binary files /dev/null and b/sound/vore/sunesound/pred/insertion_02.ogg differ
diff --git a/sound/vore/sunesound/pred/loop.ogg b/sound/vore/sunesound/pred/loop.ogg
new file mode 100644
index 00000000000..afd6e6003dd
Binary files /dev/null and b/sound/vore/sunesound/pred/loop.ogg differ
diff --git a/sound/vore/sunesound/pred/schlorp.ogg b/sound/vore/sunesound/pred/schlorp.ogg
new file mode 100644
index 00000000000..c9cd5a34132
Binary files /dev/null and b/sound/vore/sunesound/pred/schlorp.ogg differ
diff --git a/sound/vore/sunesound/pred/squish _02.ogg b/sound/vore/sunesound/pred/squish _02.ogg
new file mode 100644
index 00000000000..2e3effb4d7b
Binary files /dev/null and b/sound/vore/sunesound/pred/squish _02.ogg differ
diff --git a/sound/vore/sunesound/pred/squish _03.ogg b/sound/vore/sunesound/pred/squish _03.ogg
new file mode 100644
index 00000000000..24b5f9ce028
Binary files /dev/null and b/sound/vore/sunesound/pred/squish _03.ogg differ
diff --git a/sound/vore/sunesound/pred/squish_01.ogg b/sound/vore/sunesound/pred/squish_01.ogg
new file mode 100644
index 00000000000..17dc83ed986
Binary files /dev/null and b/sound/vore/sunesound/pred/squish_01.ogg differ
diff --git a/sound/vore/sunesound/pred/squish_02.ogg b/sound/vore/sunesound/pred/squish_02.ogg
new file mode 100644
index 00000000000..febc4c106e1
Binary files /dev/null and b/sound/vore/sunesound/pred/squish_02.ogg differ
diff --git a/sound/vore/sunesound/pred/squish_03.ogg b/sound/vore/sunesound/pred/squish_03.ogg
new file mode 100644
index 00000000000..c1b544806b3
Binary files /dev/null and b/sound/vore/sunesound/pred/squish_03.ogg differ
diff --git a/sound/vore/sunesound/pred/squish_04.ogg b/sound/vore/sunesound/pred/squish_04.ogg
new file mode 100644
index 00000000000..e764ba051bc
Binary files /dev/null and b/sound/vore/sunesound/pred/squish_04.ogg differ
diff --git a/sound/vore/sunesound/pred/stomachmove.ogg b/sound/vore/sunesound/pred/stomachmove.ogg
new file mode 100644
index 00000000000..3a9ed98daef
Binary files /dev/null and b/sound/vore/sunesound/pred/stomachmove.ogg differ
diff --git a/sound/vore/sunesound/pred/struggle_01.ogg b/sound/vore/sunesound/pred/struggle_01.ogg
new file mode 100644
index 00000000000..aea5581889c
Binary files /dev/null and b/sound/vore/sunesound/pred/struggle_01.ogg differ
diff --git a/sound/vore/sunesound/pred/struggle_02.ogg b/sound/vore/sunesound/pred/struggle_02.ogg
new file mode 100644
index 00000000000..526abd0a9ec
Binary files /dev/null and b/sound/vore/sunesound/pred/struggle_02.ogg differ
diff --git a/sound/vore/sunesound/pred/struggle_03.ogg b/sound/vore/sunesound/pred/struggle_03.ogg
new file mode 100644
index 00000000000..f3300a8bf32
Binary files /dev/null and b/sound/vore/sunesound/pred/struggle_03.ogg differ
diff --git a/sound/vore/sunesound/pred/struggle_04.ogg b/sound/vore/sunesound/pred/struggle_04.ogg
new file mode 100644
index 00000000000..9efa23eaa9d
Binary files /dev/null and b/sound/vore/sunesound/pred/struggle_04.ogg differ
diff --git a/sound/vore/sunesound/pred/struggle_05.ogg b/sound/vore/sunesound/pred/struggle_05.ogg
new file mode 100644
index 00000000000..ec4d0068800
Binary files /dev/null and b/sound/vore/sunesound/pred/struggle_05.ogg differ
diff --git a/sound/vore/sunesound/pred/swallow_01.ogg b/sound/vore/sunesound/pred/swallow_01.ogg
new file mode 100644
index 00000000000..1767daf0e89
Binary files /dev/null and b/sound/vore/sunesound/pred/swallow_01.ogg differ
diff --git a/sound/vore/sunesound/pred/swallow_02.ogg b/sound/vore/sunesound/pred/swallow_02.ogg
new file mode 100644
index 00000000000..dd906bfad8e
Binary files /dev/null and b/sound/vore/sunesound/pred/swallow_02.ogg differ
diff --git a/sound/vore/sunesound/pred/taurswallow.ogg b/sound/vore/sunesound/pred/taurswallow.ogg
new file mode 100644
index 00000000000..697947fb495
Binary files /dev/null and b/sound/vore/sunesound/pred/taurswallow.ogg differ
diff --git a/sound/vore/sunesound/prey/death_01.ogg b/sound/vore/sunesound/prey/death_01.ogg
new file mode 100644
index 00000000000..fb73f520d8e
Binary files /dev/null and b/sound/vore/sunesound/prey/death_01.ogg differ
diff --git a/sound/vore/sunesound/prey/death_02.ogg b/sound/vore/sunesound/prey/death_02.ogg
new file mode 100644
index 00000000000..96a4004691e
Binary files /dev/null and b/sound/vore/sunesound/prey/death_02.ogg differ
diff --git a/sound/vore/sunesound/prey/death_03.ogg b/sound/vore/sunesound/prey/death_03.ogg
new file mode 100644
index 00000000000..faae0c0cad8
Binary files /dev/null and b/sound/vore/sunesound/prey/death_03.ogg differ
diff --git a/sound/vore/sunesound/prey/death_04.ogg b/sound/vore/sunesound/prey/death_04.ogg
new file mode 100644
index 00000000000..7a7230e11cb
Binary files /dev/null and b/sound/vore/sunesound/prey/death_04.ogg differ
diff --git a/sound/vore/sunesound/prey/death_05.ogg b/sound/vore/sunesound/prey/death_05.ogg
new file mode 100644
index 00000000000..91e351a62ca
Binary files /dev/null and b/sound/vore/sunesound/prey/death_05.ogg differ
diff --git a/sound/vore/sunesound/prey/death_06.ogg b/sound/vore/sunesound/prey/death_06.ogg
new file mode 100644
index 00000000000..59f5f5cde95
Binary files /dev/null and b/sound/vore/sunesound/prey/death_06.ogg differ
diff --git a/sound/vore/sunesound/prey/death_07.ogg b/sound/vore/sunesound/prey/death_07.ogg
new file mode 100644
index 00000000000..6a8ef68561f
Binary files /dev/null and b/sound/vore/sunesound/prey/death_07.ogg differ
diff --git a/sound/vore/sunesound/prey/death_08.ogg b/sound/vore/sunesound/prey/death_08.ogg
new file mode 100644
index 00000000000..1991706d94e
Binary files /dev/null and b/sound/vore/sunesound/prey/death_08.ogg differ
diff --git a/sound/vore/sunesound/prey/death_09.ogg b/sound/vore/sunesound/prey/death_09.ogg
new file mode 100644
index 00000000000..c209e5f112b
Binary files /dev/null and b/sound/vore/sunesound/prey/death_09.ogg differ
diff --git a/sound/vore/sunesound/prey/death_10.ogg b/sound/vore/sunesound/prey/death_10.ogg
new file mode 100644
index 00000000000..ccf51389f19
Binary files /dev/null and b/sound/vore/sunesound/prey/death_10.ogg differ
diff --git a/sound/vore/sunesound/prey/death_11.ogg b/sound/vore/sunesound/prey/death_11.ogg
new file mode 100644
index 00000000000..b8089d0d884
Binary files /dev/null and b/sound/vore/sunesound/prey/death_11.ogg differ
diff --git a/sound/vore/sunesound/prey/death_12.ogg b/sound/vore/sunesound/prey/death_12.ogg
new file mode 100644
index 00000000000..b39a17b9aa2
Binary files /dev/null and b/sound/vore/sunesound/prey/death_12.ogg differ
diff --git a/sound/vore/sunesound/prey/death_13.ogg b/sound/vore/sunesound/prey/death_13.ogg
new file mode 100644
index 00000000000..375e1ec72fe
Binary files /dev/null and b/sound/vore/sunesound/prey/death_13.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_01.ogg b/sound/vore/sunesound/prey/digest_01.ogg
new file mode 100644
index 00000000000..03407738651
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_01.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_02.ogg b/sound/vore/sunesound/prey/digest_02.ogg
new file mode 100644
index 00000000000..837e894f805
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_02.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_03.ogg b/sound/vore/sunesound/prey/digest_03.ogg
new file mode 100644
index 00000000000..6f5db33b788
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_03.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_04.ogg b/sound/vore/sunesound/prey/digest_04.ogg
new file mode 100644
index 00000000000..b4184cd2a93
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_04.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_05.ogg b/sound/vore/sunesound/prey/digest_05.ogg
new file mode 100644
index 00000000000..79209df1f5d
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_05.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_06.ogg b/sound/vore/sunesound/prey/digest_06.ogg
new file mode 100644
index 00000000000..193167c50d1
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_06.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_07.ogg b/sound/vore/sunesound/prey/digest_07.ogg
new file mode 100644
index 00000000000..1092c3d5e0d
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_07.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_08.ogg b/sound/vore/sunesound/prey/digest_08.ogg
new file mode 100644
index 00000000000..ef6aa1dcabb
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_08.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_09.ogg b/sound/vore/sunesound/prey/digest_09.ogg
new file mode 100644
index 00000000000..db0a07d2b8b
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_09.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_10.ogg b/sound/vore/sunesound/prey/digest_10.ogg
new file mode 100644
index 00000000000..788350acc66
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_10.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_11.ogg b/sound/vore/sunesound/prey/digest_11.ogg
new file mode 100644
index 00000000000..9f00271cd3d
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_11.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_12.ogg b/sound/vore/sunesound/prey/digest_12.ogg
new file mode 100644
index 00000000000..4a7e3606884
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_12.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_13.ogg b/sound/vore/sunesound/prey/digest_13.ogg
new file mode 100644
index 00000000000..890c65ab088
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_13.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_14.ogg b/sound/vore/sunesound/prey/digest_14.ogg
new file mode 100644
index 00000000000..de54440ea54
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_14.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_15.ogg b/sound/vore/sunesound/prey/digest_15.ogg
new file mode 100644
index 00000000000..52ad557e849
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_15.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_16.ogg b/sound/vore/sunesound/prey/digest_16.ogg
new file mode 100644
index 00000000000..f2ff1396517
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_16.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_17.ogg b/sound/vore/sunesound/prey/digest_17.ogg
new file mode 100644
index 00000000000..fa8ac42ae4a
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_17.ogg differ
diff --git a/sound/vore/sunesound/prey/digest_18.ogg b/sound/vore/sunesound/prey/digest_18.ogg
new file mode 100644
index 00000000000..f6fa631ad39
Binary files /dev/null and b/sound/vore/sunesound/prey/digest_18.ogg differ
diff --git a/sound/vore/sunesound/prey/escape.ogg b/sound/vore/sunesound/prey/escape.ogg
new file mode 100644
index 00000000000..9947f530133
Binary files /dev/null and b/sound/vore/sunesound/prey/escape.ogg differ
diff --git a/sound/vore/sunesound/prey/insertion_01.ogg b/sound/vore/sunesound/prey/insertion_01.ogg
new file mode 100644
index 00000000000..e8ec89cd9e7
Binary files /dev/null and b/sound/vore/sunesound/prey/insertion_01.ogg differ
diff --git a/sound/vore/sunesound/prey/insertion_02.ogg b/sound/vore/sunesound/prey/insertion_02.ogg
new file mode 100644
index 00000000000..e21b6b23e8a
Binary files /dev/null and b/sound/vore/sunesound/prey/insertion_02.ogg differ
diff --git a/sound/vore/sunesound/prey/loop.ogg b/sound/vore/sunesound/prey/loop.ogg
new file mode 100644
index 00000000000..a6a040e5017
Binary files /dev/null and b/sound/vore/sunesound/prey/loop.ogg differ
diff --git a/sound/vore/sunesound/prey/schlorp.ogg b/sound/vore/sunesound/prey/schlorp.ogg
new file mode 100644
index 00000000000..c9cd5a34132
Binary files /dev/null and b/sound/vore/sunesound/prey/schlorp.ogg differ
diff --git a/sound/vore/sunesound/prey/squish_01.ogg b/sound/vore/sunesound/prey/squish_01.ogg
new file mode 100644
index 00000000000..d1b32853815
Binary files /dev/null and b/sound/vore/sunesound/prey/squish_01.ogg differ
diff --git a/sound/vore/sunesound/prey/squish_02.ogg b/sound/vore/sunesound/prey/squish_02.ogg
new file mode 100644
index 00000000000..f754a258f48
Binary files /dev/null and b/sound/vore/sunesound/prey/squish_02.ogg differ
diff --git a/sound/vore/sunesound/prey/squish_03.ogg b/sound/vore/sunesound/prey/squish_03.ogg
new file mode 100644
index 00000000000..9a01dcd2e9e
Binary files /dev/null and b/sound/vore/sunesound/prey/squish_03.ogg differ
diff --git a/sound/vore/sunesound/prey/squish_04.ogg b/sound/vore/sunesound/prey/squish_04.ogg
new file mode 100644
index 00000000000..d7c96b5beed
Binary files /dev/null and b/sound/vore/sunesound/prey/squish_04.ogg differ
diff --git a/sound/vore/sunesound/prey/stomachmove.ogg b/sound/vore/sunesound/prey/stomachmove.ogg
new file mode 100644
index 00000000000..1a32c7a217b
Binary files /dev/null and b/sound/vore/sunesound/prey/stomachmove.ogg differ
diff --git a/sound/vore/sunesound/prey/struggle_01.ogg b/sound/vore/sunesound/prey/struggle_01.ogg
new file mode 100644
index 00000000000..ca90ed4f194
Binary files /dev/null and b/sound/vore/sunesound/prey/struggle_01.ogg differ
diff --git a/sound/vore/sunesound/prey/struggle_02.ogg b/sound/vore/sunesound/prey/struggle_02.ogg
new file mode 100644
index 00000000000..711c488db2d
Binary files /dev/null and b/sound/vore/sunesound/prey/struggle_02.ogg differ
diff --git a/sound/vore/sunesound/prey/struggle_03.ogg b/sound/vore/sunesound/prey/struggle_03.ogg
new file mode 100644
index 00000000000..d7e4e5f0bb5
Binary files /dev/null and b/sound/vore/sunesound/prey/struggle_03.ogg differ
diff --git a/sound/vore/sunesound/prey/struggle_04.ogg b/sound/vore/sunesound/prey/struggle_04.ogg
new file mode 100644
index 00000000000..4e6532a0fc0
Binary files /dev/null and b/sound/vore/sunesound/prey/struggle_04.ogg differ
diff --git a/sound/vore/sunesound/prey/struggle_05.ogg b/sound/vore/sunesound/prey/struggle_05.ogg
new file mode 100644
index 00000000000..6399d69adcc
Binary files /dev/null and b/sound/vore/sunesound/prey/struggle_05.ogg differ
diff --git a/sound/vore/sunesound/prey/swallow_01.ogg b/sound/vore/sunesound/prey/swallow_01.ogg
new file mode 100644
index 00000000000..86e14ef7af5
Binary files /dev/null and b/sound/vore/sunesound/prey/swallow_01.ogg differ
diff --git a/sound/vore/sunesound/prey/swallow_02.ogg b/sound/vore/sunesound/prey/swallow_02.ogg
new file mode 100644
index 00000000000..dbfad7750a0
Binary files /dev/null and b/sound/vore/sunesound/prey/swallow_02.ogg differ
diff --git a/sound/vore/sunesound/prey/taurswallow.ogg b/sound/vore/sunesound/prey/taurswallow.ogg
new file mode 100644
index 00000000000..925ac9229c1
Binary files /dev/null and b/sound/vore/sunesound/prey/taurswallow.ogg differ
diff --git a/vorestation.dme b/vorestation.dme
index 01ae78f794a..67327f3c2d9 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -706,7 +706,6 @@
#include "code\game\machinery\alarm.dm"
#include "code\game\machinery\atmo_control.dm"
#include "code\game\machinery\autolathe.dm"
-#include "code\game\machinery\autolathe_vr.dm"
#include "code\game\machinery\Beacon.dm"
#include "code\game\machinery\biogenerator.dm"
#include "code\game\machinery\bioprinter.dm"
@@ -2536,6 +2535,11 @@
#include "code\modules\mob\living\simple_mob\subtypes\vore\wolf.dm"
#include "code\modules\mob\living\simple_mob\subtypes\vore\wolfgirl.dm"
#include "code\modules\mob\living\simple_mob\subtypes\vore\zz_vore_overrides.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\vore\demon\_defines.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\vore\demon\demon.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\vore\demon\demon_abilities.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\vore\demon\demon_subtypes.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\vore\demon\~defines.dm"
#include "code\modules\mob\living\simple_mob\subtypes\vore\morph\morph.dm"
#include "code\modules\mob\living\simple_mob\subtypes\vore\shadekin\_defines.dm"
#include "code\modules\mob\living\simple_mob\subtypes\vore\shadekin\ability_objects.dm"