diff --git a/code/game/objects/items/weapons/melee/shock_maul.dm b/code/game/objects/items/weapons/melee/shock_maul.dm
new file mode 100644
index 00000000000..69896c885dc
--- /dev/null
+++ b/code/game/objects/items/weapons/melee/shock_maul.dm
@@ -0,0 +1,276 @@
+/obj/item/weapon/melee/shock_maul
+ name = "concussion maul"
+ desc = "A heavy-duty concussion hammer, typically used for mining. An iconic weapon for the many uprisings of Mars. It uses a manually engaged concussive-force amplifier unit in the head to multiply impact force, but its weight and the charge up time makes it difficult to use effectively. Devastating if used correctly, but requires skill."
+ icon_state = "forcemaul"
+ item_state = "forcemaul"
+ slot_flags = SLOT_BACK
+
+ //stopping power/lethality
+ force = 35
+ armor_penetration = 20 //the sheer impact force bypasses quite a bit of armour
+ var/unwielded_force_divisor = 0.25
+ var/wielded = 0
+ var/force_unwielded = 8.75
+ var/wieldsound = null
+ var/unwieldsound = null
+ var/charge_force_mult = 1.75 //damage and AP multiplier on charged hits
+ var/launch_force = 3 //yeet distance
+ var/launch_force_unwielded = 1 //awful w/ one hand, but still gets a little distance
+ var/launch_force_disarm = 1.5 //distance multiplier when swinging in disarm mode, since disarm attacks do half damage
+ var/weaken_force = 2 //stun power
+ var/weaken_force_unwielded = 0 //can't stun at all if used onehanded
+ var/weaken_force_disarm = 1.5 //stun multiplier when in disarm mode
+
+ //mining interacts
+ var/excavation_amount = 200
+ var/destroy_artefacts = TRUE //sorry, breaks stuff
+
+ can_cleave = TRUE //SSSSMITE!
+ attackspeed = 15 //very slow!!
+ sharp = FALSE
+ edge = FALSE
+ throwforce = 25
+ flags = NOCONDUCT
+ w_class = ITEMSIZE_HUGE
+ drop_sound = 'sound/items/drop/metalweapon.ogg'
+ pickup_sound = 'sound/items/pickup/metalweapon.ogg'
+ origin_tech = list(TECH_COMBAT = 5)
+ attack_verb = list("beaten","slammed","smashed","mauled","hammered","bludgeoned")
+ var/lightcolor = "#D3FDFD"
+ var/status = 0 //whether the thing is on or not
+ var/obj/item/weapon/cell/bcell = null
+ var/hitcost = 600 //you get 4 hits out of a standard cell
+
+/obj/item/weapon/melee/shock_maul/update_held_icon()
+ var/mob/living/M = loc
+ if(istype(M) && M.can_wield_item(src) && is_held_twohanded(M))
+ wielded = 1
+ if(status)
+ force = initial(force)*charge_force_mult
+ armor_penetration *= charge_force_mult
+ else
+ force = initial(force)
+ armor_penetration = initial(armor_penetration)
+ launch_force = initial(launch_force)
+ weaken_force = initial(weaken_force)
+ name = "[initial(name)] (wielded)"
+ update_icon()
+ else
+ wielded = 0
+ if(status)
+ force = force_unwielded*charge_force_mult
+ armor_penetration *= charge_force_mult
+ else
+ force = force_unwielded
+ armor_penetration = initial(armor_penetration)
+ launch_force = launch_force_unwielded
+ weaken_force = weaken_force_unwielded
+ name = "[initial(name)]"
+ update_icon()
+ ..()
+
+/obj/item/weapon/melee/shock_maul/New()
+ ..()
+ update_held_icon()
+ return
+
+/obj/item/weapon/melee/shock_maul/get_cell()
+ return bcell
+
+/obj/item/weapon/melee/shock_maul/MouseDrop(obj/over_object as obj)
+ if(!canremove)
+ return
+
+ if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
+
+ if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why?
+ return
+
+ if (!( istype(over_object, /obj/screen) ))
+ return ..()
+
+ //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away.
+ //there's got to be a better way of doing this.
+ if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
+ return
+
+ if (( usr.restrained() ) || ( usr.stat ))
+ return
+
+ if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src))
+ return
+
+ switch(over_object.name)
+ if("r_hand")
+ usr.u_equip(src)
+ usr.put_in_r_hand(src)
+ if("l_hand")
+ usr.u_equip(src)
+ usr.put_in_l_hand(src)
+ src.add_fingerprint(usr)
+
+/obj/item/weapon/melee/shock_maul/loaded/New() //this one starts with a cell pre-installed.
+ ..()
+ bcell = new/obj/item/weapon/cell/device/weapon(src)
+ update_icon()
+ return
+
+/obj/item/weapon/melee/shock_maul/proc/deductcharge()
+ if(status == 1) //Only deducts charge when it's on
+ if(bcell)
+ if(bcell.checked_use(hitcost))
+ return 1
+ else
+ return 0
+ return null
+
+/obj/item/weapon/melee/shock_maul/proc/powercheck()
+ if(bcell)
+ if(bcell.charge < hitcost)
+ status = 0
+ update_held_icon()
+
+/obj/item/weapon/melee/shock_maul/update_icon()
+ if(status)
+ icon_state = "[initial(icon_state)]_active[wielded]"
+ item_state = icon_state
+ else if(!bcell)
+ icon_state = "[initial(icon_state)]_nocell[wielded]"
+ item_state = icon_state
+ else
+ icon_state = "[initial(icon_state)][wielded]"
+ item_state = icon_state
+
+ if(icon_state == "[initial(icon_state)]_active[wielded]")
+ set_light(2, 1, lightcolor)
+ else
+ set_light(0)
+
+/obj/item/weapon/melee/shock_maul/dropped()
+ ..()
+ if(status)
+ status = 0
+ visible_message("\The [src]'s grip safety engages!")
+ update_held_icon()
+
+/obj/item/weapon/melee/shock_maul/examine(mob/user)
+ . = ..()
+
+ if(Adjacent(user))
+ if(bcell)
+ . += "The concussion maul is [round(bcell.percent())]% charged."
+ if(!bcell)
+ . += "The concussion maul does not have a power source installed."
+
+/obj/item/weapon/melee/shock_maul/attackby(obj/item/weapon/W, mob/user)
+ if(!user.IsAdvancedToolUser())
+ return
+ if(istype(W, /obj/item/weapon/cell))
+ if(istype(W, /obj/item/weapon/cell/device))
+ if(!bcell)
+ user.drop_item()
+ W.loc = src
+ bcell = W
+ to_chat(user, "You install a cell in \the [src].")
+ update_held_icon()
+ else
+ to_chat(user, "\The [src] already has a cell.")
+ else
+ to_chat(user, "This cell is not fitted for [src].")
+
+/obj/item/weapon/melee/shock_maul/attack_hand(mob/user as mob)
+ if(user.get_inactive_hand() == src)
+ if(!user.IsAdvancedToolUser())
+ return
+ else if(bcell)
+ bcell.update_icon()
+ user.put_in_hands(bcell)
+ bcell = null
+ to_chat(user, "You remove the cell from the [src].")
+ status = 0
+ update_held_icon()
+ return
+ ..()
+ else
+ return ..()
+
+/obj/item/weapon/melee/shock_maul/attack_self(mob/user)
+ if(!user.IsAdvancedToolUser())
+ return
+ if(!status && bcell && bcell.charge >= hitcost)
+ if(do_after(user, 2 SECONDS))
+ status = 1
+ user.visible_message("[user] charges \the [src]!","You charge \the [src]. It's hammer time!")
+ playsound(src, "sparks", 75, 1, -1)
+ update_held_icon()
+ else if(status)
+ status = 0
+ user.visible_message("[user] safely disengages \the [src]'s power field.","\The [src] is now off.")
+ update_held_icon()
+ playsound(src, "sparks", 75, 1, -1)
+ if(!bcell)
+ to_chat(user, "\The [src] does not have a power source!")
+ else
+ to_chat(user, "\The [src] is out of charge.")
+ add_fingerprint(user)
+
+/obj/item/weapon/melee/shock_maul/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity)
+ if(!proximity) return
+ ..()
+ if(A && wielded && status)
+ deductcharge()
+ status = 0
+ user.visible_message("\The [src] discharges with a thunderous, hair-raising crackle!")
+ playsound(src, 'sound/weapons/resonator_blast.ogg', 100, 1, -1)
+ update_held_icon()
+ if(istype(A,/obj/structure/window))
+ var/obj/structure/window/W = A
+ visible_message("\The [W] crumples under the force of the impact!")
+ W.shatter()
+ else if(istype(A,/obj/structure/barricade))
+ var/obj/structure/barricade/B = A
+ B.dismantle()
+ else if(istype(A,/obj/structure/grille))
+ qdel(A)
+ powercheck(hitcost)
+
+/obj/item/weapon/melee/shock_maul/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
+ . = ..()
+ if(user.a_intent == I_DISARM)
+ launch_force *= launch_force_disarm
+ weaken_force *= weaken_force_disarm
+
+ //yeet 'em away, boys!
+ if(status)
+ var/atom/target_zone = get_edge_target_turf(user,get_dir(user, target))
+ if(!target.anchored) //unless they're secured in place, natch
+ target.throw_at(target_zone, launch_force, 2, user, FALSE)
+ target.Weaken(weaken_force)
+
+ deductcharge()
+ status = 0
+ user.visible_message("\The [src] discharges with a thunderous, hair-raising crackle!")
+ playsound(src, 'sound/weapons/resonator_blast.ogg', 100, 1, -1)
+ update_held_icon()
+ powercheck(hitcost)
+
+/obj/item/weapon/melee/shock_maul/emp_act(severity)
+ if(bcell)
+ bcell.emp_act(severity) //let's not duplicate code everywhere if we don't have to please.
+ if(status)
+ status = 0
+ visible_message("\The [src]'s power field hisses and sputters out.")
+ update_held_icon()
+ ..()
+
+/obj/item/weapon/melee/shock_maul/get_description_interaction()
+ var/list/results = list()
+
+ if(bcell)
+ results += "[desc_panel_image("offhand")]to remove the weapon cell."
+ else
+ results += "[desc_panel_image("weapon cell")]to add a new weapon cell."
+
+ results += ..()
+
+ return results
\ No newline at end of file
diff --git a/code/game/objects/random/mob_vr.dm b/code/game/objects/random/mob_vr.dm
index d32f365dc85..5eb18d7de0c 100644
--- a/code/game/objects/random/mob_vr.dm
+++ b/code/game/objects/random/mob_vr.dm
@@ -73,6 +73,7 @@
prob(2);/obj/item/weapon/twohanded/fireaxe,\
prob(2);/obj/item/weapon/gun/projectile/luger/brown,\
prob(2);/obj/item/weapon/gun/launcher/crossbow,\
+ prob(2);/obj/item/weapon/melee/shock_maul,\
/* prob(1);/obj/item/weapon/gun/projectile/automatic/battlerifle,\ */ // Too OP
prob(1);/obj/item/weapon/gun/projectile/deagle/gold,\
prob(1);/obj/item/weapon/gun/energy/imperial,\
diff --git a/code/game/objects/structures/ghost_pods/antagonist.dm b/code/game/objects/structures/ghost_pods/antagonist.dm
index 96f68e4af7e..e0504537dbf 100644
--- a/code/game/objects/structures/ghost_pods/antagonist.dm
+++ b/code/game/objects/structures/ghost_pods/antagonist.dm
@@ -6,11 +6,12 @@
description_info = "This contains a growing xenomorph larva, which may wake up at any moment. The larva will be another player, once activated."
icon = 'icons/mob/alien.dmi'
icon_state = "egg"
- icon_state_opened = "egg_opened" //Can be placed on map with used = 1 for POI decorations
+ icon_state_opened = "egg_opened"
var/health = 50 //So they can be destroyed by the crew
density = FALSE
ghost_query_type = /datum/ghost_query/xenomorph_larva
delay_to_try_again = 1 MINUTES //10 minutes for egg to grow, 5 minutes for larva to mature
+ anchored = TRUE
/obj/structure/ghost_pod/automatic/xenomorph_egg/create_occupant(var/mob/M)
var/mob/living/carbon/alien/larva/R = new(get_turf(src))
diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm
index 2925ef18778..9b6a93a85cd 100644
--- a/code/modules/client/preference_setup/general/02_language.dm
+++ b/code/modules/client/preference_setup/general/02_language.dm
@@ -1,5 +1,6 @@
/datum/preferences
var/extra_languages = 0
+ var/preferred_language = "common" // VOREStation Edit: Allow selecting a preferred language
/datum/category_item/player_setup_item/general/language
name = "Language"
@@ -12,6 +13,9 @@
if(islist(pref.alternate_languages)) // Because aparently it may not be?
testing("LANGSANI: Loaded from [pref.client]'s character [pref.real_name || "-name not yet loaded-"] savefile: [english_list(pref.alternate_languages || list())]")
S["language_prefixes"] >> pref.language_prefixes
+ //VORE Edit Begin
+ S["preflang"] >> pref.preferred_language
+ //VORE Edit End
S["language_custom_keys"] >> pref.language_custom_keys
/datum/category_item/player_setup_item/general/language/save_character(var/savefile/S)
@@ -21,6 +25,7 @@
testing("LANGSANI: Loaded from [pref.client]'s character [pref.real_name || "-name not yet loaded-"] savefile: [english_list(pref.alternate_languages || list())]")
S["language_prefixes"] << pref.language_prefixes
S["language_custom_keys"] << pref.language_custom_keys
+ S["preflang"] << pref.preferred_language // VOREStation Edit
/datum/category_item/player_setup_item/general/language/sanitize_character()
if(!islist(pref.alternate_languages))
@@ -36,6 +41,11 @@
testing("LANGSANI: Truncated [pref.client]'s character [pref.real_name || "-name not yet loaded-"] language list because it was too long (len: [pref.alternate_languages.len], allowed: [S.num_alternate_languages])")
pref.alternate_languages.len = (S.num_alternate_languages + pref.extra_languages) // Truncate to allowed length
+ // VOREStation Edit Start
+ if(!(pref.preferred_language in pref.alternate_languages) || !pref.preferred_language) // Safety handling for if our preferred language is ever somehow removed from the character's list of langauges, or they don't have one set
+ pref.preferred_language = S.language // Reset to default, for safety
+ // VOREStation Edit end
+
// Sanitize illegal languages
for(var/language in pref.alternate_languages)
var/datum/language/L = GLOB.all_languages[language]
@@ -80,6 +90,7 @@
. += "Language Keys
"
. += " [jointext(pref.language_prefixes, " ")] Change Reset
"
+ . += "Preferred Language [pref.preferred_language]
" // VOREStation Add
/datum/category_item/player_setup_item/general/language/OnTopic(var/href,var/list/href_list, var/mob/user)
if(href_list["remove_language"])
@@ -167,4 +178,22 @@
return TOPIC_REFRESH
+ // VOREStation Add: Preferred Language
+ else if(href_list["pref_lang"])
+ if(pref.species) // Safety to prevent a null runtime here
+ var/datum/species/S = GLOB.all_species[pref.species]
+ var/list/lang_opts = list(S.language) + pref.alternate_languages + LANGUAGE_GALCOM
+ var/selection = tgui_input_list(user, "Choose your preferred spoken language:", "Preferred Spoken Language", lang_opts, pref.preferred_language)
+ if(!selection) // Set our preferred to default, just in case.
+ tgui_alert_async(user, "Preferred Language not modified.", "Selection Canceled")
+ if(selection)
+ pref.preferred_language = selection
+ if(selection == "common" || selection == S.language)
+ tgui_alert_async(user, "You will now speak your standard default language, [S.language ? S.language : "common"], if you do not specify a language when speaking.", "Preferred Set to Default")
+ else // Did they set anything else?
+ tgui_alert_async(user, "You will now speak [pref.preferred_language] if you do not specify a language when speaking.", "Preferred Language Set")
+ return TOPIC_REFRESH
+ // VOREStation Add End
+
+
return ..()
diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
index 8c07989d88b..163ed97bb7f 100644
--- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
@@ -35,6 +35,13 @@
character_name = list("Malady Blanche")
// A CKEYS
+
+/datum/gear/fluff/mira_medal
+ path = /obj/item/clothing/accessory/medal/silver/fluff/abc314
+ display_name = "Mira's Health Service Achievement medal"
+ ckeywhitelist = list("abc314")
+ character_name = list("Mira Nesyne")
+
/datum/gear/fluff/lethe_helmet
path = /obj/item/clothing/head/helmet/hos/fluff/lethe
display_name = "Lethe's Helmet"
diff --git a/code/modules/client/preference_setup/vore/03_egg.dm b/code/modules/client/preference_setup/vore/03_egg.dm
index 49efcdf798d..5ad651fbf94 100644
--- a/code/modules/client/preference_setup/vore/03_egg.dm
+++ b/code/modules/client/preference_setup/vore/03_egg.dm
@@ -1,6 +1,13 @@
// Define a place to save appearance in character setup
+// VOREStation Add Start: Doing this here bc AUTOHISS_FULL is more readable than #
+#define AUTOHISS_OFF 0
+#define AUTOHISS_BASIC 1
+#define AUTOHISS_FULL 2
+// VOREStation Add End
+
/datum/preferences
var/vore_egg_type = "Egg" //The egg type they have.
+ var/autohiss = "Full" // VOREStation Add: Whether we have Autohiss on. I'm hijacking the egg panel bc this one has a shitton of unused space.
// Definition of the stuff for the egg type.
/datum/category_item/player_setup_item/vore/egg
@@ -9,19 +16,35 @@
/datum/category_item/player_setup_item/vore/egg/load_character(var/savefile/S)
S["vore_egg_type"] >> pref.vore_egg_type
+ S["autohiss"] >> pref.autohiss // VOREStation Add
/datum/category_item/player_setup_item/vore/egg/save_character(var/savefile/S)
S["vore_egg_type"] << pref.vore_egg_type
+ S["autohiss"] << pref.autohiss // VOREStation Add
/datum/category_item/player_setup_item/vore/egg/sanitize_character()
pref.vore_egg_type = sanitize_inlist(pref.vore_egg_type, global_vore_egg_types, initial(pref.vore_egg_type))
/datum/category_item/player_setup_item/vore/egg/copy_to_mob(var/mob/living/carbon/human/character)
character.vore_egg_type = pref.vore_egg_type
+ // VOREStation Add
+ if(pref.client) // Safety, just in case so we don't runtime.
+ if(!pref.autohiss)
+ pref.client.autohiss_mode = AUTOHISS_FULL
+ else
+ switch(pref.autohiss)
+ if("Full")
+ pref.client.autohiss_mode = AUTOHISS_FULL
+ if("Basic")
+ pref.client.autohiss_mode = AUTOHISS_BASIC
+ if("Off")
+ pref.client.autohiss_mode = AUTOHISS_OFF
+ // VOREStation Add
/datum/category_item/player_setup_item/vore/egg/content(var/mob/user)
. += "
"
. += " Egg Type: [pref.vore_egg_type]
"
+ . += "Autohiss Default Setting: [pref.autohiss]
" // VOREStation Add
/datum/category_item/player_setup_item/vore/egg/OnTopic(var/href, var/list/href_list, var/mob/user)
if(!CanUseTopic(user))
@@ -33,5 +56,21 @@
if(selection)
pref.vore_egg_type = selection
return TOPIC_REFRESH
+ // VOREStation Add Start
+ else if(href_list["autohiss"])
+ var/list/autohiss_selection = list("Full", "Basic", "Off")
+ var/selection = tgui_input_list(user, "Choose your default autohiss setting:", "Character Preference", autohiss_selection, pref.autohiss)
+ if(selection)
+ pref.autohiss = selection
+ else if(!selection)
+ pref.autohiss = "Full"
+ return TOPIC_REFRESH
+ // VOREStation Add End
else
return
+
+// VOREStation Add Start: Doing this here bc AUTOHISS_FULL is more readable than #
+#undef AUTOHISS_OFF
+#undef AUTOHISS_BASIC
+#undef AUTOHISS_FULL
+// VOREStation Add End
diff --git a/code/modules/clothing/glasses/hud_vr.dm b/code/modules/clothing/glasses/hud_vr.dm
index bab5ae46991..8def5cd6549 100644
--- a/code/modules/clothing/glasses/hud_vr.dm
+++ b/code/modules/clothing/glasses/hud_vr.dm
@@ -13,6 +13,8 @@
var/flash_prot = 0 //0 for none, 1 for flash weapon protection, 2 for welder protection
enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED)
plane_slots = list(slot_glasses)
+ var/ar_toggled = TRUE //Used for toggle_ar_planes() verb
+
/obj/item/clothing/glasses/omnihud/New()
..()
@@ -28,6 +30,14 @@
SStgui.close_uis(src)
..()
+/obj/item/clothing/glasses/omnihud/examine()
+ . = ..()
+ if(ar_toggled)
+ . += "\n The HUD indicator reads ON."
+ else
+ . += "\n The HUD indicator reads OFF."
+
+
/obj/item/clothing/glasses/omnihud/emp_act(var/severity)
if(tgarscreen)
SStgui.close_uis(src)
@@ -114,6 +124,29 @@
to_chat(usr, "The [src] don't seem to support this functionality.")
update_clothing_icon()
+/obj/item/clothing/glasses/omnihud/verb/toggle_ar_planes()
+ set name = "Toggle AR Heads-Up Display"
+ set desc = "Toggles the job icon and other non-manually requested displays. Does not disable Crew monitor and similar."
+ set category = "Object"
+ set src in usr
+
+ //We do not check if user can move or not, since this system is inspired to help see chat bubbles during scenes primarily.
+ //Preventing turning off the HUD could get in the way of scene flow.
+ usr.visible_emote("toggles a button on their [src.name]!") //Since we're turning stuff like arrest/medical HUD on/off, we should inform those nearby.
+ if(ar_toggled)
+ away_planes = enables_planes
+ enables_planes = null
+ to_chat(usr, SPAN_NOTICE("You disabled the Augmented Reality HUD of your [src.name]."))
+ else
+ enables_planes = away_planes
+ away_planes = null
+ to_chat(usr, SPAN_NOTICE("You enabled the Augmented Reality HUD of your [src.name]."))
+ ar_toggled = !ar_toggled
+ usr.update_action_buttons()
+ usr.recalculate_vis()
+
+
+
/obj/item/clothing/glasses/omnihud/proc/ar_interact(var/mob/living/carbon/human/user)
return 0 //The base models do nothing.
@@ -305,4 +338,4 @@
icon_state = "[icon_state]_1"
else
icon_state = initial(icon_state)
- update_clothing_icon()
\ No newline at end of file
+ update_clothing_icon()
diff --git a/code/modules/clothing/head/misc_vr.dm b/code/modules/clothing/head/misc_vr.dm
index 0137b1be122..7e770017606 100644
--- a/code/modules/clothing/head/misc_vr.dm
+++ b/code/modules/clothing/head/misc_vr.dm
@@ -91,7 +91,10 @@
/obj/item/clothing/head/pizzaguy
name = "pizza delivery visor"
desc = "A fancy visor showing alignment to pizza delivery service. Extremely risky career choice."
+ icon = 'icons/inventory/head/item_vr.dmi'
+ icon_override = 'icons/inventory/head/mob_vr.dmi'
icon_state = "pizzadelivery"
+ item_state = "pizzadelivery"
/obj/item/clothing/head/wedding
name = "wedding veil"
diff --git a/code/modules/emotes/definitions/audible_furry_vr.dm b/code/modules/emotes/definitions/audible_furry_vr.dm
index 4fb63982ce6..79c8819edf7 100644
--- a/code/modules/emotes/definitions/audible_furry_vr.dm
+++ b/code/modules/emotes/definitions/audible_furry_vr.dm
@@ -238,3 +238,8 @@
key = "coyawoo5"
emote_message_3p = "lets out a scraggly, whine-awoo."
emote_sound = 'sound/voice/coyoteawoo5.ogg'
+
+/decl/emote/audible/roarbark // Upstream port from CHOMP
+ key = "roarbark"
+ emote_message_3p = "lets out a roar-bark!"
+ emote_sound = 'sound/voice/roarbark.ogg'
diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm
index e999a377cd4..090e78803bc 100644
--- a/code/modules/hydroponics/trays/tray.dm
+++ b/code/modules/hydroponics/trays/tray.dm
@@ -374,9 +374,12 @@
// If a weed growth is sufficient, this proc is called.
/obj/machinery/portable_atmospherics/hydroponics/proc/weed_invasion()
+ var/previous_plant
//Remove the seed if something is already planted.
- if(seed) seed = null
+ if(seed)
+ previous_plant = seed.display_name
+ seed = null
seed = SSplants.seeds[pick(list("reishi","nettle","amanita","mushrooms","plumphelmet","towercap","harebells","weeds"))]
if(!seed) return //Weed does not exist, someone fucked up.
@@ -389,7 +392,7 @@
pestlevel = 0
sampled = 0
update_icon()
- visible_message("[src] has been overtaken by [seed.display_name].")
+ visible_message("\The [previous_plant ? previous_plant : initial(name)] has been overtaken by [seed.display_name].")
return
diff --git a/code/modules/mining/abandonedcrates_vr.dm b/code/modules/mining/abandonedcrates_vr.dm
index e5297e4f6c9..cd6113f5051 100644
--- a/code/modules/mining/abandonedcrates_vr.dm
+++ b/code/modules/mining/abandonedcrates_vr.dm
@@ -99,6 +99,7 @@
list(pick(/obj/item/weapon/grenade/spawnergrenade/spesscarp, /obj/item/weapon/grenade/spawnergrenade/spider, /obj/item/weapon/grenade/explosive/frag), 7) = 1,
list(/obj/item/weapon/grenade/flashbang/clusterbang, 7) = 1,
list(/obj/item/weapon/card/emag, 11) = 1,
+ list(/obj/item/weapon/melee/shock_maul, 11) = 5,
list(/obj/item/weapon/storage/backpack/sport/hyd/catchemall, 11) = 1
))
var/path = choice[1]
diff --git a/code/modules/mining/mine_outcrops.dm b/code/modules/mining/mine_outcrops.dm
index ae70e710e38..fb570af547c 100644
--- a/code/modules/mining/mine_outcrops.dm
+++ b/code/modules/mining/mine_outcrops.dm
@@ -97,6 +97,21 @@
new outcropdrop(get_turf(src))
qdel(src)
return
+ if (istype(W, /obj/item/weapon/melee/shock_maul))
+ var/obj/item/weapon/melee/shock_maul/S = W
+ if(!S.wielded || !S.status)
+ to_chat(user, "\The [src] must be wielded in two hands and powered on to be used for mining!")
+ return
+ to_chat(user, "You pulverize \the [src]!")
+ for(var/i=0;i<(rand(mindrop,upperdrop));i++)
+ new outcropdrop(get_turf(src))
+ playsound(src, 'sound/weapons/resonator_blast.ogg', 100, 1, -1)
+ user.visible_message("\The [S] discharges with a thunderous, hair-raising crackle!")
+ S.deductcharge()
+ S.status = 0
+ S.update_held_icon()
+ qdel(src)
+ return
/obj/random/outcrop //In case you want an outcrop without pre-determining the type of ore.
name = "random rock outcrop"
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index 9cff48c9bac..a7bbbd9d343 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -371,7 +371,6 @@ var/list/mining_overlay_cache = list()
valid_tool = 1
digspeed = P.digspeed
-
if(valid_tool)
if (sand_dug)
to_chat(user, "This area has already been dug.")
@@ -442,6 +441,51 @@ var/list/mining_overlay_cache = list()
to_chat(user, "\The [src] has been excavated to a depth of [excavation_level]cm.")
return
+ if (istype(W, /obj/item/weapon/melee/shock_maul))
+ if(!istype(user.loc, /turf))
+ return
+
+ var/obj/item/weapon/melee/shock_maul/S = W
+ if(!S.wielded || !S.status) //if we're not wielded OR not powered up, do nothing
+ to_chat(user, "\The [src] must be wielded in two hands and powered on to be used for mining!")
+ return
+
+ var/newDepth = excavation_level + S.excavation_amount // Used commonly below
+
+ //handle any archaeological finds we might uncover
+ var/fail_message = ""
+ if(finds && finds.len)
+ var/datum/find/F = finds[1]
+ if(newDepth > F.excavation_required) // Digging too deep can break the item. At least you won't summon a Balrog (probably)
+ fail_message = ". [pick("There is a crunching noise","[S] collides with some different rock","Part of the rock face crumbles away","Something breaks under [S]")]"
+ wreckfinds(S.destroy_artefacts)
+
+ to_chat(user, "You smash through \the [src][fail_message].")
+
+ if(newDepth >= 200) // This means the rock is mined out fully
+ if(S.destroy_artefacts)
+ GetDrilled(0)
+ else
+ excavate_turf()
+ return
+
+ excavation_level += S.excavation_amount
+ update_archeo_overlays(S.excavation_amount)
+
+ //drop some rocks
+ next_rock += S.excavation_amount
+ while(next_rock > 50)
+ next_rock -= 50
+ var/obj/item/weapon/ore/O = new(src)
+ geologic_data.UpdateNearbyArtifactInfo(src)
+ O.geologic_data = geologic_data
+
+ user.visible_message("\The [src] discharges with a thunderous, hair-raising crackle!")
+ playsound(src, 'sound/weapons/resonator_blast.ogg', 100, 1, -1)
+ S.deductcharge()
+ S.status = 0
+ S.update_held_icon()
+
if (istype(W, /obj/item/weapon/pickaxe))
if(!istype(user.loc, /turf))
return
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 0338603e64c..ef2c271f710 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -170,7 +170,8 @@ var/list/_human_default_emotes = list(
/decl/emote/visible/vibrate,
/decl/emote/audible/croon,
/decl/emote/audible/lwarble,
- /decl/emote/audible/croak_skrell
+ /decl/emote/audible/croak_skrell,
+ /decl/emote/audible/roarbark
//VOREStation Add End
)
diff --git a/code/modules/mob/living/carbon/human/login.dm b/code/modules/mob/living/carbon/human/login.dm
index 7d507c62cb0..802ed62a6d1 100644
--- a/code/modules/mob/living/carbon/human/login.dm
+++ b/code/modules/mob/living/carbon/human/login.dm
@@ -1,5 +1,30 @@
+// VOREStation Add Start: Doing this here bc AUTOHISS_FULL is more readable than #
+#define AUTOHISS_OFF 0
+#define AUTOHISS_BASIC 1
+#define AUTOHISS_FULL 2
+// VOREStation Add End
+
/mob/living/carbon/human/Login()
..()
update_hud()
+ // VOREStation Add
+ if(client.prefs) // Safety, just in case so we don't runtime.
+ if(!client.prefs.autohiss)
+ client.autohiss_mode = AUTOHISS_FULL
+ else
+ switch(client.prefs.autohiss)
+ if("Full")
+ client.autohiss_mode = AUTOHISS_FULL
+ if("Basic")
+ client.autohiss_mode = AUTOHISS_BASIC
+ if("Off")
+ client.autohiss_mode = AUTOHISS_OFF
+ // VOREStation Add
if(species) species.handle_login_special(src)
- return
\ No newline at end of file
+ return
+
+// VOREStation Add Start: Doing this here bc AUTOHISS_FULL is more readable than #
+#undef AUTOHISS_OFF
+#undef AUTOHISS_BASIC
+#undef AUTOHISS_FULL
+// VOREStation Add End
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 3694acaf233..7ac301e8953 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -145,32 +145,25 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
var/matrix/M = matrix()
var/anim_time = 3
- // VOREStation Edit Start: Porting Taur Loafing
- if(tail_style?.can_loaf && resting) // Only call these if we're resting?
- update_tail_showing()
- return // No need to do the rest, we return early
- /* // Commenting this out as sleeping is fucky
- if(tail_style?.can_loaf && lying && sleeping) // If we're put under by anesthetic or fainting
- update_tail_showing()
- // return // No need to do the rest, we return early
- */
- // VOREStation Edit End
-
//Due to some involuntary means, you're laying now
if(lying && !resting && !sleeping)
anim_time = 1 //Thud
if(lying && !species.prone_icon) //Only rotate them if we're not drawing a specific icon for being prone.
- var/randn = rand(1, 2)
- if(randn <= 1) // randomly choose a rotation
- M.Turn(-90)
+ if(tail_style?.can_loaf && resting) // Only call these if we're resting?
+ update_tail_showing()
+ M.Scale(desired_scale_x, desired_scale_y)
else
- M.Turn(90)
- M.Scale(desired_scale_y, desired_scale_x)//VOREStation Edit
- if(species.icon_height == 64)//VOREStation Edit
- M.Translate(13,-22)
- else
- M.Translate(1,-6)
+ var/randn = rand(1, 2)
+ if(randn <= 1) // randomly choose a rotation
+ M.Turn(-90)
+ else
+ M.Turn(90)
+ if(species.icon_height == 64)
+ M.Translate(13,-22)
+ else
+ M.Translate(1,-6)
+ M.Scale(desired_scale_y, desired_scale_x)
layer = MOB_LAYER -0.01 // Fix for a byond bug where turf entry order no longer matters
else
M.Scale(desired_scale_x, desired_scale_y)//VOREStation Edit
@@ -1270,13 +1263,13 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
//If you have a custom tail selected
if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !istaurtail(tail_style)) && !tail_hidden)
- var/icon/tail_s = new/icon("icon" = tail_style.icon, "icon_state" = (tail_style.can_loaf && resting) ? "[tail_style.icon_state]_loaf" : (wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)) // VOREStation Edit: Taur Loafing
+ var/icon/tail_s = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = (wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)) //CHOMPEdit
if(tail_style.can_loaf && !is_shifted)
pixel_y = (resting) ? -tail_style.loaf_offset*size_multiplier : default_pixel_y //move player down, then taur up, to fit the overlays correctly // VOREStation Edit: Taur Loafing
if(tail_style.do_colouration)
tail_s.Blend(rgb(src.r_tail, src.g_tail, src.b_tail), tail_style.color_blend_mode)
if(tail_style.extra_overlay)
- var/icon/overlay = new/icon("icon" = tail_style.icon, "icon_state" = (tail_style?.can_loaf && resting) ? "[tail_style.extra_overlay]_loaf" : tail_style.extra_overlay) // VOREStation Edit: Taur Loafing
+ var/icon/overlay = new/icon("icon" = (tail_style?.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay) //CHOMPEdit
if(wagging && tail_style.ani_state)
overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay_w)
overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode)
@@ -1288,7 +1281,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
qdel(overlay)
if(tail_style.extra_overlay2)
- var/icon/overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay2)
+ var/icon/overlay = new/icon("icon" = (tail_style?.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay2) //CHOMPEdit
if(wagging && tail_style.ani_state)
overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay2_w)
overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), tail_style.color_blend_mode)
@@ -1306,7 +1299,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
if(istaurtail(tail_style))
var/datum/sprite_accessory/tail/taur/taurtype = tail_style
working.pixel_x = -16
- working.pixel_y = (tail_style.can_loaf && resting) ? tail_style.loaf_offset : 0 // VOREStation Edit: Taur Loafing
if(taurtype.can_ride && !riding_datum)
riding_datum = new /datum/riding/taur(src)
verbs |= /mob/living/carbon/human/proc/taur_mount
diff --git a/code/modules/mob/living/silicon/pai/pai_vr.dm b/code/modules/mob/living/silicon/pai/pai_vr.dm
index 1f6349df059..5819a9a9f85 100644
--- a/code/modules/mob/living/silicon/pai/pai_vr.dm
+++ b/code/modules/mob/living/silicon/pai/pai_vr.dm
@@ -46,7 +46,8 @@
"catslug",
"car",
"typeone",
- "13"
+ "13",
+ "pai-raptor"
)
//These vars keep track of whether you have the related software, used for easily updating the UI
var/soft_ut = FALSE //universal translator
diff --git a/code/modules/mob/living/simple_mob/simple_mob.dm b/code/modules/mob/living/simple_mob/simple_mob.dm
index 9cf8e51530d..a99f3a33f51 100644
--- a/code/modules/mob/living/simple_mob/simple_mob.dm
+++ b/code/modules/mob/living/simple_mob/simple_mob.dm
@@ -165,9 +165,8 @@
var/limb_icon_key
var/understands_common = TRUE //VOREStation Edit - Makes it so that simplemobs can understand galcomm without being able to speak it.
var/heal_countdown = 5 //VOREStation Edit - A cooldown ticker for passive healing
- var/obj/item/weapon/card/id/mobcard = null //VOREStation Edit
- var/list/mobcard_access = list() //VOREStation Edit
- var/mobcard_provided = FALSE //VOREStation Edit
+ var/list/myid_access = list() //VOREStation Edit
+ var/ID_provided = FALSE //VOREStation Edit
// VOREStation Add: Move/Shoot/Attack delays based on damage
var/damage_fatigue_mult = 0 // Our multiplier for how heavily mobs are affected by injury. [UPDATE THIS IF THE FORMULA CHANGES]: Formula = injury_level = round(rand(1,3) * damage_fatigue_mult * clamp(((rand(2,5) * (h / getMaxHealth())) - rand(0,2)), 1, 5))
var/injury_level = 0 // What our injury level is. Rather than being the flat damage, this is the amount added to various delays to simulate injuries in a manner as lightweight as possible.
@@ -179,9 +178,9 @@
verbs -= /mob/verb/observe
health = maxHealth
- if(mobcard_provided) //VOREStation Edit
- mobcard = new /obj/item/weapon/card/id(src)
- mobcard.access = mobcard_access.Copy()
+ if(ID_provided) //VOREStation Edit
+ myid = new /obj/item/weapon/card/id(src)
+ myid.access = myid_access.Copy()
for(var/L in has_langs)
languages |= GLOB.all_languages[L]
@@ -347,4 +346,4 @@
get_injury_level() // We check how injured we are, then actually update the mob on how hurt we are.
. = ..() // Calling parent here, actually updating our mob on how hurt we are.
-// VOREStation Add End
+// VOREStation Add End
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm
index 59177f3659b..6fea80f6260 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm
@@ -44,7 +44,7 @@
friendly = list("hugs")
see_in_dark = 8
- mobcard_provided = TRUE
+ ID_provided = TRUE
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug)
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/catslug
@@ -426,7 +426,7 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/engislug)
holder_type = /obj/item/weapon/holder/catslug/custom/engislug
say_list_type = /datum/say_list/catslug/custom/engislug
- mobcard_access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_construction, access_atmospherics)
+ myid_access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_construction, access_atmospherics)
siemens_coefficient = 0 //Noodly fella's gone and built up an immunity from many small shocks
minbodytemp = 200
@@ -543,7 +543,7 @@
"bio" = 0,
"rad" = 0
) //Similarly, \some\ armour values for a smidge more survivability compared to other catslugs.
- mobcard_access = list(access_security, access_sec_doors, access_forensics_lockers, access_maint_tunnels)
+ myid_access = list(access_security, access_sec_doors, access_forensics_lockers, access_maint_tunnels)
/datum/say_list/catslug/custom/gatslug
speak = list("Have any flashbangs?", "Valids!", "Heard spiders?", "What is that?", "Freeze!", "What are you doing?", "How did you get here?", "Red alert means big bangsticks.", "No being naughty now.", "WAOW!", "Who ate all the donuts?")
@@ -580,7 +580,7 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/medislug)
holder_type = /obj/item/weapon/holder/catslug/custom/medislug
say_list_type = /datum/say_list/catslug/custom/medislug
- mobcard_access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
+ myid_access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
/datum/say_list/catslug/custom/medislug
speak = list("Have any osteodaxon?", "What is that?", "Suit sensors!", "What are you doing?", "How did you get here?", "Put a mask on!", "No smoking!", "WAOW!", "Stop getting blood everywhere!", "WHERE IN MAINT?")
@@ -616,7 +616,7 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/scienceslug)
holder_type = /obj/item/weapon/holder/catslug/custom/scienceslug
say_list_type = /datum/say_list/catslug/custom/scienceslug
- mobcard_access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch)
+ myid_access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch)
/datum/say_list/catslug/custom/scienceslug
@@ -654,7 +654,7 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/cargoslug)
holder_type = /obj/item/weapon/holder/catslug/custom/cargoslug
say_list_type = /datum/say_list/catslug/custom/cargoslug
- mobcard_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_mining, access_mining_station)
+ myid_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_mining, access_mining_station)
/datum/say_list/catslug/custom/cargoslug
speak = list("Disposals is not for slip and slide.", "What is that?", "Stamp those manifests!", "What are you doing?", "How did you get here?", "Can order pizza crate?", "WAOW!", "Where are all of our materials?", "Got glubbs?")
@@ -693,7 +693,7 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/capslug)
holder_type = /obj/item/weapon/holder/catslug/custom/capslug
say_list_type = /datum/say_list/catslug/custom/capslug
- mobcard_access = list(access_maint_tunnels) //The all_station_access part below adds onto this.
+ myid_access = list(access_maint_tunnels) //The all_station_access part below adds onto this.
/datum/say_list/catslug/custom/capslug
speak = list("How open big glass box with shiny inside?.", "What is that?", "Respect my authority!", "What are you doing?", "How did you get here?", "Fax for yellow-shirts!", "WAOW!", "Why is that console blinking and clicking?", "Do we need to call for ERT?", "Have been called comdom before, not sure why they thought I was a balloon.")
@@ -708,7 +708,7 @@
mob_radio.ks2type = /obj/item/device/encryptionkey/heads/captain //Might not be able to speak, but the catslug can listen.
mob_radio.keyslot2 = new /obj/item/device/encryptionkey/heads/captain(mob_radio)
mob_radio.recalculateChannels(1)
- mobcard.access |= get_all_station_access()
+ myid.access |= get_all_station_access()
//=============================================================================
//Admin-spawn only catslugs below - Expect overpowered things & silliness below
@@ -725,7 +725,7 @@
icon_dead = "deathslug_dead"
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug) //So they don't get the spaceslug's cataloguer entry
say_list_type = /datum/say_list/catslug //Similarly, so they don't get the spaceslug's speech lines.
- mobcard_access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
+ myid_access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
maxHealth = 100 //Tough noodles
health = 100
taser_kill = 0
@@ -750,7 +750,7 @@
. = ..()
mob_radio = new /obj/item/device/radio/headset/mob_headset(src)
mob_radio.frequency = DTH_FREQ //Can't tell if bugged, deathsquad freq in general seems broken
- mobcard.access |= get_all_station_access()
+ myid.access |= get_all_station_access()
//Syndicate catslug
/mob/living/simple_mob/vore/alienanimals/catslug/custom/spaceslug/syndislug
@@ -763,7 +763,7 @@
icon_dead = "syndislug_dead"
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug)
say_list_type = /datum/say_list/catslug
- mobcard_access = list(access_maint_tunnels, access_syndicate, access_external_airlocks)
+ myid_access = list(access_maint_tunnels, access_syndicate, access_external_airlocks)
faction = "syndicate"
maxHealth = 100 //Tough noodles
health = 100
@@ -795,7 +795,7 @@
mob_radio.ks2type = /obj/item/device/encryptionkey/syndicate
mob_radio.keyslot2 = new /obj/item/device/encryptionkey/syndicate(mob_radio)
mob_radio.recalculateChannels(1)
- mobcard.access |= get_all_station_access()
+ myid.access |= get_all_station_access()
//ERT catslug
/mob/living/simple_mob/vore/alienanimals/catslug/custom/spaceslug/responseslug
@@ -808,7 +808,7 @@
icon_dead = "responseslug_dead"
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug)
say_list_type = /datum/say_list/catslug
- mobcard_access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
+ myid_access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
maxHealth = 100 //Tough noodles
health = 100
taser_kill = 0
@@ -839,7 +839,7 @@
mob_radio.ks2type = /obj/item/device/encryptionkey/ert
mob_radio.keyslot2 = new /obj/item/device/encryptionkey/ert(mob_radio)
mob_radio.recalculateChannels(1)
- mobcard.access |= get_all_station_access()
+ myid.access |= get_all_station_access()
//Pilot Catslug
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 8b236f39262..9c04c087175 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -616,6 +616,12 @@
var/datum/language/keylang = GLOB.all_languages[client.prefs.language_custom_keys[key]]
if(keylang)
new_character.language_keys[key] = keylang
+ // VOREStation Add: Preferred Language Setting;
+ if(client.prefs.preferred_language) // Do we have a preferred language?
+ var/datum/language/def_lang = GLOB.all_languages[client.prefs.preferred_language]
+ if(def_lang)
+ new_character.default_language = def_lang
+ // VOREStation Add End
// And uncomment this, too.
//new_character.dna.UpdateSE()
diff --git a/code/modules/mob/new_player/sprite_accessories_extra_vr.dm b/code/modules/mob/new_player/sprite_accessories_extra_vr.dm
index ab2f41cef4e..80fe3e413f4 100644
--- a/code/modules/mob/new_player/sprite_accessories_extra_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_extra_vr.dm
@@ -901,4 +901,41 @@
icon = 'icons/mob/human_races/markings_vr.dmi'
icon_state = "unathi_blocky_head_eyes"
color_blend_mode = ICON_MULTIPLY
- body_parts = list(BP_HEAD)
\ No newline at end of file
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/manedwolf1
+ name = "Maned Wolf Primary Markings"
+ icon_state = "manedwolf1"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD,BP_TORSO,BP_R_ARM,BP_L_ARM,BP_R_HAND,BP_L_HAND,BP_R_LEG,BP_L_LEG,BP_R_FOOT,BP_L_FOOT)
+
+/datum/sprite_accessory/marking/vr/manedwolf2
+ name = "Maned Wolf Secondary Markings"
+ icon_state = "manedwolf2"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD,BP_TORSO,BP_GROIN)
+
+/datum/sprite_accessory/marking/vr/head_paint_front
+ name = "Head Paint Front"
+ icon_state = "paintfront"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/head_paint_back
+ name = "Head Paint"
+ icon_state = "paint"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/sect_drone
+ name = "Sect Drone Bodytype"
+ icon_state = "sectdrone"
+ color_blend_mode = ICON_MULTIPLY
+ hide_body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/sect_drone_eyes
+ name = "Sect Drone Eyes"
+ icon_state = "sectdrone_eyes"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
index 33dab914477..44aa7538a0a 100644
--- a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
@@ -12,6 +12,7 @@
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
var/list/lower_layer_dirs = list(SOUTH)
+ var/icon_loaf = null
/datum/sprite_accessory/tail/New()
. = ..()
@@ -1328,6 +1329,14 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
+/datum/sprite_accessory/tail/sectdrone_tail
+ name = "Sect Drone Tail (To use with bodytype-marking)"
+ icon = 'icons/mob/vore/tails_vr.dmi'
+ icon_state = "sectdrone_tail"
+ extra_overlay = "sectdrone_tail_mark"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
//LONG TAILS ARE NOT TAUR BUTTS >:O
/datum/sprite_accessory/tail/longtail
name = "You should not see this..."
diff --git a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm
index 6f46487b4dc..2a290f488dd 100644
--- a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm
@@ -56,11 +56,15 @@
under_sprites = 'icons/mob/taursuits_wolf_vr.dmi'
suit_sprites = 'icons/mob/taursuits_wolf_vr.dmi'
icon_sprite_tag = "wolf"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 4
/datum/sprite_accessory/tail/taur/wolf/fatwolf
name = "Fat Wolf (Taur)"
icon_state = "fatwolf_s"
//icon_sprite_tag = "wolf" //This could be modified later.
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/wolf/wolf_wag
name = "Wolf (Taur, Fat vwag)"
@@ -76,19 +80,22 @@
/datum/sprite_accessory/tail/taur/wolf/fatwolf_2c
name = "Fat Wolf 3-color (Taur)"
+ icon = 'icons/mob/vore/taurs_ch.dmi' //CHOMPEdit
icon_state = "fatwolf_s"
extra_overlay = "fatwolf_markings"
- extra_overlay2 = "wolf_markings_2"
+ extra_overlay2 = "fatwolf_markings_2" //CHOMPEdit
//icon_sprite_tag = "fatwolf2c"
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/wolf/wolf_2c_wag
name = "Wolf 3-color (Taur, Fat vwag)"
+ icon = 'icons/mob/vore/taurs_ch.dmi' //CHOMPEdit
icon_state = "wolf_s"
extra_overlay = "wolf_markings"
extra_overlay2 = "wolf_markings_2"
ani_state = "fatwolf_s"
extra_overlay_w = "fatwolf_markings"
- extra_overlay2_w = "wolf_markings_2"
+ extra_overlay2_w = "fatwolf_markings_2" //CHOMPEdit
/datum/sprite_accessory/tail/taur/wolf/synthwolf
name = "SynthWolf dual-color (Taur)"
@@ -96,12 +103,14 @@
extra_overlay = "synthwolf_markings"
extra_overlay2 = "synthwolf_glow"
//icon_sprite_tag = "synthwolf"
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/wolf/fatsynthwolf
name = "Fat SynthWolf dual-color (Taur)"
icon_state = "fatsynthwolf_s"
extra_overlay = "fatsynthwolf_markings"
extra_overlay2 = "fatsynthwolf_glow"
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/wolf/fatsynthwolf_wag
name = "SynthWolf dual-color (Taur, Fat vwag)"
@@ -118,6 +127,9 @@
extra_overlay = "skunk_markings"
extra_overlay2 = "skunk_markings_2"
icon_sprite_tag = "skunk"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/naga
name = "Naga (Taur)"
@@ -192,6 +204,9 @@
under_sprites = 'icons/mob/taursuits_horse_vr.dmi'
suit_sprites = 'icons/mob/taursuits_horse_vr.dmi'
icon_sprite_tag = "horse"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 4
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
@@ -214,12 +229,18 @@
extra_overlay = "synthhorse_markings"
extra_overlay2 = "synthhorse_glow"
//icon_sprite_tag = "synthhorse"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/cow
name = "Cow (Taur)"
icon_state = "cow_s"
suit_sprites = 'icons/mob/taursuits_cow_vr.dmi'
icon_sprite_tag = "cow"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 3
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
@@ -242,6 +263,9 @@
extra_overlay = "deer_markings"
suit_sprites = 'icons/mob/taursuits_deer_vr.dmi'
icon_sprite_tag = "deer"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 6
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
@@ -261,12 +285,19 @@
/datum/sprite_accessory/tail/taur/lizard
name = "Lizard (Taur)"
icon_state = "lizard_s"
- suit_sprites = 'icons/mob/taursuits_lizard_vr.dmi'
+// suit_sprites = 'icons/mob/taursuits_lizard_vr.dmi' ///Chomp edit
+ suit_sprites = 'icons/mob/taursuits_lizard_ch.dmi'
icon_sprite_tag = "lizard"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 5
/datum/sprite_accessory/tail/taur/lizard/fatlizard
name = "Fat Lizard (Taur)"
icon_state = "fatlizard_s"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/lizard/lizard_wag
name = "Lizard (Taur, Fat vwag)"
@@ -278,11 +309,17 @@
icon_state = "lizard_s"
extra_overlay = "lizard_markings"
//icon_sprite_tag = "lizard2c"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 5
/datum/sprite_accessory/tail/taur/lizard/fatlizard_2c
name = "Fat Lizard (Taur, dual-color)"
icon_state = "fatlizard_s"
extra_overlay = "fatlizard_markings"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/lizard/lizard_2c_wag
name = "Fat Lizard (Taur, dual-color, Fat vwag)"
@@ -297,12 +334,18 @@
extra_overlay = "synthlizard_markings"
extra_overlay2 = "synthlizard_glow"
//icon_sprite_tag = "synthlizard"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/lizard/fatsynthlizard
name = "Fat SynthLizard dual-color (Taur)"
icon_state = "fatsynthlizard_s"
extra_overlay = "fatsynthlizard_markings"
extra_overlay2 = "fatsynthlizard_glow"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/lizard/synthlizard_wag
name = "SynthLizard dual-color (Taur, Fat vwag)"
@@ -366,16 +409,25 @@
icon_state = "feline_s"
suit_sprites = 'icons/mob/taursuits_feline_vr.dmi'
icon_sprite_tag = "feline"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 5
/datum/sprite_accessory/tail/taur/fatfeline
name = "Fat Feline (Taur)"
icon_state = "fatfeline_s"
//icon_sprite_tag = "fatfeline"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/fatfeline_wag
name = "Fat Feline (Taur, Fat vwag)"
icon_state = "fatfeline_s"
ani_state = "fatfeline_w"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/feline/feline_2c
name = "Feline 3-color (Taur)"
@@ -383,22 +435,30 @@
extra_overlay = "feline_markings"
extra_overlay2 = "feline_markings_2"
//icon_sprite_tag = "feline2c"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
/datum/sprite_accessory/tail/taur/feline/fatfeline_2c
name = "Fat Feline 3-color (Taur)"
+ icon = 'icons/mob/vore/taurs_ch.dmi' //CHOMPEdit
icon_state = "fatfeline_s"
extra_overlay = "fatfeline_markings"
- extra_overlay2 = "feline_markings_2"
+ extra_overlay2 = "fatfeline_markings_2" //CHOMPEdit
//icon_sprite_tag = "fatfeline2c"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/feline/feline_2c_wag
name = "Feline 3-color (Taur, Fat vwag)"
+ icon = 'icons/mob/vore/taurs_ch.dmi' //CHOMPEdit
icon_state = "feline_s"
extra_overlay = "feline_markings"
extra_overlay2 = "feline_markings_2"
ani_state = "fatfeline_s"
extra_overlay_w = "fatfeline_markings"
- extra_overlay2_w = "feline_markings_2"
+ extra_overlay2_w = "fatfeline_markings_2" //CHOMPEdit
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/feline/synthfeline
name = "SynthFeline dual-color (Taur)"
@@ -406,12 +466,18 @@
extra_overlay = "synthfeline_markings"
extra_overlay2 = "synthfeline_glow"
//icon_sprite_tag = "synthfeline"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/feline/fatsynthfeline
name = "Fat SynthFeline dual-color (Taur)"
icon_state = "fatsynthfeline_s"
extra_overlay = "fatsynthfeline_markings"
extra_overlay2 = "fatsynthfeline_glow"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 3
/datum/sprite_accessory/tail/taur/feline/synthfeline_wag
name = "SynthFeline dual-color (Taur, Fat vwag)"
@@ -491,16 +557,20 @@
name = "Drake (Taur)"
icon_state = "drake_s"
extra_overlay = "drake_markings"
- suit_sprites = 'icons/mob/taursuits_drake_vr.dmi'
+/// suit_sprites = 'icons/mob/taursuits_drake_vr.dmi' ///Chomp edit
+ suit_sprites = 'icons/mob/taursuits_drake_ch.dmi'
icon_sprite_tag = "drake"
- can_loaf = TRUE // VOREStation Edit: Taur Loafing
- loaf_offset = 6 // VOREStation Edit: Taur Loafing
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 6
/datum/sprite_accessory/tail/taur/drake/fat
name = "Fat Drake (Taur)"
icon_state = "fatdrake_s"
extra_overlay = "fatdrake_markings"
- can_loaf = FALSE
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 6
/datum/sprite_accessory/tail/taur/drake/drake_vwag
name = "Drake (Taur, Fat vwag)"
@@ -508,8 +578,7 @@
extra_overlay = "drake_markings"
ani_state = "fatdrake_s"
extra_overlay_w = "fatdrake_markings"
- can_loaf = FALSE
-
+ can_loaf = TRUE
/datum/sprite_accessory/tail/taur/otie
name = "Otie (Taur)"
@@ -518,6 +587,9 @@
extra_overlay2 = "otie_markings_2"
suit_sprites = 'icons/mob/taursuits_otie_vr.dmi'
icon_sprite_tag = "otie"
+ can_loaf = TRUE
+ icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi'
+ loaf_offset = 5
/datum/sprite_accessory/tail/taur/alraune/alraune_2c
name = "Alraune (dual color)"
@@ -624,12 +696,14 @@
name = "Feline (wickedtemp) (Taur)"
icon_state = "tempest_s"
ckeys_allowed = list("wickedtemp")
+ can_loaf = FALSE
//silencedmp5a5: Serdykov Antoz
/datum/sprite_accessory/tail/taur/wolf/serdy
name = "CyberSerdy (silencedmp5a5) (Taur)"
icon_state = "serdy_s"
ckeys_allowed = list("silencedmp5a5")
+ can_loaf = FALSE
//liquidfirefly: Ariana Scol
/datum/sprite_accessory/tail/taur/centipede
@@ -700,7 +774,7 @@
suit_sprites = 'icons/mob/taursuits_noodle_vr.dmi'
clip_mask_state = "taur_clip_mask_noodle"
icon_sprite_tag = "noodle"
-
+/* CHOMPEdit - removed as a sprite accessory of the same name already exists for us, and having this here stops it from registering as a sprite accessory.
/datum/sprite_accessory/tail/taur/sect_drone
name = "Sect Drone (Taur)"
icon_state = "sect_drone"
@@ -721,11 +795,12 @@
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!"
-
+*/
/datum/sprite_accessory/tail/taur/sect_drone/fat
name = "Fat Sect Drone (Taur)"
icon_state = "fat_sect_drone"
extra_overlay = "fat_sect_drone_markings"
+ icon_sprite_tag = "sect_drone" //CHOMPEdit addition
/datum/sprite_accessory/tail/taur/sect_drone/drone_wag
name = "Sect Drone (Taur, Fat vwag)"
@@ -733,6 +808,7 @@
extra_overlay = "sect_drone_markings"
ani_state = "fat_sect_drone"
extra_overlay_w = "fat_sect_drone_markings"
+ icon_sprite_tag = "sect_drone" //CHOMPEdit addition
/datum/sprite_accessory/tail/taur/giantspider_colorable//these are honestly better fit for vass icontypes whoops
name = "Giant Spider dual-color (Taur)"
diff --git a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
index 35753bf2edd..aba84d495bd 100644
--- a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
@@ -311,3 +311,11 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "snail_shell_markings"
+
+/datum/sprite_accessory/wing/sectdrone_wing //We should some day make a variable to make some wings not be able to fly
+ name = "Sect drone wings (To use with bodytype marking)"
+ desc = ""
+ icon = 'icons/mob/vore/wings_vr.dmi'
+ icon_state = "sectdrone_wing"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
diff --git a/code/modules/overmap/sectors.dm b/code/modules/overmap/sectors.dm
index 4fb71ff02f0..d3da39a343e 100644
--- a/code/modules/overmap/sectors.dm
+++ b/code/modules/overmap/sectors.dm
@@ -16,6 +16,11 @@
var/real_desc
/// Icon_state prior to being scanned if !known
var/unknown_state = "field"
+ //Set to null. Exists only for admins/GMs when spawning overmap objects.
+ //We need these as normal functionality relies on initial() which do not work at all with GM shenanigans.
+ var/real_icon //Holds the .dmi file for icon_state to pick from. Leave null if using standard overmap.dmi
+ var/real_icon_state //actual icon name to be used. Find examples inside 'icons/obj/overmap.dmi'
+ var/real_color
var/list/map_z = list()
var/list/extra_z_levels //if you need to manually insist that these z-levels are part of this sector, for things like edge-of-map step trigger transitions rather than multi-z complexes
@@ -84,6 +89,19 @@
//at the moment only used for the OM location renamer. Initializing here in case we want shuttles incl as well in future. Also proc definition convenience.
visitable_overmap_object_instances |= src
+//To be used by GMs and calling through var edits for the overmap object
+//It causes the overmap object to "reinitialize" its real_appearance for known = FALSE objects
+//Includes an argument that allows GMs/Admins to set a previously known sector to unknown. Set to any value except 0/False/Null to activate
+/obj/effect/overmap/visitable/proc/gmtools_update_omobject_vars(var/setToHidden)
+ real_appearance = image(real_icon, src, real_icon_state)
+ real_appearance.override = TRUE
+ if(setToHidden && known) //
+ name = unknown_name
+ icon = 'icons/obj/overmap.dmi'
+ icon_state = unknown_state
+ color = null
+ desc = "Scan this to find out more information."
+ known = FALSE
// You generally shouldn't destroy these.
@@ -141,8 +159,16 @@
name = real_name
else
name = initial(name)
- icon_state = initial(icon_state)
- color = initial(color)
+ if(real_icon_state) //Only true when GMs/Admins play with the object
+ if(real_icon) //Only true if GMs/Admins want a non-standard icon from outside 'icons/obj/overmap.dmi'
+ icon = real_icon
+ icon_state = real_icon_state
+ else
+ icon_state = initial(icon_state)
+ if(real_color)
+ color = real_color
+ else
+ color = initial(color)
if(real_desc)
desc = real_desc
else
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index 58f8ee0275b..55a7d4d2b90 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -9,7 +9,10 @@
density = FALSE
unacidable = TRUE
use_power = USE_POWER_OFF
- light_range = 4
+ light_on = TRUE
+ light_range = 2
+ light_power = 0.5
+ light_color = "#5BA8FF"
var/obj/machinery/field_generator/FG1 = null
var/obj/machinery/field_generator/FG2 = null
var/list/shockdirs
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index ec29e08efa0..8d892b2756a 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -36,6 +36,10 @@ field_generator power level display
var/gen_power_draw = 5500 //power needed per generator
var/field_power_draw = 2000 //power needed per field object
+ var/light_range_on = 3
+ var/light_power_on = 1
+ light_color = "#5BA8FF"
+
/obj/machinery/field_generator/update_icon()
cut_overlays()
@@ -177,6 +181,7 @@ field_generator power level display
active = 0
spawn(1)
src.cleanup()
+ set_light(0)
update_icon()
/obj/machinery/field_generator/proc/turn_on()
@@ -189,6 +194,7 @@ field_generator power level display
update_icon()
if(warming_up >= 3)
start_fields()
+ set_light(light_range_on, light_power_on)
update_icon()
diff --git a/code/modules/resleeving/autoresleever.dm b/code/modules/resleeving/autoresleever.dm
index f851ccbd1ad..33b0635b35d 100644
--- a/code/modules/resleeving/autoresleever.dm
+++ b/code/modules/resleeving/autoresleever.dm
@@ -172,6 +172,12 @@
var/datum/language/keylang = GLOB.all_languages[ghost_client.prefs.language_custom_keys[key]]
if(keylang)
new_character.language_keys[key] = keylang
+ // VOREStation Add: Preferred Language Setting;
+ if(ghost_client.prefs.preferred_language) // Do we have a preferred language?
+ var/datum/language/def_lang = GLOB.all_languages[ghost_client.prefs.preferred_language]
+ if(def_lang)
+ new_character.default_language = def_lang
+ // VOREStation Add End
//If desired, apply equipment.
if(equip_body)
diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm
index effd283c135..0acc4626b18 100644
--- a/code/modules/ventcrawl/ventcrawl.dm
+++ b/code/modules/ventcrawl/ventcrawl.dm
@@ -69,7 +69,7 @@ var/list/ventcrawl_machinery = list(
return 1
if(isanimal(src))
var/mob/living/simple_mob/S = src
- if(carried_item == S.mobcard) //VOREStation Edit
+ if(carried_item == S.myid) //VOREStation Edit
return 1 //VOREStation Edit
//Try to find it in our allowed list (istype includes subtypes)
var/listed = FALSE
diff --git a/code/modules/vore/eating/inbelly_spawn.dm b/code/modules/vore/eating/inbelly_spawn.dm
index 207f3ca4e01..50c2c3168b0 100644
--- a/code/modules/vore/eating/inbelly_spawn.dm
+++ b/code/modules/vore/eating/inbelly_spawn.dm
@@ -166,6 +166,12 @@ Please do not abuse this ability.
var/datum/language/keylang = GLOB.all_languages[prey.prefs.language_custom_keys[key]]
if(keylang)
new_character.language_keys[key] = keylang
+ // VOREStation Add: Preferred Language Setting;
+ if(prey.prefs.preferred_language) // Do we have a preferred language?
+ var/datum/language/def_lang = GLOB.all_languages[prey.prefs.preferred_language]
+ if(def_lang)
+ new_character.default_language = def_lang
+ // VOREStation Add End
new_character.regenerate_icons()
@@ -179,4 +185,4 @@ Please do not abuse this ability.
log_admin("[prey] (as [new_character.real_name] has spawned inside one of [pred]'s bellies.") // Log it. Avoid abuse.
message_admins("[prey] (as [new_character.real_name] has spawned inside one of [pred]'s bellies.", 1)
- return new_character // incase its ever needed
\ No newline at end of file
+ return new_character // incase its ever needed
diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm
index ee91f280cb4..5e6c1635d0a 100644
--- a/code/modules/vore/fluffstuff/custom_items_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_items_vr.dm
@@ -1570,3 +1570,12 @@
/obj/item/weapon/dice/loaded/ceph/New()
icon_state = "ceph_d6[rand(1,sides)]"
+
+
+//abc123: Mira Nesyne
+/obj/item/clothing/accessory/medal/silver/fluff/abc314
+ name = "Health Service Achievement medal"
+ desc = "A small silver medal with the inscription \"For going above and beyond in the field.\" on it, along with the name Mira Nesyne."
+
+ icon = 'icons/inventory/accessory/item.dmi'
+ icon_state = "silver"
diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt
index df9a05ea94a..3f2c5964db5 100644
--- a/config/alienwhitelist.txt
+++ b/config/alienwhitelist.txt
@@ -43,8 +43,10 @@ exgame - Vox
falloutdog3 - Black-Eyed Shadekin
flaktual - Vox
flurriee - Protean
+foxglovepurpur - Diona
funnyman2003 - Xenochimera
fuzlet - Protean
+grallstonefist - Black-Eyed Shadekin
greennyy - Protean
h0lysquirr3l - Protean
hawkerthegreat - Vox
diff --git a/icons/_nanomaps/tether_nanomap_z1.png b/icons/_nanomaps/tether_nanomap_z1.png
index cc281d14321..f6188b78814 100644
Binary files a/icons/_nanomaps/tether_nanomap_z1.png and b/icons/_nanomaps/tether_nanomap_z1.png differ
diff --git a/icons/_nanomaps/tether_nanomap_z2.png b/icons/_nanomaps/tether_nanomap_z2.png
index 5f1eacdb197..53492f77eec 100644
Binary files a/icons/_nanomaps/tether_nanomap_z2.png and b/icons/_nanomaps/tether_nanomap_z2.png differ
diff --git a/icons/_nanomaps/tether_nanomap_z3.png b/icons/_nanomaps/tether_nanomap_z3.png
index 09b99241f47..45438a40d92 100644
Binary files a/icons/_nanomaps/tether_nanomap_z3.png and b/icons/_nanomaps/tether_nanomap_z3.png differ
diff --git a/icons/_nanomaps/tether_nanomap_z4.png b/icons/_nanomaps/tether_nanomap_z4.png
index c2623219ee4..510d22b3d61 100644
Binary files a/icons/_nanomaps/tether_nanomap_z4.png and b/icons/_nanomaps/tether_nanomap_z4.png differ
diff --git a/icons/inventory/accessory/mob.dmi b/icons/inventory/accessory/mob.dmi
index e8a38633273..8858b2f5805 100644
Binary files a/icons/inventory/accessory/mob.dmi and b/icons/inventory/accessory/mob.dmi differ
diff --git a/icons/inventory/back/mob.dmi b/icons/inventory/back/mob.dmi
index fac62128ecf..2b311c0a247 100644
Binary files a/icons/inventory/back/mob.dmi and b/icons/inventory/back/mob.dmi differ
diff --git a/icons/inventory/face/item_vr.dmi b/icons/inventory/face/item_vr.dmi
index e8fe7376554..cfa03813773 100644
Binary files a/icons/inventory/face/item_vr.dmi and b/icons/inventory/face/item_vr.dmi differ
diff --git a/icons/inventory/face/mob_vr.dmi b/icons/inventory/face/mob_vr.dmi
index 5181307aa3b..6270461d76a 100644
Binary files a/icons/inventory/face/mob_vr.dmi and b/icons/inventory/face/mob_vr.dmi differ
diff --git a/icons/inventory/suit/mob_vox.dmi b/icons/inventory/suit/mob_vox.dmi
index afb8a2a2006..b2e41a94221 100644
Binary files a/icons/inventory/suit/mob_vox.dmi and b/icons/inventory/suit/mob_vox.dmi differ
diff --git a/icons/mob/human_races/markings_vr.dmi b/icons/mob/human_races/markings_vr.dmi
index 29442bf908f..07c1f897b27 100644
Binary files a/icons/mob/human_races/markings_vr.dmi and b/icons/mob/human_races/markings_vr.dmi differ
diff --git a/icons/mob/items/lefthand_melee.dmi b/icons/mob/items/lefthand_melee.dmi
index e965d64b438..da3401ccedf 100644
Binary files a/icons/mob/items/lefthand_melee.dmi and b/icons/mob/items/lefthand_melee.dmi differ
diff --git a/icons/mob/items/righthand_melee.dmi b/icons/mob/items/righthand_melee.dmi
index 3fee6cb6bd7..fc8851a610a 100644
Binary files a/icons/mob/items/righthand_melee.dmi and b/icons/mob/items/righthand_melee.dmi differ
diff --git a/icons/mob/pai_vr.dmi b/icons/mob/pai_vr.dmi
index 82f5faffe85..f6c153ff451 100644
Binary files a/icons/mob/pai_vr.dmi and b/icons/mob/pai_vr.dmi differ
diff --git a/icons/mob/taursuits_drake_ch.dmi b/icons/mob/taursuits_drake_ch.dmi
new file mode 100644
index 00000000000..e4271405714
Binary files /dev/null and b/icons/mob/taursuits_drake_ch.dmi differ
diff --git a/icons/mob/taursuits_lizard_ch.dmi b/icons/mob/taursuits_lizard_ch.dmi
new file mode 100644
index 00000000000..f4385ef1130
Binary files /dev/null and b/icons/mob/taursuits_lizard_ch.dmi differ
diff --git a/icons/mob/taursuits_naga_vr.dmi b/icons/mob/taursuits_naga_vr.dmi
index bfec658879f..1fca915bff7 100644
Binary files a/icons/mob/taursuits_naga_vr.dmi and b/icons/mob/taursuits_naga_vr.dmi differ
diff --git a/icons/mob/taursuits_wolf_vr.dmi b/icons/mob/taursuits_wolf_vr.dmi
index 140e6de4261..68495a9e4bc 100644
Binary files a/icons/mob/taursuits_wolf_vr.dmi and b/icons/mob/taursuits_wolf_vr.dmi differ
diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi
index c9b29156513..d55293ae14f 100644
Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ
diff --git a/icons/mob/vore/taurs_ch.dmi b/icons/mob/vore/taurs_ch.dmi
new file mode 100644
index 00000000000..9320c96d40f
Binary files /dev/null and b/icons/mob/vore/taurs_ch.dmi differ
diff --git a/icons/mob/vore/taurs_ch_loaf.dmi b/icons/mob/vore/taurs_ch_loaf.dmi
new file mode 100644
index 00000000000..2b4c0acbdc5
Binary files /dev/null and b/icons/mob/vore/taurs_ch_loaf.dmi differ
diff --git a/icons/mob/vore/taurs_vr_loaf.dmi b/icons/mob/vore/taurs_vr_loaf.dmi
new file mode 100644
index 00000000000..835225049db
Binary files /dev/null and b/icons/mob/vore/taurs_vr_loaf.dmi differ
diff --git a/icons/mob/vore/wings_vr.dmi b/icons/mob/vore/wings_vr.dmi
index 5edced1ac96..cdcac1d4cde 100644
Binary files a/icons/mob/vore/wings_vr.dmi and b/icons/mob/vore/wings_vr.dmi differ
diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi
index cb504aa5512..783441c51c2 100644
Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ
diff --git a/maps/groundbase/gb-z2.dmm b/maps/groundbase/gb-z2.dmm
index f4d74d72a3a..eb520325ede 100644
--- a/maps/groundbase/gb-z2.dmm
+++ b/maps/groundbase/gb-z2.dmm
@@ -335,17 +335,6 @@
"aQ" = (
/obj/machinery/door/firedoor,
/obj/structure/window/reinforced/full,
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/structure/grille,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/blast/regular{
@@ -356,6 +345,16 @@
name = "Pen 5 Blast Doors";
opacity = 0
},
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
/turf/simulated/floor/reinforced,
/area/rnd/xenobiology)
"aR" = (
@@ -463,11 +462,10 @@
/obj/structure/grille,
/obj/structure/window/reinforced/full,
/obj/structure/window/reinforced{
- dir = 4
+ dir = 8
},
/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
+ dir = 4
},
/obj/structure/window/reinforced,
/turf/simulated/floor/reinforced,
@@ -532,11 +530,10 @@
/obj/structure/grille,
/obj/structure/window/reinforced/full,
/obj/structure/window/reinforced{
- dir = 4
+ dir = 8
},
/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
+ dir = 4
},
/obj/structure/window/reinforced,
/turf/simulated/floor/reinforced,
@@ -935,11 +932,9 @@
dir = 8;
icon_state = "pipe-c"
},
-/obj/structure/table/standard,
/obj/structure/cable/yellow{
icon_state = "1-2"
},
-/obj/item/device/retail_scanner/cargo,
/turf/simulated/floor/tiled,
/area/groundbase/cargo/office)
"cs" = (
@@ -1789,7 +1784,18 @@
/turf/simulated/floor/wood,
/area/groundbase/dorms/room1)
"eV" = (
-/obj/machinery/light,
+/obj/machinery/computer/supplycomp/control{
+ dir = 4
+ },
+/obj/machinery/requests_console{
+ department = "Cargo Bay";
+ departmentType = 2;
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/machinery/light{
+ dir = 8
+ },
/turf/simulated/floor/wood,
/area/groundbase/cargo/qm)
"eX" = (
@@ -2208,11 +2214,12 @@
/turf/simulated/floor/tiled,
/area/groundbase/science/xenohall)
"gk" = (
-/obj/structure/table/standard,
-/obj/item/weapon/clipboard,
-/obj/item/weapon/stamp/qm,
-/turf/simulated/floor/wood,
-/area/groundbase/cargo/qm)
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 8
+ },
+/obj/effect/landmark/start/cargo,
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/storage)
"gm" = (
/obj/structure/grille,
/obj/structure/window/reinforced/full,
@@ -2467,12 +2474,13 @@
/turf/simulated/floor/wood,
/area/groundbase/dorms/room7)
"gX" = (
-/obj/structure/grille,
-/obj/machinery/door/firedoor,
-/obj/structure/window/reinforced/polarized/full{
- id = "qm_office"
+/obj/structure/table/standard,
+/obj/item/weapon/clipboard,
+/obj/item/weapon/stamp/qm,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
},
-/turf/simulated/floor,
+/turf/simulated/floor/wood,
/area/groundbase/cargo/qm)
"gY" = (
/obj/structure/bed/chair/sofa/corner/black,
@@ -2518,12 +2526,6 @@
},
/turf/simulated/floor/tiled/dark,
/area/groundbase/science/hall)
-"he" = (
-/obj/structure/bed/chair/office/dark{
- dir = 1
- },
-/turf/simulated/floor/wood,
-/area/groundbase/cargo/qm)
"hh" = (
/obj/structure/table/steel,
/obj/machinery/recharger,
@@ -2560,11 +2562,10 @@
/obj/structure/grille,
/obj/structure/window/reinforced/full,
/obj/structure/window/reinforced{
- dir = 4
+ dir = 8
},
/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
+ dir = 4
},
/obj/structure/window/reinforced{
dir = 1
@@ -2823,17 +2824,6 @@
"hX" = (
/obj/machinery/door/firedoor,
/obj/structure/window/reinforced/full,
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/structure/grille,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/blast/regular{
@@ -2844,6 +2834,16 @@
name = "Pen 2 Blast Doors";
opacity = 0
},
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced,
/turf/simulated/floor/reinforced,
/area/rnd/xenobiology)
"hY" = (
@@ -3194,6 +3194,9 @@
pixel_x = -30;
pixel_y = 16
},
+/obj/machinery/light{
+ dir = 8
+ },
/turf/simulated/floor/tiled,
/area/groundbase/cargo/office)
"iW" = (
@@ -3729,6 +3732,11 @@
},
/turf/simulated/floor/tiled,
/area/groundbase/science/server)
+"kv" = (
+/obj/structure/closet/secure_closet/quartermaster,
+/obj/item/weapon/storage/backpack/dufflebag,
+/turf/simulated/floor/wood,
+/area/groundbase/cargo/qm)
"ky" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -3747,11 +3755,10 @@
/obj/structure/grille,
/obj/structure/window/reinforced/full,
/obj/structure/window/reinforced{
- dir = 4
+ dir = 8
},
/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
+ dir = 4
},
/obj/structure/window/reinforced,
/turf/simulated/floor/reinforced,
@@ -4076,6 +4083,19 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/wood,
/area/groundbase/dorms/room2)
+"ly" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/obj/machinery/power/apc{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/wood,
+/area/groundbase/cargo/qm)
"lz" = (
/obj/effect/floor_decal/steeldecal/steel_decals10{
dir = 8
@@ -4097,6 +4117,10 @@
},
/turf/simulated/floor/tiled/dark,
/area/groundbase/civilian/chapel)
+"lB" = (
+/obj/effect/floor_decal/industrial/outline/yellow,
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/office)
"lC" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -4238,14 +4262,15 @@
/turf/simulated/wall,
/area/groundbase/medical/triage)
"lU" = (
-/obj/structure/table/standard,
-/obj/item/weapon/folder/yellow,
-/obj/item/weapon/pen/red{
- pixel_x = 2;
- pixel_y = 6
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
},
-/turf/simulated/floor/wood,
-/area/groundbase/cargo/qm)
+/obj/machinery/alarm{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/storage)
"lV" = (
/turf/simulated/wall/r_wall,
/area/groundbase/science/xenobot)
@@ -4330,14 +4355,11 @@
/turf/simulated/floor/tiled/dark,
/area/groundbase/command/bridge)
"mj" = (
-/obj/structure/grille,
-/obj/structure/window/reinforced/full,
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment{
- dir = 4
+/obj/machinery/light_switch{
+ pixel_y = 30
},
-/turf/simulated/floor,
-/area/groundbase/cargo/office)
+/turf/simulated/floor/wood,
+/area/groundbase/cargo/qm)
"mk" = (
/obj/structure/cable/yellow{
icon_state = "1-4"
@@ -4769,8 +4791,7 @@
/area/groundbase/dorms/room8)
"nD" = (
/obj/machinery/disposal/wall{
- dir = 8;
- name = "auto-resleeving equipment deposit"
+ dir = 8
},
/obj/structure/disposalpipe/trunk{
dir = 8
@@ -5015,20 +5036,11 @@
/turf/simulated/floor/tiled,
/area/groundbase/science/xenobot)
"ot" = (
-/obj/structure/table/standard,
-/obj/item/weapon/paper_bin{
- pixel_x = -3;
- pixel_y = 7
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
},
-/obj/item/device/megaphone,
-/obj/machinery/requests_console{
- department = "Cargo Bay";
- departmentType = 2;
- dir = 8;
- pixel_x = 28
- },
-/turf/simulated/floor/wood,
-/area/groundbase/cargo/qm)
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/storage)
"ov" = (
/obj/structure/table/standard,
/obj/machinery/cell_charger,
@@ -5141,11 +5153,10 @@
/obj/structure/grille,
/obj/structure/window/reinforced/full,
/obj/structure/window/reinforced{
- dir = 4
+ dir = 8
},
/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
+ dir = 4
},
/obj/structure/window/reinforced{
dir = 1
@@ -5164,6 +5175,18 @@
"oO" = (
/turf/simulated/floor/wood,
/area/groundbase/command/captain)
+"oR" = (
+/obj/structure/table/standard,
+/obj/item/weapon/folder/yellow,
+/obj/item/weapon/pen/red{
+ pixel_x = 2;
+ pixel_y = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/turf/simulated/floor/wood,
+/area/groundbase/cargo/qm)
"oS" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -5332,17 +5355,6 @@
"pq" = (
/obj/machinery/door/firedoor,
/obj/structure/window/reinforced/full,
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/structure/grille,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/blast/regular{
@@ -5353,6 +5365,16 @@
name = "Pen 7 Blast Doors";
opacity = 0
},
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
/turf/simulated/floor/reinforced,
/area/rnd/xenobiology)
"pr" = (
@@ -5882,9 +5904,17 @@
/turf/simulated/floor/outdoors/newdirt,
/area/groundbase/command/hop)
"qN" = (
-/obj/structure/table/standard,
-/turf/simulated/floor/tiled,
-/area/groundbase/cargo/office)
+/obj/machinery/status_display/supply_display{
+ pixel_y = 32
+ },
+/obj/machinery/button/windowtint{
+ id = "qm_office";
+ layer = 3.3;
+ pixel_x = -24;
+ pixel_y = 27
+ },
+/turf/simulated/floor/wood,
+/area/groundbase/cargo/qm)
"qP" = (
/obj/machinery/alarm{
dir = 4
@@ -6624,12 +6654,10 @@
/turf/simulated/floor/outdoors/sidewalk/slab,
/area/groundbase/level2/eastspur)
"sS" = (
-/obj/structure/grille,
-/obj/structure/window/reinforced/polarized/full{
- id = "qm_office"
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
},
-/obj/machinery/door/firedoor,
-/turf/simulated/floor,
+/turf/simulated/floor/wood,
/area/groundbase/cargo/qm)
"sT" = (
/obj/machinery/seed_storage/xenobotany,
@@ -6816,11 +6844,10 @@
/obj/structure/grille,
/obj/structure/window/reinforced/full,
/obj/structure/window/reinforced{
- dir = 4
+ dir = 8
},
/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
+ dir = 4
},
/obj/structure/window/reinforced{
dir = 1
@@ -6845,6 +6872,11 @@
/obj/machinery/door/firedoor,
/turf/simulated/floor,
/area/groundbase/civilian/kitchen)
+"tE" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/effect/floor_decal/industrial/outline/yellow,
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/office)
"tF" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -7163,6 +7195,10 @@
/obj/structure/bookcase,
/turf/simulated/floor/wood,
/area/groundbase/civilian/library)
+"uA" = (
+/obj/structure/closet/secure_closet/cargotech,
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/storage)
"uC" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -7297,10 +7333,10 @@
dir = 8
},
/obj/structure/table/standard,
-/obj/item/weapon/packageWrap,
-/obj/item/weapon/packageWrap,
-/obj/item/weapon/packageWrap,
-/obj/item/weapon/packageWrap,
+/obj/machinery/photocopier/faxmachine{
+ department = "Cargo";
+ pixel_y = 6
+ },
/turf/simulated/floor/tiled,
/area/groundbase/cargo/office)
"uT" = (
@@ -7346,6 +7382,14 @@
/obj/structure/sign/department/chem,
/turf/simulated/wall,
/area/groundbase/medical/Chemistry)
+"ve" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/office)
"vh" = (
/obj/machinery/atmospherics/unary/vent_pump/on,
/turf/simulated/floor/tiled,
@@ -7486,6 +7530,16 @@
},
/turf/simulated/floor/tiled,
/area/groundbase/science/hall)
+"vE" = (
+/obj/structure/table/standard,
+/obj/machinery/photocopier/faxmachine{
+ department = "Quartermaster-Office"
+ },
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/simulated/floor/wood,
+/area/groundbase/cargo/qm)
"vF" = (
/obj/structure/table/standard,
/obj/item/weapon/storage/toolbox/mechanical{
@@ -7644,16 +7698,14 @@
/turf/simulated/floor/tiled,
/area/groundbase/civilian/hydroponics)
"vW" = (
-/obj/structure/bed/chair/office/dark,
-/obj/effect/landmark/start/qm,
-/obj/machinery/button/windowtint{
- id = "qm_office";
- layer = 3.3;
- pixel_x = 16;
- pixel_y = -27
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
},
-/turf/simulated/floor/wood,
-/area/groundbase/cargo/qm)
+/obj/machinery/firealarm{
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/storage)
"vY" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -7677,9 +7729,6 @@
dir = 1
},
/obj/machinery/disposal,
-/obj/structure/window/reinforced{
- dir = 1
- },
/obj/structure/window/reinforced{
dir = 4
},
@@ -7999,9 +8048,13 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/light{
- dir = 8
- },
+/obj/structure/closet/walllocker_double/cargo/west,
+/obj/item/weapon/packageWrap,
+/obj/item/weapon/packageWrap,
+/obj/item/weapon/packageWrap,
+/obj/item/weapon/packageWrap,
+/obj/item/weapon/packageWrap,
+/obj/item/weapon/packageWrap,
/turf/simulated/floor/tiled,
/area/groundbase/cargo/office)
"xd" = (
@@ -8365,6 +8418,12 @@
},
/turf/simulated/floor/tiled/dark,
/area/groundbase/dorms)
+"yd" = (
+/obj/structure/bed/chair/office/dark{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/storage)
"ye" = (
/obj/structure/table/bench/padded,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -8556,11 +8615,10 @@
/obj/structure/cable/yellow{
icon_state = "4-8"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 8
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
+/obj/structure/cable/yellow{
+ icon_state = "1-8"
},
/turf/simulated/floor/tiled,
/area/groundbase/cargo/office)
@@ -8713,6 +8771,7 @@
/obj/structure/cable/yellow{
icon_state = "1-2"
},
+/obj/item/device/retail_scanner/cargo,
/turf/simulated/floor/tiled,
/area/groundbase/cargo/office)
"zg" = (
@@ -8793,17 +8852,6 @@
"zB" = (
/obj/machinery/door/firedoor,
/obj/structure/window/reinforced/full,
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/structure/grille,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/blast/regular{
@@ -8814,6 +8862,16 @@
name = "Pen 4 Blast Doors";
opacity = 0
},
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced,
/turf/simulated/floor/reinforced,
/area/rnd/xenobiology)
"zC" = (
@@ -9018,6 +9076,10 @@
},
/turf/simulated/floor/outdoors/sidewalk/side,
/area/groundbase/level2/nw)
+"Ae" = (
+/obj/machinery/vending/wardrobe/cargodrobe,
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/storage)
"Af" = (
/obj/machinery/photocopier,
/obj/machinery/light{
@@ -9454,6 +9516,9 @@
},
/turf/simulated/floor/wood,
/area/groundbase/dorms/room7)
+"Bk" = (
+/turf/simulated/wall,
+/area/groundbase/cargo/storage)
"Bl" = (
/turf/simulated/wall/r_wall,
/area/groundbase/science/picnic)
@@ -9971,17 +10036,6 @@
"CS" = (
/obj/machinery/door/firedoor,
/obj/structure/window/reinforced/full,
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/structure/grille,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/blast/regular{
@@ -9992,6 +10046,16 @@
name = "Pen 6 Blast Doors";
opacity = 0
},
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced,
/turf/simulated/floor/reinforced,
/area/rnd/xenobiology)
"CT" = (
@@ -10415,8 +10479,7 @@
req_access = list(20)
},
/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
+ dir = 8
},
/obj/item/clothing/head/helmet/space/void/captain,
/obj/item/clothing/suit/space/void/captain,
@@ -10439,7 +10502,6 @@
"DX" = (
/obj/structure/disposalpipe/trunk,
/obj/machinery/disposal,
-/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 4
},
@@ -10719,8 +10781,16 @@
/turf/simulated/floor/outdoors/grass/seasonal/notrees_nomobs_lowsnow,
/area/groundbase/level2/ne)
"EQ" = (
-/obj/structure/filingcabinet,
-/obj/machinery/atmospherics/unary/vent_pump/on,
+/obj/structure/closet/walllocker_double/cargo/north,
+/obj/item/weapon/cartridge/quartermaster{
+ pixel_x = 6;
+ pixel_y = 5
+ },
+/obj/item/weapon/cartridge/quartermaster{
+ pixel_x = -4;
+ pixel_y = 7
+ },
+/obj/item/weapon/cartridge/quartermaster,
/turf/simulated/floor/wood,
/area/groundbase/cargo/qm)
"ET" = (
@@ -10754,15 +10824,6 @@
/obj/structure/bed/chair/sofa/right/black,
/turf/simulated/floor/carpet/geo,
/area/groundbase/civilian/kitchen/backroom)
-"EX" = (
-/obj/structure/closet/secure_closet/quartermaster,
-/obj/item/weapon/storage/backpack/dufflebag,
-/obj/machinery/light_switch{
- dir = 1;
- pixel_y = -30
- },
-/turf/simulated/floor/wood,
-/area/groundbase/cargo/qm)
"EY" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -10985,6 +11046,14 @@
},
/turf/simulated/wall,
/area/groundbase/cargo/office)
+"FE" = (
+/obj/machinery/light/small,
+/obj/machinery/light_switch{
+ dir = 1;
+ pixel_y = -30
+ },
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/storage)
"FF" = (
/turf/simulated/wall,
/area/groundbase/civilian/bar)
@@ -10996,17 +11065,17 @@
/area/groundbase/cargo/bay)
"FJ" = (
/obj/structure/table/standard,
-/obj/item/weapon/cartridge/quartermaster{
- pixel_x = -4;
- pixel_y = 7
+/obj/item/clothing/head/soft,
+/obj/item/clothing/head/soft,
+/obj/item/weapon/stamp{
+ pixel_x = -3;
+ pixel_y = 3
},
-/obj/item/weapon/cartridge/quartermaster{
- pixel_x = 6;
- pixel_y = 5
+/obj/machinery/light/small{
+ dir = 1
},
-/obj/item/weapon/cartridge/quartermaster,
-/turf/simulated/floor/wood,
-/area/groundbase/cargo/qm)
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/storage)
"FL" = (
/obj/machinery/light{
dir = 8
@@ -11026,12 +11095,14 @@
"FO" = (
/obj/structure/grille,
/obj/structure/window/reinforced/full,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
+ dir = 1
},
/turf/simulated/floor,
/area/rnd/xenobiology)
@@ -11328,16 +11399,12 @@
/turf/simulated/floor/tiled,
/area/groundbase/command/hop)
"GD" = (
-/obj/machinery/computer/supplycomp/control{
- dir = 8
+/obj/structure/grille,
+/obj/structure/window/reinforced/polarized/full{
+ id = "qm_office"
},
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 8
- },
-/obj/machinery/status_display/supply_display{
- pixel_x = 32
- },
-/turf/simulated/floor/wood,
+/obj/machinery/door/firedoor,
+/turf/simulated/floor,
/area/groundbase/cargo/qm)
"GE" = (
/obj/machinery/door/firedoor,
@@ -11355,19 +11422,6 @@
/obj/machinery/microwave,
/turf/simulated/floor/wood,
/area/groundbase/dorms/room7)
-"GH" = (
-/obj/structure/grille,
-/obj/structure/window/reinforced/full,
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
- },
-/obj/structure/window/reinforced,
-/turf/simulated/floor,
-/area/rnd/xenobiology)
"GI" = (
/obj/effect/landmark{
name = "lightsout"
@@ -11913,6 +11967,15 @@
/obj/random/vendorall,
/turf/simulated/floor/tiled/dark,
/area/groundbase/dorms)
+"If" = (
+/obj/structure/bed/chair/office/dark{
+ dir = 1
+ },
+/obj/machinery/alarm{
+ dir = 1
+ },
+/turf/simulated/floor/wood,
+/area/groundbase/cargo/qm)
"Ig" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 8
@@ -12462,6 +12525,20 @@
},
/turf/simulated/floor/wood,
/area/groundbase/civilian/library)
+"JG" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/door/airlock/glass_mining{
+ id_tag = "cargodoor";
+ name = "Storage";
+ req_access = list(31);
+ req_one_access = null
+ },
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/storage)
"JH" = (
/obj/effect/landmark{
name = "morphspawn"
@@ -12593,9 +12670,14 @@
/area/groundbase/medical/triage)
"JW" = (
/obj/structure/table/standard,
-/obj/machinery/photocopier/faxmachine{
- department = "Quartermaster-Office"
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
},
+/obj/item/weapon/paper_bin{
+ pixel_x = -3;
+ pixel_y = 7
+ },
+/obj/item/device/megaphone,
/turf/simulated/floor/wood,
/area/groundbase/cargo/qm)
"JX" = (
@@ -12662,17 +12744,6 @@
"Kg" = (
/obj/machinery/door/firedoor,
/obj/structure/window/reinforced/full,
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/structure/grille,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/blast/regular{
@@ -12683,6 +12754,16 @@
name = "Pen 8 Blast Doors";
opacity = 0
},
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced,
/turf/simulated/floor/reinforced,
/area/rnd/xenobiology)
"Kh" = (
@@ -12715,13 +12796,6 @@
/turf/simulated/floor/tiled,
/area/groundbase/civilian/hydroponics)
"Ki" = (
-/obj/structure/table/standard,
-/obj/item/clothing/head/soft,
-/obj/item/clothing/head/soft,
-/obj/item/weapon/stamp{
- pixel_x = -3;
- pixel_y = 3
- },
/obj/machinery/atmospherics/unary/vent_pump/on,
/obj/machinery/camera/network/cargo,
/turf/simulated/floor/tiled,
@@ -12845,7 +12919,11 @@
/turf/simulated/floor/outdoors/sidewalk/side,
/area/groundbase/level2/ne)
"KB" = (
-/obj/structure/flora/pottedplant/minitree,
+/obj/structure/bed/chair/office/dark,
+/obj/effect/landmark/start/qm,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
/turf/simulated/floor/wood,
/area/groundbase/cargo/qm)
"KC" = (
@@ -12952,13 +13030,10 @@
/turf/simulated/floor,
/area/maintenance/groundbase/substation/command)
"KS" = (
-/obj/structure/cable/yellow{
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+/obj/structure/flora/pottedplant/minitree,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/wood,
/area/groundbase/cargo/qm)
"KU" = (
@@ -13441,15 +13516,16 @@
/turf/simulated/floor/tiled,
/area/groundbase/science/rnd)
"Mk" = (
-/obj/structure/table/standard,
-/obj/item/clothing/head/soft,
-/obj/item/clothing/head/soft,
-/obj/item/weapon/stamp{
- pixel_x = -3;
- pixel_y = 3
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/power/apc{
+ dir = 8
+ },
+/obj/structure/cable/yellow{
+ icon_state = "0-2"
},
/turf/simulated/floor/tiled,
-/area/groundbase/cargo/office)
+/area/groundbase/cargo/storage)
"Ml" = (
/obj/structure/filingcabinet/chestdrawer,
/obj/machinery/power/apc{
@@ -13532,6 +13608,13 @@
/obj/effect/floor_decal/steeldecal/steel_decals10,
/turf/simulated/floor/tiled/white,
/area/groundbase/medical/triage)
+"Mv" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 8
+ },
+/obj/structure/closet/secure_closet/cargotech,
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/storage)
"Mw" = (
/obj/machinery/autolathe{
hacked = 1
@@ -13713,11 +13796,16 @@
/turf/simulated/floor/tiled,
/area/rnd/xenobiology)
"MW" = (
+/obj/structure/grille,
+/obj/machinery/door/firedoor,
+/obj/structure/window/reinforced/polarized/full{
+ id = "qm_office"
+ },
/obj/structure/disposalpipe/segment{
dir = 2;
icon_state = "pipe-c"
},
-/turf/simulated/wall,
+/turf/simulated/floor,
/area/groundbase/cargo/qm)
"MX" = (
/obj/structure/closet/firecloset,
@@ -13876,12 +13964,12 @@
},
/area/groundbase/level2/se)
"Ns" = (
-/obj/machinery/alarm,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 8
},
-/turf/simulated/floor/wood,
-/area/groundbase/cargo/qm)
+/obj/structure/closet/secure_closet/cargotech,
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/storage)
"Nv" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -13906,18 +13994,6 @@
/area/groundbase/civilian/chapel)
"NA" = (
/obj/machinery/door/firedoor,
-/obj/structure/window/reinforced/full,
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/structure/grille,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/blast/regular{
@@ -13928,6 +14004,17 @@
name = "Pen 3 Blast Doors";
opacity = 0
},
+/obj/structure/window/reinforced/full,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
/turf/simulated/floor/reinforced,
/area/rnd/xenobiology)
"NC" = (
@@ -14166,15 +14253,7 @@
/turf/simulated/floor/carpet/geo,
/area/groundbase/civilian/kitchen/backroom)
"Ok" = (
-/obj/machinery/power/apc{
- dir = 1
- },
-/obj/structure/cable/yellow{
- icon_state = "0-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
- },
+/obj/structure/filingcabinet,
/turf/simulated/floor/wood,
/area/groundbase/cargo/qm)
"Ol" = (
@@ -14477,11 +14556,6 @@
name = "Trash";
sortType = "Trash"
},
-/obj/structure/table/standard,
-/obj/machinery/photocopier/faxmachine{
- department = "Cargo";
- pixel_y = 6
- },
/turf/simulated/floor/tiled,
/area/groundbase/cargo/office)
"Pc" = (
@@ -14939,11 +15013,11 @@
/turf/simulated/floor/outdoors/grass/seasonal/dark/lowsnow,
/area/groundbase/unexplored/outdoors)
"Qv" = (
-/obj/machinery/vending/wardrobe/cargodrobe,
/obj/machinery/atmospherics/unary/vent_scrubber/on,
/obj/machinery/light{
dir = 1
},
+/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled,
/area/groundbase/cargo/office)
"Qw" = (
@@ -15038,6 +15112,9 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/light{
+ dir = 4
+ },
/turf/simulated/floor/wood,
/area/groundbase/cargo/qm)
"QI" = (
@@ -15538,17 +15615,17 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable/yellow{
- icon_state = "2-8"
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
+/obj/structure/cable/yellow{
+ icon_state = "2-8"
},
/turf/simulated/wall,
-/area/groundbase/cargo/office)
+/area/groundbase/cargo/qm)
"RY" = (
/obj/structure/noticeboard{
pixel_x = -32
@@ -15616,17 +15693,6 @@
"Sj" = (
/obj/machinery/door/firedoor,
/obj/structure/window/reinforced/full,
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
/obj/structure/grille,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/blast/regular{
@@ -15637,6 +15703,16 @@
name = "Pen 1 Blast Doors";
opacity = 0
},
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
/turf/simulated/floor/reinforced,
/area/rnd/xenobiology)
"Sl" = (
@@ -15896,8 +15972,7 @@
/area/groundbase/science/xenohall)
"SQ" = (
/obj/machinery/disposal/wall{
- dir = 1;
- name = "Auto-Resleeving Item Deposit"
+ dir = 1
},
/obj/structure/disposalpipe/trunk{
dir = 4
@@ -15921,6 +15996,11 @@
/obj/machinery/atmospherics/unary/vent_pump/on,
/turf/simulated/floor/tiled,
/area/rnd/xenobiology)
+"SS" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/effect/floor_decal/industrial/outline/yellow,
+/turf/simulated/floor/tiled,
+/area/groundbase/cargo/office)
"ST" = (
/obj/machinery/camera/network/research/xenobio,
/turf/simulated/floor/reinforced,
@@ -16085,11 +16165,10 @@
/obj/structure/grille,
/obj/structure/window/reinforced/full,
/obj/structure/window/reinforced{
- dir = 4
+ dir = 8
},
/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
+ dir = 4
},
/obj/structure/window/reinforced,
/turf/simulated/floor/reinforced,
@@ -16197,6 +16276,12 @@
/obj/effect/landmark/start/cargo,
/turf/simulated/floor/tiled,
/area/groundbase/cargo/office)
+"TR" = (
+/obj/machinery/firealarm{
+ dir = 1
+ },
+/turf/simulated/floor/wood,
+/area/groundbase/cargo/qm)
"TS" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
@@ -16503,11 +16588,10 @@
/obj/structure/grille,
/obj/structure/window/reinforced/full,
/obj/structure/window/reinforced{
- dir = 4
+ dir = 8
},
/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
+ dir = 4
},
/obj/structure/window/reinforced{
dir = 1
@@ -16634,14 +16718,12 @@
/turf/simulated/wall/r_wall,
/area/groundbase/science/picnic)
"Vi" = (
-/obj/machinery/firealarm,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
+/obj/structure/grille,
+/obj/machinery/door/firedoor,
+/obj/structure/window/reinforced/polarized/full{
+ id = "qm_office"
},
-/obj/machinery/light{
- dir = 1
- },
-/turf/simulated/floor/wood,
+/turf/simulated/floor,
/area/groundbase/cargo/qm)
"Vj" = (
/obj/structure/table/standard,
@@ -17609,6 +17691,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
},
+/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled,
/area/groundbase/cargo/office)
"Yd" = (
@@ -18013,6 +18096,9 @@
/turf/simulated/floor/carpet/blue,
/area/groundbase/medical/psych)
"Zt" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
/turf/simulated/floor/wood,
/area/groundbase/cargo/qm)
"Zv" = (
@@ -18081,9 +18167,6 @@
},
/area/groundbase/dorms/room6)
"ZD" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 5
- },
/turf/simulated/floor/wood,
/area/groundbase/cargo/qm)
"ZE" = (
@@ -18130,16 +18213,13 @@
"ZK" = (
/obj/structure/grille,
/obj/structure/window/reinforced/full,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
/obj/structure/window/reinforced{
dir = 4
},
-/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
- },
-/obj/structure/window/reinforced{
- dir = 1
- },
+/obj/structure/window/reinforced,
/turf/simulated/floor,
/area/rnd/xenobiology)
"ZL" = (
@@ -19636,7 +19716,7 @@ ST
jA
jA
oM
-GH
+ZK
ls
iK
ls
@@ -20204,7 +20284,7 @@ ST
jA
jA
UQ
-GH
+ZK
ls
iK
ls
@@ -20772,7 +20852,7 @@ ST
jA
jA
tB
-GH
+ZK
ls
kN
ls
@@ -21340,11 +21420,11 @@ ST
jA
jA
hl
-GH
+ZK
ls
iK
ls
-ZK
+FO
bb
jA
jA
@@ -28909,11 +28989,11 @@ uP
uP
cK
cK
-cK
-cK
-cK
-uP
-to
+Cz
+Cz
+GD
+Vi
+Cz
RX
It
rv
@@ -29051,12 +29131,12 @@ uP
uP
cK
cK
-cK
-uP
-uP
-uP
-to
-mj
+Cz
+eV
+JW
+vE
+kv
+Ly
up
ea
Ln
@@ -29193,18 +29273,18 @@ to
to
iw
to
-to
-to
-to
-to
-to
+Cz
mj
+KB
+oR
+If
+Ly
FR
Lc
Oi
xK
uS
-qN
+Lc
FR
FR
Lc
@@ -29336,10 +29416,10 @@ to
to
to
Cz
-Cz
+qN
sS
gX
-Cz
+TR
Ly
Ef
yb
@@ -29479,9 +29559,9 @@ to
OM
Cz
EQ
-ZD
+sS
Zt
-EX
+ZD
MW
Wg
gB
@@ -29622,7 +29702,7 @@ to
Cz
Ok
KS
-QH
+ly
QH
Jp
Ug
@@ -29762,16 +29842,16 @@ ks
ks
ks
Cz
-Vi
-FJ
-JW
-eV
+Cz
+Cz
+Cz
+Cz
Cz
Ki
za
-za
+SS
Vu
-Lc
+lB
rj
dA
XU
@@ -29903,15 +29983,15 @@ ks
ks
ks
ks
-Cz
-Ns
+Bk
+Ae
vW
lU
-he
-gX
Mk
-Lc
-Lc
+JG
+ve
+ve
+ve
yH
gL
Lc
@@ -30045,14 +30125,14 @@ ks
ks
ks
ks
-Cz
-GD
+Bk
+yd
ot
gk
-KB
-Cz
+FE
+Bk
Qv
-zp
+tE
zp
Yc
eL
@@ -30187,12 +30267,12 @@ UH
ks
ks
ks
-Cz
-Cz
-Cz
-Cz
-Cz
-Cz
+Bk
+FJ
+Ns
+Mv
+uA
+Bk
zX
zX
Lc
@@ -30329,12 +30409,12 @@ UH
ks
ks
ks
-ks
-ks
-ks
-ks
-ks
-Wj
+Bk
+Bk
+Bk
+Bk
+Bk
+Bk
dE
dE
Lc
@@ -30476,7 +30556,7 @@ ks
ks
ks
ks
-Wj
+Bk
Wj
oa
oa
diff --git a/maps/groundbase/gb-z3.dmm b/maps/groundbase/gb-z3.dmm
index d63d4f60139..2e6f9737010 100644
--- a/maps/groundbase/gb-z3.dmm
+++ b/maps/groundbase/gb-z3.dmm
@@ -906,13 +906,6 @@
outdoors = 0
},
/area/groundbase/level3/escapepad)
-"oF" = (
-/turf/unsimulated/wall/planetary/normal{
- desc = "It's quite impassable";
- icon_state = "rock-dark";
- name = "impassable rock"
- },
-/area/groundbase/level3/sw)
"oI" = (
/obj/machinery/light{
dir = 1
@@ -3526,7 +3519,7 @@ Bg
Bg
Bg
Bg
-oF
+Bg
zh
hO
"}
@@ -14061,11 +14054,11 @@ IS
IS
IS
IS
-IS
-IS
-IS
-IS
-IS
+vs
+vs
+vs
+sP
+sP
oK
iT
iT
@@ -14203,11 +14196,11 @@ IS
IS
IS
IS
-IS
-IS
-IS
-IS
-IS
+vs
+vs
+vs
+sP
+sP
oK
iT
iT
@@ -14345,11 +14338,11 @@ IS
IS
IS
IS
-IS
-IS
-IS
-IS
-IS
+vs
+vs
+vs
+sP
+sP
oK
Px
xs
diff --git a/maps/groundbase/groundbase_areas.dm b/maps/groundbase/groundbase_areas.dm
index f814f390530..8711fd73e7f 100644
--- a/maps/groundbase/groundbase_areas.dm
+++ b/maps/groundbase/groundbase_areas.dm
@@ -337,6 +337,9 @@
/area/groundbase/cargo/office
name = "Cargo Office"
lightswitch = 1
+/area/groundbase/cargo/storage
+ name = "Cargo Storage"
+ lightswitch = 0
/area/groundbase/cargo/bay
name = "Cargo Bay"
lightswitch = 1
diff --git a/sound/voice/roarbark.ogg b/sound/voice/roarbark.ogg
new file mode 100644
index 00000000000..adb3b23639c
Binary files /dev/null and b/sound/voice/roarbark.ogg differ
diff --git a/vorestation.dme b/vorestation.dme
index 41289540cc7..a9a3425c4b2 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1414,6 +1414,7 @@
#include "code\game\objects\items\weapons\melee\energy_vr.dm"
#include "code\game\objects\items\weapons\melee\misc.dm"
#include "code\game\objects\items\weapons\melee\misc_vr.dm"
+#include "code\game\objects\items\weapons\melee\shock_maul.dm"
#include "code\game\objects\items\weapons\storage\backpack.dm"
#include "code\game\objects\items\weapons\storage\backpack_vr.dm"
#include "code\game\objects\items\weapons\storage\bags.dm"
@@ -4201,13 +4202,13 @@
#include "maps\expedition_vr\beach\submaps\mountains.dm"
#include "maps\expedition_vr\beach\submaps\mountains_areas.dm"
#include "maps\gateway_archive_vr\blackmarketpackers.dm"
+#include "maps\groundbase\groundbase.dm"
#include "maps\southern_cross\items\clothing\sc_accessory.dm"
#include "maps\southern_cross\items\clothing\sc_suit.dm"
#include "maps\southern_cross\items\clothing\sc_under.dm"
#include "maps\southern_cross\loadout\loadout_suit.dm"
#include "maps\southern_cross\loadout\loadout_uniform.dm"
#include "maps\southern_cross\loadout\loadout_vr.dm"
-#include "maps\stellar_delight\stellar_delight.dm"
#include "maps\submaps\_helpers.dm"
#include "maps\submaps\_readme.dm"
#include "maps\submaps\engine_submaps\engine.dm"