diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index a3cb84d5a8..c86b64cece 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -33,6 +33,19 @@
"problemMatcher": [],
"label": "tgui: build tgfont",
"detail": "node mkdist.cjs && fantasticon --config config.cjs"
+ },
+ {
+ "type": "shell",
+ "command": "tgui/bin/tgui",
+ "windows": {
+ "command": ".\\tgui\\bin\\tgui-prettybuild.bat"
+ },
+ "problemMatcher": [
+ "$tsc",
+ "$eslint-stylish"
+ ],
+ "group": "build",
+ "label": "tgui: prettybuild"
}
]
-}
\ No newline at end of file
+}
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 0000000000..69896c885d
--- /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 d32f365dc8..5eb18d7de0 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/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm
index 2925ef1877..9b6a93a85c 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/vore/03_egg.dm b/code/modules/client/preference_setup/vore/03_egg.dm
index 49efcdf798..5ad651fbf9 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/mining/abandonedcrates_vr.dm b/code/modules/mining/abandonedcrates_vr.dm
index e5297e4f6c..cd6113f505 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 ae70e710e3..fb570af547 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 9cff48c9ba..a7bbbd9d34 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/login.dm b/code/modules/mob/living/carbon/human/login.dm
index 7d507c62cb..802ed62a6d 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 3694acaf23..7ac301e895 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 1f6349df05..5819a9a9f8 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/combat.dm b/code/modules/mob/living/simple_mob/combat.dm
index 73045b51da..7c8ccfadc5 100644
--- a/code/modules/mob/living/simple_mob/combat.dm
+++ b/code/modules/mob/living/simple_mob/combat.dm
@@ -14,9 +14,14 @@
handle_attack_delay(A, melee_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false.
// Cooldown testing is done at click code (for players) and interface code (for AI).
- setClickCooldown(get_attack_speed())
+ // VOREStation Edit Start: Simplemob Injury
+ if(injury_enrages)
+ setClickCooldown(get_attack_speed() - ((injury_level / 2) SECONDS)) // Increase how fast we can attack by our injury level / 2
+ else
+ setClickCooldown(get_attack_speed() + ((injury_level / 2) SECONDS)) // Delay how fast we can attack by our injury level / 2
+ // VOREStation Edit Stop: Simplemob Injury
- // Returns a value, but will be lost if
+ // Returns a value, but will be lost if
. = do_attack(A, their_T)
if(melee_attack_delay)
@@ -90,7 +95,12 @@
if(!istype(A) || QDELETED(A))
return
- setClickCooldown(get_attack_speed())
+ // VOREStation Edit Start: Simplemob Injury
+ if(injury_enrages)
+ setClickCooldown(get_attack_speed() - ((injury_level / 2) SECONDS)) // Increase how fast we can attack by our injury level / 2
+ else
+ setClickCooldown(get_attack_speed() + ((injury_level / 2) SECONDS)) // Delay how fast we can attack by our injury level / 2
+ // VOREStation Edit Stop: Simplemob Injury
face_atom(A)
@@ -259,4 +269,4 @@
/mob/living/simple_mob/proc/special_pre_animation(atom/A)
do_windup_animation(A, special_attack_delay) // Semi-placeholder.
-/mob/living/simple_mob/proc/special_post_animation(atom/A)
\ No newline at end of file
+/mob/living/simple_mob/proc/special_post_animation(atom/A)
diff --git a/code/modules/mob/living/simple_mob/simple_mob.dm b/code/modules/mob/living/simple_mob/simple_mob.dm
index 7a9384ce97..fe67168891 100644
--- a/code/modules/mob/living/simple_mob/simple_mob.dm
+++ b/code/modules/mob/living/simple_mob/simple_mob.dm
@@ -165,17 +165,22 @@
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.
+ var/threshold = 0.6 // When we start slowing down. Configure this setting per-mob. Default is 60%
+ var/injury_enrages = FALSE // Do injuries enrage (aka strengthen) our mob? If yes, we'll interpret how hurt we are differently.
+ // VOREStation Add End
/mob/living/simple_mob/Initialize()
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]
@@ -259,6 +264,13 @@
if(m_intent == "walk")
. *= 1.5
+ // VOREStation Edit Start
+ if(injury_enrages) // If we enrage, then do this, else
+ . -= injury_level
+ else
+ . += injury_level
+ // VOREStation Edit Stop
+
. += config.animal_delay
. += ..()
@@ -308,12 +320,20 @@
/decl/mob_organ_names
var/list/hit_zones = list("body") //When in doubt, it's probably got a body.
-//VOREStation Add Start For allowing mobs with ID's door access
-/mob/living/simple_mob/Bump(var/atom/A)
- if(mobcard && istype(A, /obj/machinery/door))
- var/obj/machinery/door/D = A
- if(client && !istype(D, /obj/machinery/door/firedoor) && !istype(D, /obj/machinery/door/blast) && !istype(D, /obj/machinery/door/airlock/lift) && D.check_access(mobcard))
- D.open()
- else
- ..()
-//Vorestation Add End
+/*
+ * VOREStation Add
+ * How injured are we? Returns a number that is then added to movement cooldown and firing/melee delay respectively.
+ * Called by movement_delay and our firing/melee delay checks
+*/
+/mob/living/simple_mob/proc/get_injury_level(var/mob/living/simple_mob/M)
+ var/h = getMaxHealth() - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() - halloss // We're not updating our actual health here bc we want updatehealth() and other checks to handle that
+ if(h > 0) // Safety to prevent division by 0 errors
+ if((h / getMaxHealth()) <= threshold) // Essentially, did our health go down? We don't modify want to modify our total slowdown if we didn't actually take damage, and aren't below our threshold %
+ var/totaldelay = round(rand(1,3) * damage_fatigue_mult * clamp(((rand(2,5) * (h / getMaxHealth())) - rand(0,2)), 1, 5)) // totaldelay is how much delay we're going to feed into attacks and movement. Do NOT change this formula unless you know how to math.
+ injury_level = totaldelay // Adds our returned slowdown to the mob's injury level
+
+/mob/living/simple_mob/updatehealth() // We don't want to fully override the check, just hook our own code in
+ 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
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 59177f3659..6fea80f626 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 8b236f3926..9c04c08717 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_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
index ab16df28d1..44aa7538a0 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()
. = ..()
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 6f46487b4d..2a290f488d 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/resleeving/autoresleever.dm b/code/modules/resleeving/autoresleever.dm
index f851ccbd1a..33b0635b35 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/tension/tension.dm b/code/modules/tension/tension.dm
index aa95662849..1bef202597 100644
--- a/code/modules/tension/tension.dm
+++ b/code/modules/tension/tension.dm
@@ -28,7 +28,7 @@
potential_damage = (melee_damage_lower + melee_damage_upper) / 2
// Treat potential_damage as estimated DPS. If the enemy attacks twice as fast as usual, it will double the number.
- potential_damage *= 1 SECOND / (base_attack_cooldown + melee_attack_delay)
+ potential_damage *= 1 SECOND / (base_attack_cooldown + melee_attack_delay + injury_level) // VOREStation Add: Injury level should affect potential damage, thereby increasing the threat level
else
var/obj/item/projectile/P = new projectiletype(src)
if(P.nodamage || P.taser_effect) // Tasers are somewhat less scary.
@@ -41,7 +41,7 @@
potential_damage += P.agony / 2
qdel(P)
- potential_damage *= 1 SECOND / (base_attack_cooldown + ranged_attack_delay)
+ potential_damage *= 1 SECOND / (base_attack_cooldown + ranged_attack_delay + injury_level) // VOREStation Add: Injury level should affect potential damage, thereby increasing the threat level
// Special attacks are ultra-specific to the mob so a generic threat assessment isn't really possible.
diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm
index effd283c13..0acc4626b1 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 207f3ca4e0..50c2c3168b 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/icons/_nanomaps/tether_nanomap_z1.png b/icons/_nanomaps/tether_nanomap_z1.png
index f6188b7881..cc281d1432 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 53492f77ee..5f1eacdb19 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 45438a40d9..09b99241f4 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 510d22b3d6..c2623219ee 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 e8a3863327..8858b2f580 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 fac62128ec..2b311c0a24 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 e8fe737655..cfa0381377 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 5181307aa3..6270461d76 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 afb8a2a200..b2e41a9422 100644
Binary files a/icons/inventory/suit/mob_vox.dmi and b/icons/inventory/suit/mob_vox.dmi differ
diff --git a/icons/mob/items/lefthand_melee.dmi b/icons/mob/items/lefthand_melee.dmi
index e965d64b43..da3401cced 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 3fee6cb6bd..fc8851a610 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 82f5faffe8..f6c153ff45 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 0000000000..e427140571
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 0000000000..f4385ef113
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 bfec658879..1fca915bff 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 140e6de426..68495a9e4b 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/taurs_ch.dmi b/icons/mob/vore/taurs_ch.dmi
new file mode 100644
index 0000000000..9320c96d40
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 0000000000..2b4c0acbdc
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 0000000000..835225049d
Binary files /dev/null and b/icons/mob/vore/taurs_vr_loaf.dmi differ
diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi
index cb504aa551..783441c51c 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 7c27d4119e..556b419c26 100644
--- a/maps/groundbase/gb-z2.dmm
+++ b/maps/groundbase/gb-z2.dmm
@@ -336,17 +336,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{
@@ -357,6 +346,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" = (
@@ -464,11 +463,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,
@@ -533,11 +531,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,
@@ -937,11 +934,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" = (
@@ -1795,7 +1790,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" = (
@@ -2215,11 +2221,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,
@@ -2474,12 +2481,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,
@@ -2525,12 +2533,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,
@@ -2567,11 +2569,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
@@ -2838,17 +2839,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{
@@ -2859,6 +2849,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" = (
@@ -3209,6 +3209,9 @@
pixel_x = -30;
pixel_y = 16
},
+/obj/machinery/light{
+ dir = 8
+ },
/turf/simulated/floor/tiled,
/area/groundbase/cargo/office)
"iW" = (
@@ -3748,6 +3751,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
@@ -3766,11 +3774,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,
@@ -4097,6 +4104,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
@@ -4118,6 +4138,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"
@@ -4259,14 +4283,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)
@@ -4351,14 +4376,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"
@@ -4790,8 +4812,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
@@ -5036,12 +5057,9 @@
/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;
@@ -5169,11 +5187,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
@@ -5192,6 +5209,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"
@@ -5360,17 +5389,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{
@@ -5381,6 +5399,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" = (
@@ -5910,9 +5938,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
@@ -6662,12 +6698,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,
@@ -6857,11 +6891,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
@@ -6886,6 +6919,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
@@ -7204,6 +7242,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"
@@ -7338,10 +7380,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" = (
@@ -7395,6 +7437,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,
@@ -7535,6 +7585,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{
@@ -7704,16 +7764,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"
@@ -7737,9 +7795,6 @@
dir = 1
},
/obj/machinery/disposal,
-/obj/structure/window/reinforced{
- dir = 1
- },
/obj/structure/window/reinforced{
dir = 4
},
@@ -8063,9 +8118,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" = (
@@ -8429,6 +8488,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{
@@ -8620,11 +8685,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)
@@ -8777,6 +8841,7 @@
/obj/structure/cable/yellow{
icon_state = "1-2"
},
+/obj/item/device/retail_scanner/cargo,
/turf/simulated/floor/tiled,
/area/groundbase/cargo/office)
"zg" = (
@@ -8857,17 +8922,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{
@@ -8878,6 +8932,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" = (
@@ -9083,6 +9147,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{
@@ -9520,6 +9588,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)
@@ -10037,17 +10108,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{
@@ -10058,6 +10118,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" = (
@@ -10481,8 +10551,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,
@@ -10505,7 +10574,6 @@
"DX" = (
/obj/structure/disposalpipe/trunk,
/obj/machinery/disposal,
-/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 4
},
@@ -10785,8 +10853,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" = (
@@ -10820,15 +10896,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"
@@ -11051,6 +11118,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)
@@ -11062,17 +11137,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
@@ -11092,12 +11167,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)
@@ -11394,16 +11471,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,
@@ -11421,19 +11494,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"
@@ -11980,6 +12040,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
@@ -12529,6 +12598,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"
@@ -12660,9 +12743,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" = (
@@ -12732,17 +12820,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{
@@ -12753,6 +12830,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" = (
@@ -12785,13 +12872,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,
@@ -12915,7 +12995,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" = (
@@ -13022,13 +13106,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" = (
@@ -13511,15 +13592,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{
@@ -13602,6 +13684,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
@@ -13789,11 +13878,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,
@@ -13952,12 +14046,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
@@ -13982,18 +14076,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{
@@ -14004,6 +14086,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" = (
@@ -14242,15 +14335,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" = (
@@ -14557,11 +14642,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" = (
@@ -15020,11 +15100,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" = (
@@ -15119,6 +15199,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" = (
@@ -15619,17 +15702,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
@@ -15697,17 +15780,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{
@@ -15718,6 +15790,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" = (
@@ -15977,8 +16059,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
@@ -16002,6 +16083,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,
@@ -16166,11 +16252,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,
@@ -16278,6 +16363,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{
@@ -16584,11 +16675,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
@@ -16715,14 +16805,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,
@@ -17700,6 +17788,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" = (
@@ -18104,6 +18193,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" = (
@@ -18172,9 +18264,6 @@
},
/area/groundbase/dorms/room6)
"ZD" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 5
- },
/turf/simulated/floor/wood,
/area/groundbase/cargo/qm)
"ZE" = (
@@ -18221,16 +18310,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" = (
@@ -19727,7 +19813,7 @@ ST
jA
jA
oM
-GH
+ZK
ls
iK
ls
@@ -20295,7 +20381,7 @@ ST
jA
jA
UQ
-GH
+ZK
ls
iK
ls
@@ -20863,7 +20949,7 @@ ST
jA
jA
tB
-GH
+ZK
ls
kN
ls
@@ -21431,11 +21517,11 @@ ST
jA
jA
hl
-GH
+ZK
ls
iK
ls
-ZK
+FO
bb
jA
jA
@@ -29000,11 +29086,11 @@ uP
uP
cK
cK
-cK
-cK
-cK
-uP
-to
+Cz
+Cz
+GD
+Vi
+Cz
RX
It
rv
@@ -29142,12 +29228,12 @@ uP
uP
cK
cK
-cK
-uP
-uP
-uP
-to
-mj
+Cz
+eV
+JW
+vE
+kv
+Ly
up
ea
Ln
@@ -29284,18 +29370,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
@@ -29427,10 +29513,10 @@ to
to
to
Cz
-Cz
+qN
sS
gX
-Cz
+TR
Ly
Ef
yb
@@ -29570,9 +29656,9 @@ to
OM
Cz
EQ
-ZD
+sS
Zt
-EX
+ZD
MW
Wg
gB
@@ -29713,7 +29799,7 @@ to
Cz
Ok
KS
-QH
+ly
QH
Jp
Ug
@@ -29853,16 +29939,16 @@ ks
ks
ks
Cz
-Vi
-FJ
-JW
-eV
+Cz
+Cz
+Cz
+Cz
Cz
Ki
za
-za
+SS
Vu
-Lc
+lB
rj
dA
XU
@@ -29994,15 +30080,15 @@ ks
ks
ks
ks
-Cz
-Ns
+Bk
+Ae
vW
lU
-he
-gX
Mk
-Lc
-Lc
+JG
+ve
+ve
+ve
yH
gL
Lc
@@ -30136,14 +30222,14 @@ ks
ks
ks
ks
-Cz
-GD
+Bk
+yd
ot
gk
-KB
-Cz
+FE
+Bk
Qv
-zp
+tE
zp
Yc
eL
@@ -30278,12 +30364,12 @@ UH
ks
ks
ks
-Cz
-Cz
-Cz
-Cz
-Cz
-Cz
+Bk
+FJ
+Ns
+Mv
+uA
+Bk
zX
zX
Lc
@@ -30420,12 +30506,12 @@ UH
ks
ks
ks
-ks
-ks
-ks
-ks
-ks
-Wj
+Bk
+Bk
+Bk
+Bk
+Bk
+Bk
dE
dE
Lc
@@ -30567,7 +30653,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 d63d4f6013..2e6f973701 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 f814f39053..8711fd73e7 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/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm
index 7908fa634a..0becc13304 100644
--- a/maps/tether/tether-05-station1.dmm
+++ b/maps/tether/tether-05-station1.dmm
@@ -13264,7 +13264,7 @@
frequency = 1443;
level = 3;
name = "Distribution and Waste Monitor";
- sensors = list("dist_main_meter" = "Surface - Distribution Loop", "scrub_main_meter" = "Surface - Scrubbers Loop", "mair_main_meter" = "Surface - Mixed Air Tank", "dist_aux_meter" = "Station - Distribution Loop", "scrub_aux_meter" = "Station - Scrubbers Loop", "mair_aux_meter" = "Station - Mixed Air Tank", "mair_mining_meter" = "Mining Outpost - Mixed Air Tank")
+ sensors = list("dist_main_meter"="Surface - Distribution Loop","scrub_main_meter"="Surface - Scrubbers Loop","mair_main_meter"="Surface - Mixed Air Tank","dist_aux_meter"="Station - Distribution Loop","scrub_aux_meter"="Station - Scrubbers Loop","mair_aux_meter"="Station - Mixed Air Tank","mair_mining_meter"="Mining Outpost - Mixed Air Tank")
},
/turf/simulated/floor/tiled,
/area/engineering/engineering_monitoring)
@@ -14336,6 +14336,7 @@
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
},
+/obj/item/device/multitool/station_buffered,
/turf/simulated/floor/tiled,
/area/ai_monitored/storage/eva)
"bkU" = (
@@ -14916,6 +14917,37 @@
dir = 1;
pixel_y = -24
},
+/obj/structure/table/rack/shelf,
+/obj/item/device/radio/headset/explorer{
+ pixel_y = -5;
+ pixel_x = -5
+ },
+/obj/item/device/radio/headset/explorer{
+ pixel_x = -5;
+ pixel_y = 5
+ },
+/obj/item/device/radio/headset/explorer{
+ pixel_y = 5
+ },
+/obj/item/device/radio/headset/explorer{
+ pixel_y = 5;
+ pixel_x = 5
+ },
+/obj/item/device/radio/headset/explorer{
+ pixel_y = 5;
+ pixel_x = 11
+ },
+/obj/item/device/radio/headset/explorer{
+ pixel_y = -5;
+ pixel_x = 11
+ },
+/obj/item/device/radio/headset/explorer{
+ pixel_y = -5;
+ pixel_x = 5
+ },
+/obj/item/device/radio/headset/explorer{
+ pixel_y = -5
+ },
/turf/simulated/floor/tiled,
/area/gateway/prep_room)
"bHV" = (
@@ -24779,6 +24811,7 @@
/obj/machinery/light{
dir = 1
},
+/obj/item/device/radio/headset/explorer,
/turf/simulated/floor,
/area/tether/exploration/pilot_office)
"lfI" = (
@@ -25819,6 +25852,7 @@
/obj/machinery/alarm{
pixel_y = 22
},
+/obj/item/device/radio/headset/explorer,
/turf/simulated/floor,
/area/tether/exploration/pilot_office)
"mdh" = (
diff --git a/vorestation.dme b/vorestation.dme
index 391f03ae95..a9a3425c4b 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"