diff --git a/code/__defines/chemistry_vr.dm b/code/__defines/chemistry_vr.dm
new file mode 100644
index 00000000000..7c29bced618
--- /dev/null
+++ b/code/__defines/chemistry_vr.dm
@@ -0,0 +1,4 @@
+// More for our custom races
+#define IS_SERGAL 10
+#define IS_AKULA 11
+#define IS_NEVREAN 12
\ No newline at end of file
diff --git a/code/datums/wires/jukebox_vr.dm b/code/datums/wires/jukebox_vr.dm
new file mode 100644
index 00000000000..bfe62be2bd7
--- /dev/null
+++ b/code/datums/wires/jukebox_vr.dm
@@ -0,0 +1,66 @@
+/datum/wires/jukebox
+ random = 1
+ holder_type = /obj/machinery/media/jukebox/vore
+ wire_count = 7
+
+var/const/WIRE_POWER = 1
+var/const/WIRE_HACK = 2
+var/const/WIRE_SPEEDUP = 4
+var/const/WIRE_SPEEDDOWN = 8
+var/const/WIRE_REVERSE = 16
+var/const/WIRE_NOTHING1 = 32
+var/const/WIRE_NOTHING2 = 64
+
+/datum/wires/jukebox/CanUse(var/mob/living/L)
+ var/obj/machinery/media/jukebox/A = holder
+ if(A.panel_open)
+ return 1
+ return 0
+
+// Show the status of lights as a hint to the current state
+/datum/wires/jukebox/GetInteractWindow()
+ var/obj/machinery/media/jukebox/vore/A = holder
+ . += ..()
+ . += "
The power light is [(A.stat & (BROKEN|NOPOWER)) ? "off" : "on"].
"
+ . += "The parental guidance light is [A.hacked ? "off" : "on"].
"
+ . += "The data light is [IsIndexCut(WIRE_REVERSE) ? "hauntingly dark" : "glowing sloftly"].
"
+
+// Give a hint as to what each wire does
+/datum/wires/jukebox/UpdatePulsed(var/index)
+ var/obj/machinery/media/jukebox/vore/A = holder
+ switch(index)
+ if(WIRE_POWER)
+ holder.visible_message("\icon[holder] The power light flickers.")
+ A.shock(usr, 90)
+ if(WIRE_HACK)
+ holder.visible_message("\icon[holder] The parental guidance light flickers.")
+ if(WIRE_REVERSE)
+ holder.visible_message("\icon[holder] The data light blinks ominously.")
+ if(WIRE_SPEEDUP)
+ holder.visible_message("\icon[holder] The speakers squeaks.")
+ if(WIRE_SPEEDDOWN)
+ holder.visible_message("\icon[holder] The speakers rumble.")
+ else
+ A.shock(usr, 10) // The nothing wires give a chance to shock just for fun
+
+/datum/wires/jukebox/UpdateCut(var/index, var/mended)
+ var/obj/machinery/media/jukebox/vore/A = holder
+
+ switch(index)
+ if(WIRE_POWER)
+ // TODO - Actually make machine electrified or something.
+ A.shock(usr, 90)
+
+ if(WIRE_HACK)
+ if(mended)
+ A.set_hacked(0)
+ else
+ A.set_hacked(1)
+
+ if(WIRE_SPEEDUP, WIRE_SPEEDDOWN, WIRE_REVERSE)
+ var/newfreq = IsIndexCut(WIRE_REVERSE) ? -1 : 1;
+ if (IsIndexCut(WIRE_SPEEDUP))
+ newfreq *= 2
+ if (IsIndexCut(WIRE_SPEEDDOWN))
+ newfreq *= 0.5
+ A.freq = newfreq
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 1c420728ba5..caa6e78a7f4 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -257,7 +257,10 @@ var/list/mob/living/forced_ambiance_list = new
if(forced_ambience)
if(forced_ambience.len)
forced_ambiance_list |= L
- L << sound(pick(forced_ambience), repeat = 1, wait = 0, volume = 25, channel = 1)
+ var/sound/chosen_ambiance = pick(forced_ambience)
+ if(!istype(chosen_ambiance))
+ chosen_ambiance = sound(chosen_ambiance, repeat = 1, wait = 0, volume = 25, channel = 1)
+ L << chosen_ambiance
else
L << sound(null, channel = 1)
else if(src.ambience.len && prob(35))
diff --git a/code/game/machinery/jukebox_vr.dm b/code/game/machinery/jukebox_vr.dm
new file mode 100644
index 00000000000..90eb4de98c0
--- /dev/null
+++ b/code/game/machinery/jukebox_vr.dm
@@ -0,0 +1,101 @@
+// The improved, hackable jukebox for vorestation!
+
+/obj/machinery/media/jukebox/vore
+ name = "space jukebox"
+ icon = 'icons/obj/jukebox_vr.dmi'
+
+ // Vars for hacking
+ var/datum/wires/jukebox/wires = null
+ var/hacked = 0 // Whether to show the hidden songs or not
+ var/freq = 0
+
+ // Only visible if hacked
+ var/list/datum/track/secret_tracks = list(
+ new/datum/track("Bandit Radio", 'sound/music/jukebox/bandit_radio.ogg'),
+ new/datum/track("Ghost Fight (Toby Fox)", 'sound/music/jukebox/TobyFoxGhostFight.mid'),
+ new/datum/track("Space Asshole", 'sound/music/space_asshole.ogg'),
+ new/datum/track("THUNDERDOME", 'sound/music/THUNDERDOME.ogg'),
+ )
+
+ // Normally visible tracks
+ tracks = list(
+ // AND WE DO NOT CARE~! AND WE DO NOT CARE~!
+ new/datum/track("A Song About Hares", 'sound/music/jukebox/SongAboutHares.ogg'),
+ new/datum/track("Below The Asteroids", 'sound/music/jukebox/BelowTheAsteroids.ogg'),
+ new/datum/track("Beyond", 'sound/ambience/ambispace.ogg'),
+ new/datum/track("Clouds of Fire", 'sound/music/clouds.s3m'),
+ new/datum/track("D`Bert", 'sound/music/title2.ogg'),
+ new/datum/track("D`Fort", 'sound/ambience/song_game.ogg'),
+ new/datum/track("Duck Tales - Moon", 'sound/music/jukebox/DuckTalesMoon.mid'),
+ new/datum/track("Endless Space", 'sound/music/space.ogg'),
+ new/datum/track("Floating", 'sound/music/main.ogg'),
+ new/datum/track("Fly Me To The Moon", 'sound/music/jukebox/Fly_Me_To_The_Moon.ogg'),
+ new/datum/track("Mad About Me", 'sound/music/jukebox/Cantina.ogg'),
+ new/datum/track("Minor Turbulence", 'sound/music/jukebox/MinorTurbulenceFull.ogg'),
+ new/datum/track("Ode to Greed", 'sound/music/jukebox/OdeToGreed.ogg'),
+ new/datum/track("Part A", 'sound/misc/TestLoop1.ogg'),
+ new/datum/track("Ransacked", 'sound/music/jukebox/Ransacked.ogg'),
+ // EVEN THOUGH THE STATION IS FULL OF HUNGRY WOLVES
+ new/datum/track("Russkiy rep Diskoteka", 'sound/music/jukebox/russianrapdisco.ogg'),
+ new/datum/track("Scratch", 'sound/music/title1.ogg'),
+ new/datum/track("Space Oddity", 'sound/music/space_oddity.ogg'),
+ new/datum/track("Trai`Tor", 'sound/music/traitor.ogg'),
+ new/datum/track("Welcome To Jurassic Park", 'sound/music/jukebox/WelcomeToJurassicPark.mid')
+ )
+
+/obj/machinery/media/jukebox/vore/New()
+ ..()
+ wires = new/datum/wires/jukebox(src)
+
+/obj/machinery/media/jukebox/vore/Destroy()
+ ..()
+ qdel(wires)
+ wires = null
+
+/obj/machinery/media/jukebox/vore/update_icon()
+ ..()
+ if (panel_open)
+ overlays += "panel_open"
+
+
+/obj/machinery/media/jukebox/vore/proc/set_hacked(var/newhacked)
+ if (hacked == newhacked) return
+ hacked = newhacked
+ if (hacked)
+ tracks.Add(secret_tracks)
+ else
+ tracks.Remove(secret_tracks)
+ updateDialog()
+
+
+/obj/machinery/media/jukebox/vore/attackby(obj/item/W as obj, mob/user as mob)
+ src.add_fingerprint(user)
+ if (default_deconstruction_screwdriver(user, W))
+ return
+ if(istype(W, /obj/item/weapon/wirecutters))
+ return wires.Interact(user)
+ if(istype(W, /obj/item/device/multitool))
+ return wires.Interact(user)
+ return ..()
+
+
+/obj/machinery/media/jukebox/vore/StartPlaying()
+ StopPlaying()
+ if(!current_track)
+ return
+
+ var/area/main_area = get_area(src)
+ if(freq)
+ var/sound/new_song = sound(current_track.sound, channel = 1, repeat = 1, volume = 25)
+ new_song.frequency = freq
+ main_area.forced_ambience = list(new_song)
+ else
+ main_area.forced_ambience = list(current_track.sound)
+
+ for(var/mob/living/M in mobs_in_area(main_area))
+ if(M.mind)
+ main_area.play_ambience(M)
+
+ playing = 1
+ update_use_power(2)
+ update_icon()
diff --git a/code/modules/mob/language/station_vr.dm b/code/modules/mob/language/station_vr.dm
new file mode 100644
index 00000000000..8abb49d1c7a
--- /dev/null
+++ b/code/modules/mob/language/station_vr.dm
@@ -0,0 +1,26 @@
+/* 'basic' language; spoken by default.
+/datum/language/common
+ name = "Galactic Common"
+ desc = "The common galactic tongue."
+ speech_verb = "says"
+ whisper_verb = "whispers"
+ key = "0"
+ flags = RESTRICTED
+ syllables = list("blah","blah","blah","bleh","meh","neh","nah","wah")
+*/
+
+/datum/language/birdsong
+ name = "Birdsong"
+ desc = "A language primarily spoken by Narvians"
+ speech_verb = "chirps"
+ colour = "birdsongc"
+ key = "7"
+ syllables = list ("cheep", "peep", "tweet")
+
+/datum/language/sergal
+ name = "Sagaru"
+ desc = "The dominant language of the Sergal homeworld, Vilous. It consists of aggressive low-pitched hissing and throaty growling."
+ speech_verb = "snarls"
+ colour = "sergal"
+ key = "z"
+ syllables = list ("grr", "gah", "woof", "arf", "arra", "rah", "wor", "sarg")
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index ba9f03579de..b2306d834d8 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -206,6 +206,8 @@
if(suiciding)
msg += "[T.He] appears to have commited suicide... there is no hope of recovery.\n"
+ msg += attempt_vr(src,"examine_weight",args) //VOREStation Code
+
if(mSmallsize in mutations)
msg += "[T.He] [T.is] small halfling!\n"
diff --git a/code/modules/mob/living/carbon/human/examine_vr.dm b/code/modules/mob/living/carbon/human/examine_vr.dm
new file mode 100644
index 00000000000..240870f84f7
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/examine_vr.dm
@@ -0,0 +1,25 @@
+/mob/living/carbon/human/proc/examine_weight()
+ var/message = ""
+
+ switch(weight)
+ if(0 to 74)
+ message = "\red They are terribly lithe and frail!\n" //I couldn't get the t.he, t_he, or \he to work, so... Let's just use they!
+ if(75 to 99)
+ message = "They have a very slender frame.\n"
+ if(100 to 124)
+ message = "They have a lightweight, athletic build.\n"
+ if(125 to 174)
+ message = "They have a healthy, average body.\n"
+ if(175 to 224)
+ message = "They have a thick, heavy physique.\n"
+ if(225 to 274)
+ message = "They have a plush, chubby figure.\n"
+ if(275 to 325)
+ message = "They have an especially plump body with a round potbelly and large hips.\n"
+ if(325 to 374)
+ message = "They have a very fat frame with a bulging potbelly, squishy rolls of pudge, very wide hips, and plump set of jiggling thighs.\n"
+ if(375 to 474)
+ message = "\red They are incredibly obese. Their massive potbelly sags over their waistline while their fat ass would probably require two chairs to sit down comfortably!\n"
+ else
+ message = "\red They are so morbidly obese, you wonder how they can even stand, let alone waddle around the station. They can't get any fatter without being immobilized.\n"
+ return message //Credit to Aronai for helping me actually get this working!
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/species_vr.dm b/code/modules/mob/living/carbon/human/species/species_vr.dm
new file mode 100644
index 00000000000..dc0f247aac0
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species/species_vr.dm
@@ -0,0 +1,8 @@
+/datum/species
+ //This is used in character setup preview generation (prefences_setup.dm) and human mob
+ //rendering (update_icons.dm)
+ var/color_mult = 0
+
+ //This is for overriding tail rendering with a specific icon in icobase, for static
+ //tails only, since tails would wag when dead if you used this
+ var/icobase_tail = 0
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/station/monkey_vr.dm b/code/modules/mob/living/carbon/human/species/station/monkey_vr.dm
new file mode 100644
index 00000000000..dd9164e4937
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species/station/monkey_vr.dm
@@ -0,0 +1,35 @@
+/datum/species/monkey/shark
+ name = "Sobaka"
+ voice_name = "Sobaka"
+ speak_emote = list("squeaks")
+ icon_state = "sharkpup1"
+ greaterform = "Akula"
+
+/datum/species/monkey/sergal
+ name = "Sergaling"
+ voice_name = "Sergaling"
+ speak_emote = list("growls")
+ icon_state = "sergal1"
+ greaterform = "Sergal"
+
+/datum/species/monkey/sparra
+ name = "Sparra"
+ voice_name = "Sparra"
+ speak_emote = list("chirps")
+ icon_state = "sparra1"
+ greaterform = "Nevrean"
+
+/* Example from Polaris code
+/datum/species/monkey/tajaran
+ name = "Farwa"
+ name_plural = "Farwa"
+
+ icobase = 'icons/mob/human_races/monkeys/r_farwa.dmi'
+ deform = 'icons/mob/human_races/monkeys/r_farwa.dmi'
+
+ greater_form = "Tajaran"
+ default_language = "Farwa"
+ flesh_color = "#AFA59E"
+ base_color = "#333333"
+ tail = "farwatail"
+*/
diff --git a/code/modules/mob/living/carbon/human/species/station/station_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_vr.dm
new file mode 100644
index 00000000000..72f9e658234
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species/station/station_vr.dm
@@ -0,0 +1,123 @@
+/datum/species/sergal
+ name = "Sergal"
+ name_plural = "Sergals"
+ icobase = 'icons/mob/human_races/r_sergal.dmi'
+ deform = 'icons/mob/human_races/r_def_sergal.dmi'
+ tail = "tail"
+ icobase_tail = 1
+ unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
+ //darksight = 8
+ //slowdown = -0.5
+ //brute_mod = 1.15
+ //burn_mod = 1.15
+ //gluttonous = 1
+ num_alternate_languages = 2
+ secondary_langs = list("Sagaru")
+ name_language = "Sagaru"
+ color_mult = 1
+
+ min_age = 17
+ max_age = 80
+
+ blurb = "There are two subspecies of Sergal; Southern and Northern. Northern sergals are a highly aggressive race \
+ that lives in the plains and tundra of their homeworld. They are characterized by long, fluffy fur bodies with cold colors; \
+ usually with white abdomens, somewhat short ears, and thick faces. Southern sergals are much more docile and live in the \
+ Gold Ring City and are scattered around the outskirts in rural areas and small towns. They usually have short, brown or yellow \
+ (or other 'earthy' colors) fur, long ears, and a long, thin face. They are smaller than their Northern relatives. Both have strong \
+ racial tensions which has resulted in more than a number of wars and outright attempts at genocide. Sergals have an incredibly long \
+ lifespan, but due to their lust for violence, only a handful have ever survived beyond the age of 80, such as the infamous and \
+ legendary General Rain Silves who is claimed to have lived to 5000."
+
+ primitive_form = "Farwa" //POLARISTODO - Add other monkeytypes
+
+ spawn_flags = CAN_JOIN
+ appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
+
+ flesh_color = "#AFA59E"
+ base_color = "#333333"
+
+ reagent_tag = IS_SERGAL
+
+ heat_discomfort_strings = list(
+ "Your fur prickles in the heat.",
+ "You feel uncomfortably warm.",
+ "Your overheated skin itches."
+ )
+
+/datum/species/akula
+ name = "Akula"
+ name_plural = "Akula"
+ icobase = 'icons/mob/human_races/r_akula.dmi'
+ deform = 'icons/mob/human_races/r_def_akula.dmi'
+ tail = "tail"
+ icobase_tail = 1
+ unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
+ //darksight = 8
+ //slowdown = -0.5
+ //brute_mod = 1.15
+ //burn_mod = 1.15
+ //gluttonous = 1
+ num_alternate_languages = 2
+ secondary_langs = list("Skrellian")
+ name_language = "Skrellian"
+ color_mult = 1
+
+ min_age = 17
+ max_age = 80
+
+ blurb = "The Akula are a species of amphibious humanoids like the Skrell, but have an appearance very similar to that of a shark. \
+ They were first discovered as a primitive race of underwater dwelling tribal creatures by the Skrell. At first they were not believed \
+ to be noteworthy, but the Akula proved to be such swift and clever learners that the Skrell reclassified them as sentients. Allegedly, \
+ the Akula were also the first sentient life that the Skrell had ever encountered beside themselves, and thus the two species became swift \
+ allies over the next few hundred years. With the help of Skrellean technology, the Akula had their genome modified to be capable of \
+ surviving in open air for long periods of time. However, Akula even today still require a high humidity environment to avoid drying out \
+ after a few days, which would make life on an arid world like Virgo-Prime nearly impossible if it were not for Skrellean technology to aid them."
+
+ primitive_form = "Farwa" //POLARISTODO - Add other monkeytypes
+
+ spawn_flags = CAN_JOIN
+ appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
+
+ flesh_color = "#AFA59E"
+ base_color = "#333333"
+
+ reagent_tag = IS_AKULA
+
+/datum/species/nevrean
+ name = "Nevrean"
+ name_plural = "Nevreans"
+ icobase = 'icons/mob/human_races/r_nevrean.dmi'
+ deform = 'icons/mob/human_races/r_def_nevrean.dmi'
+ tail = "tail"
+ icobase_tail = 1
+ unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
+ //darksight = 8
+ //slowdown = -0.5
+ //brute_mod = 1.15
+ //burn_mod = 1.15
+ //gluttonous = 1
+ num_alternate_languages = 2
+ secondary_langs = list("Birdsong")
+ name_language = "Birdsong"
+ color_mult = 1
+
+ min_age = 17
+ max_age = 80
+
+ blurb = "Nevreans are a race of avian and dinosaur-like creatures living on Tal. They belong to a group of races that hails from Eltus. "
+
+ primitive_form = "Farwa" //POLARISTODO - Add other monkeytypes
+
+ spawn_flags = CAN_JOIN
+ appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
+
+ flesh_color = "#AFA59E"
+ base_color = "#333333"
+
+ reagent_tag = IS_SERGAL
+
+ heat_discomfort_strings = list(
+ "Your fur prickles in the heat.",
+ "You feel uncomfortably warm.",
+ "Your overheated skin itches."
+ )
\ No newline at end of file
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index 76122a914ba..fa66258ef46 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -38,7 +38,7 @@
handle_fire()
//stuff in the stomach
- handle_stomach()
+ //handle_stomach() //VOREStation Code
update_gravity(mob_has_gravity())
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 0c3c3a76212..f660da3c258 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -150,14 +150,10 @@
return
if(client.prefs.species != "Human" && !check_rights(R_ADMIN, 0))
- if(!is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist)
- src << alert("You are currently not whitelisted to play [client.prefs.species].")
- return 0
-
- var/datum/species/S = all_species[client.prefs.species]
- if(!(S.spawn_flags & IS_WHITELISTED))
- src << alert("Your current species,[client.prefs.species], is not available for play on the station.")
- return 0
+ if (config.usealienwhitelist)
+ if(!is_alien_whitelisted(src, client.prefs.species))
+ src << alert("You are currently not whitelisted to Play [client.prefs.species].")
+ return 0
LateChoices()
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index ae75216c4eb..16ae76dbbb7 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -232,7 +232,12 @@
limb_icon = new /icon(icobase, "[name]")
// Skin color
if(current_species && (current_species.appearance_flags & HAS_SKIN_COLOR))
- limb_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
+ //VOREStation Code Start
+ if(current_species.color_mult)
+ limb_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_MULTIPLY)
+ else
+ limb_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
+ //VOREstation Code End
// Skin tone
if(current_species && (current_species.appearance_flags & HAS_SKIN_TONE))
if (s_tone >= 0)
diff --git a/code/modules/mob/new_player/sprite_accessories_vr.dm b/code/modules/mob/new_player/sprite_accessories_vr.dm
new file mode 100644
index 00000000000..05d1c614c28
--- /dev/null
+++ b/code/modules/mob/new_player/sprite_accessories_vr.dm
@@ -0,0 +1,26 @@
+////////////////////////
+// For sergals and stuff
+////////////////////////
+/datum/sprite_accessory/hair/vr
+
+ icon = 'icons/mob/human_face_vr.dmi'
+
+ sergal_plain
+ name = "Sergal Plain"
+ icon_state = "serg_plain"
+ species_allowed = list("Sergal")
+
+ sergal_plain
+ name = "Sergal Medicore"
+ icon_state = "serg_medicore"
+ species_allowed = list("Sergal")
+
+ sergal_plain
+ name = "Sergal Tapered"
+ icon_state = "serg_tapered"
+ species_allowed = list("Sergal")
+
+ sergal_plain
+ name = "Sergal Fairytail"
+ icon_state = "serg_fairytail"
+ species_allowed = list("Sergal")
\ No newline at end of file
diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm
index 99f174ea48c..6a7ad4705c3 100644
--- a/code/modules/vore/eating/bellymodes_vr.dm
+++ b/code/modules/vore/eating/bellymodes_vr.dm
@@ -65,18 +65,16 @@
M.adjustBruteLoss(2)
M.adjustFireLoss(3)
- /* POLARISTODO - Depends on weight and scale
var/offset
if (M.weight > 137)
offset = 1 + ((M.weight - 137) / 137)
if (M.weight < 137)
offset = (137 - M.weight) / 137
- var/difference = owner.playerscale / M.playerscale
+ var/difference = owner.size_multiplier / M.size_multiplier
if(offset) // If any different than default weight, multiply the % of offset.
owner.nutrition += offset*(10/difference)
else
owner.nutrition += (10/difference)
- */
return
diff --git a/code/stylesheet.dm b/code/stylesheet.dm
index c7b73001135..5a664002413 100644
--- a/code/stylesheet.dm
+++ b/code/stylesheet.dm
@@ -89,6 +89,8 @@ h1.alert, h2.alert {color: #000000;}
.soghun {color: #228B22;}
.solcom {color: #22228B;}
.changeling {color: #800080;}
+.sergal {color: #0077FF;}
+.birdsongc {color: #CC9900;}
.rough {font-family: "Trebuchet MS", cursive, sans-serif;}
.say_quote {font-family: Georgia, Verdana, sans-serif;}
diff --git a/icons/mob/human_face_vr.dmi b/icons/mob/human_face_vr.dmi
new file mode 100644
index 00000000000..6afc04bfb56
Binary files /dev/null and b/icons/mob/human_face_vr.dmi differ
diff --git a/icons/mob/human_races/r_akula.dmi b/icons/mob/human_races/r_akula.dmi
new file mode 100644
index 00000000000..114d5c0fa9e
Binary files /dev/null and b/icons/mob/human_races/r_akula.dmi differ
diff --git a/icons/mob/human_races/r_def_akula.dmi b/icons/mob/human_races/r_def_akula.dmi
new file mode 100644
index 00000000000..3b99d8c82b5
Binary files /dev/null and b/icons/mob/human_races/r_def_akula.dmi differ
diff --git a/icons/mob/human_races/r_def_nevrean.dmi b/icons/mob/human_races/r_def_nevrean.dmi
new file mode 100644
index 00000000000..42c18e18d6c
Binary files /dev/null and b/icons/mob/human_races/r_def_nevrean.dmi differ
diff --git a/icons/mob/human_races/r_def_sergal.dmi b/icons/mob/human_races/r_def_sergal.dmi
new file mode 100644
index 00000000000..c43a5835f8a
Binary files /dev/null and b/icons/mob/human_races/r_def_sergal.dmi differ
diff --git a/icons/mob/human_races/r_nevrean.dmi b/icons/mob/human_races/r_nevrean.dmi
new file mode 100644
index 00000000000..d1a590c800f
Binary files /dev/null and b/icons/mob/human_races/r_nevrean.dmi differ
diff --git a/icons/mob/human_races/r_sergal.dmi b/icons/mob/human_races/r_sergal.dmi
new file mode 100644
index 00000000000..fc073254c0b
Binary files /dev/null and b/icons/mob/human_races/r_sergal.dmi differ
diff --git a/icons/mob/species/akula/tail.dmi b/icons/mob/species/akula/tail.dmi
new file mode 100644
index 00000000000..20327c86baa
Binary files /dev/null and b/icons/mob/species/akula/tail.dmi differ
diff --git a/icons/mob/species/nevrean/tail.dmi b/icons/mob/species/nevrean/tail.dmi
new file mode 100644
index 00000000000..5d3027f6b73
Binary files /dev/null and b/icons/mob/species/nevrean/tail.dmi differ
diff --git a/icons/mob/species/sergal/tail.dmi b/icons/mob/species/sergal/tail.dmi
new file mode 100644
index 00000000000..87e1f6a40b0
Binary files /dev/null and b/icons/mob/species/sergal/tail.dmi differ
diff --git a/icons/obj/jukebox_vr.dmi b/icons/obj/jukebox_vr.dmi
new file mode 100644
index 00000000000..52386940e98
Binary files /dev/null and b/icons/obj/jukebox_vr.dmi differ
diff --git a/maps/virgo-1.dmm b/maps/virgo-1.dmm
index 1a1189f9681..7c7f24790a9 100644
--- a/maps/virgo-1.dmm
+++ b/maps/virgo-1.dmm
@@ -2892,7 +2892,7 @@
"bdF" = (/obj/structure/cable/green,/obj/structure/flora/pottedplant,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/effect/floor_decal/corner/brown/full,/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
"bdG" = (/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/obj/effect/floor_decal/corner/brown{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
"bdH" = (/obj/machinery/camera/network/northern_star{c_tag = "Hall - Recreation Aft"; dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
-"bdI" = (/obj/machinery/camera/network/civilian{c_tag = "CIV - Cafe"; dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/media/jukebox,/obj/effect/floor_decal/corner/brown{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
+"bdI" = (/obj/machinery/camera/network/civilian{c_tag = "CIV - Cafe"; dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/media/jukebox/vore,/obj/effect/floor_decal/corner/brown{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
"bdJ" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor/tiled/freezer,/area/medical/surgery_storage)
"bdK" = (/obj/structure/closet/crate/freezer,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/freezer,/area/medical/surgery_storage)
"bdL" = (/obj/machinery/iv_drip,/turf/simulated/floor/tiled/freezer,/area/medical/surgery_storage)
@@ -5582,7 +5582,7 @@
"cdr" = (/obj/machinery/computer/rcon,/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/yellow/full{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/bridge)
"cds" = (/obj/machinery/computer/shuttle_control/mining,/obj/effect/floor_decal/corner/brown/full{dir = 8},/obj/machinery/camera/network/command{c_tag = "COM - Bridge Port"},/turf/simulated/floor/tiled,/area/bridge)
"cdt" = (/obj/machinery/computer/shuttle_control/research,/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/purple/full{dir = 1},/turf/simulated/floor/tiled,/area/bridge)
-"cdu" = (/obj/machinery/media/jukebox,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"cdu" = (/obj/machinery/media/jukebox/vore,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"cdv" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/corner/blue{dir = 1},/turf/simulated/floor/tiled,/area/bridge)
"cdw" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/bridge)
"cdx" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 2},/turf/simulated/floor/tiled,/area/bridge)
diff --git a/sound/music/jukebox/BelowTheAsteroids.ogg b/sound/music/jukebox/BelowTheAsteroids.ogg
new file mode 100644
index 00000000000..121b4b7ceb9
Binary files /dev/null and b/sound/music/jukebox/BelowTheAsteroids.ogg differ
diff --git a/sound/music/jukebox/Cantina.ogg b/sound/music/jukebox/Cantina.ogg
new file mode 100644
index 00000000000..e07191f018d
Binary files /dev/null and b/sound/music/jukebox/Cantina.ogg differ
diff --git a/sound/music/jukebox/DuckTalesMoon.mid b/sound/music/jukebox/DuckTalesMoon.mid
new file mode 100644
index 00000000000..878c6834b40
Binary files /dev/null and b/sound/music/jukebox/DuckTalesMoon.mid differ
diff --git a/sound/music/jukebox/Fly_Me_To_The_Moon.ogg b/sound/music/jukebox/Fly_Me_To_The_Moon.ogg
new file mode 100644
index 00000000000..ccfe03e4063
Binary files /dev/null and b/sound/music/jukebox/Fly_Me_To_The_Moon.ogg differ
diff --git a/sound/music/jukebox/MinorTurbulenceFull.ogg b/sound/music/jukebox/MinorTurbulenceFull.ogg
new file mode 100644
index 00000000000..3826cbd1327
Binary files /dev/null and b/sound/music/jukebox/MinorTurbulenceFull.ogg differ
diff --git a/sound/music/jukebox/OdeToGreed.ogg b/sound/music/jukebox/OdeToGreed.ogg
new file mode 100644
index 00000000000..eb632529451
Binary files /dev/null and b/sound/music/jukebox/OdeToGreed.ogg differ
diff --git a/sound/music/jukebox/Ransacked.ogg b/sound/music/jukebox/Ransacked.ogg
new file mode 100644
index 00000000000..4b8edf3583f
Binary files /dev/null and b/sound/music/jukebox/Ransacked.ogg differ
diff --git a/sound/music/jukebox/SongAboutHares.ogg b/sound/music/jukebox/SongAboutHares.ogg
new file mode 100644
index 00000000000..1013f50c852
Binary files /dev/null and b/sound/music/jukebox/SongAboutHares.ogg differ
diff --git a/sound/music/jukebox/TobyFoxGhostFight.mid b/sound/music/jukebox/TobyFoxGhostFight.mid
new file mode 100644
index 00000000000..7a832c56d02
Binary files /dev/null and b/sound/music/jukebox/TobyFoxGhostFight.mid differ
diff --git a/sound/music/jukebox/WelcomeToJurassicPark.mid b/sound/music/jukebox/WelcomeToJurassicPark.mid
new file mode 100644
index 00000000000..57fd9082fb7
Binary files /dev/null and b/sound/music/jukebox/WelcomeToJurassicPark.mid differ
diff --git a/sound/music/jukebox/bandit_radio.ogg b/sound/music/jukebox/bandit_radio.ogg
new file mode 100644
index 00000000000..9057dfda73c
Binary files /dev/null and b/sound/music/jukebox/bandit_radio.ogg differ
diff --git a/sound/music/jukebox/russianrapdisco.ogg b/sound/music/jukebox/russianrapdisco.ogg
new file mode 100644
index 00000000000..6c749817499
Binary files /dev/null and b/sound/music/jukebox/russianrapdisco.ogg differ
diff --git a/vorestation.dme b/vorestation.dme
index e446ba7d88c..66a1ec71b93 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -24,6 +24,7 @@
#include "code\__defines\atmos.dm"
#include "code\__defines\belly_modes_vr.dm"
#include "code\__defines\chemistry.dm"
+#include "code\__defines\chemistry_vr.dm"
#include "code\__defines\damage_organs.dm"
#include "code\__defines\dna.dm"
#include "code\__defines\gamemode.dm"
@@ -195,6 +196,7 @@
#include "code\datums\wires\autolathe.dm"
#include "code\datums\wires\camera.dm"
#include "code\datums\wires\explosive.dm"
+#include "code\datums\wires\jukebox_vr.dm"
#include "code\datums\wires\particle_accelerator.dm"
#include "code\datums\wires\radio.dm"
#include "code\datums\wires\robot.dm"
@@ -403,6 +405,7 @@
#include "code\game\machinery\igniter.dm"
#include "code\game\machinery\iv_drip.dm"
#include "code\game\machinery\jukebox.dm"
+#include "code\game\machinery\jukebox_vr.dm"
#include "code\game\machinery\lightswitch.dm"
#include "code\game\machinery\machinery.dm"
#include "code\game\machinery\magnet.dm"
@@ -1294,6 +1297,7 @@
#include "code\modules\mob\language\monkey.dm"
#include "code\modules\mob\language\outsider.dm"
#include "code\modules\mob\language\station.dm"
+#include "code\modules\mob\language\station_vr.dm"
#include "code\modules\mob\language\synthetic.dm"
#include "code\modules\mob\living\autohiss.dm"
#include "code\modules\mob\living\damage_procs.dm"
@@ -1353,6 +1357,7 @@
#include "code\modules\mob\living\carbon\human\death.dm"
#include "code\modules\mob\living\carbon\human\emote.dm"
#include "code\modules\mob\living\carbon\human\examine.dm"
+#include "code\modules\mob\living\carbon\human\examine_vr.dm"
#include "code\modules\mob\living\carbon\human\human.dm"
#include "code\modules\mob\living\carbon\human\human_attackhand.dm"
#include "code\modules\mob\living\carbon\human\human_damage.dm"
@@ -1377,12 +1382,14 @@
#include "code\modules\mob\living\carbon\human\species\species.dm"
#include "code\modules\mob\living\carbon\human\species\species_attack.dm"
#include "code\modules\mob\living\carbon\human\species\species_hud.dm"
+#include "code\modules\mob\living\carbon\human\species\species_vr.dm"
#include "code\modules\mob\living\carbon\human\species\outsider\shadow.dm"
#include "code\modules\mob\living\carbon\human\species\station\golem.dm"
#include "code\modules\mob\living\carbon\human\species\station\monkey.dm"
#include "code\modules\mob\living\carbon\human\species\station\seromi.dm"
#include "code\modules\mob\living\carbon\human\species\station\slime.dm"
#include "code\modules\mob\living\carbon\human\species\station\station.dm"
+#include "code\modules\mob\living\carbon\human\species\station\station_vr.dm"
#include "code\modules\mob\living\carbon\metroid\death.dm"
#include "code\modules\mob\living\carbon\metroid\emote.dm"
#include "code\modules\mob\living\carbon\metroid\examine.dm"
@@ -1498,6 +1505,7 @@
#include "code\modules\mob\new_player\preferences_setup.dm"
#include "code\modules\mob\new_player\skill.dm"
#include "code\modules\mob\new_player\sprite_accessories.dm"
+#include "code\modules\mob\new_player\sprite_accessories_vr.dm"
#include "code\modules\multiz\_stubs.dm"
#include "code\modules\multiz\basic.dm"
#include "code\modules\multiz\movement.dm"
@@ -1895,11 +1903,11 @@
#include "code\modules\vore\eating\vore_vr.dm"
#include "code\modules\vore\eating\vorehooks_vr.dm"
#include "code\modules\vore\eating\vorepanel_vr.dm"
-#include "code\modules\vore\weight\fitness_machines_vr.dm"
#include "code\modules\vore\resizing\grav_pull_vr.dm"
#include "code\modules\vore\resizing\holder_micro_vr.dm"
#include "code\modules\vore\resizing\resize_vr.dm"
#include "code\modules\vore\resizing\sizegun_vr.dm"
+#include "code\modules\vore\weight\fitness_machines_vr.dm"
#include "code\modules\xgm\xgm_gas_data.dm"
#include "code\modules\xgm\xgm_gas_mixture.dm"
#include "code\unit_tests\loadout_tests.dm"