diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm
index 08131f99bb..3ae84811b5 100644
--- a/code/__defines/chemistry.dm
+++ b/code/__defines/chemistry.dm
@@ -36,6 +36,10 @@
#define REAGENTS_PER_SHEET 20
+#define ANTIBIO_NORM 1
+#define ANTIBIO_OD 2
+#define ANTIBIO_SUPER 3
+
// Chemistry lists.
var/list/tachycardics = list("coffee", "inaprovaline", "hyperzine", "nitroglycerin", "thirteenloko", "nicotine") // Increase heart rate.
var/list/bradycardics = list("neurotoxin", "cryoxadone", "clonexadone", "space_drugs", "stoxin") // Decrease heart rate.
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 0902bd3871..4673d0ef26 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -339,3 +339,9 @@ var/list/mob/living/forced_ambiance_list = new
/area/proc/shuttle_departed()
return TRUE
+
+/area/AllowDrop()
+ CRASH("Bad op: area/AllowDrop() called")
+
+/area/drop_location()
+ CRASH("Bad op: area/drop_location() called")
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index dba0ec67ab..c994aff121 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -502,3 +502,12 @@
if(A && A.has_gravity())
return TRUE
return FALSE
+
+/atom/proc/drop_location()
+ var/atom/L = loc
+ if(!L)
+ return null
+ return L.AllowDrop() ? L : get_turf(L)
+
+/atom/proc/AllowDrop()
+ return FALSE
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 3ae19b1e4f..0cd09b8a57 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -296,7 +296,3 @@
/atom/movable/proc/adjust_scale(new_scale)
icon_scale = new_scale
update_transform()
-
-// Stub for now, override with better things.
-/atom/movable/proc/drop_location()
- return loc
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 799169bad5..e85982ea80 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -723,4 +723,7 @@
..()
if(open && contents.len)
var/display_item = contents[1]
- to_chat(user, "\The [src] contains \the [display_item]!")
\ No newline at end of file
+ to_chat(user, "\The [src] contains \the [display_item]!")
+
+/obj/item/weapon/storage/AllowDrop()
+ return TRUE
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index a9fc515e3b..c0303d8753 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -416,3 +416,6 @@
/obj/structure/closet/onDropInto(var/atom/movable/AM)
return
+
+/obj/structure/closet/AllowDrop()
+ return TRUE
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 2f1fdda438..798ad0e81c 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -280,3 +280,6 @@ var/const/enterloopsanity = 100
if(isliving(AM))
var/mob/living/M = AM
M.turf_collision(src, speed)
+
+/turf/AllowDrop()
+ return TRUE
diff --git a/code/modules/clothing/clothing_accessories.dm b/code/modules/clothing/clothing_accessories.dm
index 57c292f1e3..4759f03658 100644
--- a/code/modules/clothing/clothing_accessories.dm
+++ b/code/modules/clothing/clothing_accessories.dm
@@ -29,7 +29,7 @@
return
if (ishuman(user) && src.loc == user)
var/mob/living/carbon/human/H = user
- if(src != H.l_store && src != H.r_store && src != H.s_store)
+ if(src == H.w_uniform) // VOREStation Edit - Un-equip on single click, but not on uniform.
return
return ..()
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 439aed4ec7..612f34bc83 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -209,7 +209,7 @@ var/list/slot_equipment_priority = list( \
if(target)
I.forceMove(target)
else
- I.dropInto(loc)
+ I.dropInto(drop_location())
I.dropped(src)
return 1
diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm
index 445d06a802..b131e0b558 100644
--- a/code/modules/mob/living/carbon/human/human_powers.dm
+++ b/code/modules/mob/living/carbon/human/human_powers.dm
@@ -173,7 +173,7 @@
for(var/obj/item/organ/external/EO in organs)
if(EO.brute_dam || EO.burn_dam)
- output += "[EO.name] - [EO.burn_dam + EO.brute_dam > ROBOLIMB_REPAIR_CAP ? "Heavy Damage" : "Light Damage"]\n"
+ output += "[EO.name] - [EO.burn_dam + EO.brute_dam > EO.min_broken_damage ? "Heavy Damage" : "Light Damage"]\n" //VOREStation Edit - Makes robotic limb damage scalable
else
output += "[EO.name] - OK\n"
diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm
index 4aaae08daf..307fc537ee 100644
--- a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm
+++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm
@@ -96,6 +96,17 @@
cost = -1
var_changes = list("flash_mod" = 2.0)
+/datum/trait/hollow
+ name = "Hollow Bones/Aluminum Alloy"
+ desc = "Your bones and robot limbs are much easier to break."
+ cost = -2 //I feel like this should be higher, but let's see where it goes
+
+/datum/trait/hollow/apply(var/datum/species/S,var/mob/living/carbon/human/H)
+ ..(S,H)
+ for(var/obj/item/organ/external/O in H.organs)
+ O.min_broken_damage *= 0.5
+ O.min_bruised_damage *= 0.5
+
/datum/trait/lightweight
name = "Lightweight"
desc = "Your light weight and poor balance make you very susceptible to unhelpful bumping. Think of it like a bowling ball versus a pin."
diff --git a/code/modules/nifsoft/software/13_soulcatcher.dm b/code/modules/nifsoft/software/13_soulcatcher.dm
index f048e0a475..8bd92831dc 100644
--- a/code/modules/nifsoft/software/13_soulcatcher.dm
+++ b/code/modules/nifsoft/software/13_soulcatcher.dm
@@ -456,9 +456,10 @@
/hook/death/proc/nif_soulcatcher(var/mob/living/carbon/human/H)
if(!istype(H) || !H.mind) return TRUE //Hooks must return TRUE
- if(ishuman(H.loc)) //Died in someone
- var/mob/living/carbon/human/HP = H.loc
- if(HP.nif && HP.nif.flag_check(NIF_O_SCOTHERS,NIF_FLAGS_OTHER))
+ if(isbelly(H.loc)) //Died in someone
+ var/obj/belly/B = H.loc
+ var/mob/living/carbon/human/HP = B.owner
+ if(istype(HP) && HP.nif && HP.nif.flag_check(NIF_O_SCOTHERS,NIF_FLAGS_OTHER))
var/datum/nifsoft/soulcatcher/SC = HP.nif.imp_check(NIF_SOULCATCHER)
SC.catch_mob(H)
else if(H.nif && H.nif.flag_check(NIF_O_SCMYSELF,NIF_FLAGS_OTHER)) //They are caught in their own NIF
diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm
index 93565ac72d..16cb6db64e 100644
--- a/code/modules/organs/organ.dm
+++ b/code/modules/organs/organ.dm
@@ -148,25 +148,25 @@ var/list/organ_cache = list()
germ_level = 0
return 0
- var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin")
+ var/antibiotics = owner.chem_effects[CE_ANTIBIOTIC] || 0
var/infection_damage = 0
- if((status & ORGAN_DEAD) && antibiotics < 30) //Sepsis from 'dead' organs
+ if((status & ORGAN_DEAD) && antibiotics < ANTIBIO_OD) //Sepsis from 'dead' organs
infection_damage = min(1, 1 + round((germ_level - INFECTION_LEVEL_THREE)/200,0.25)) //1 Tox plus a little based on germ level
- else if(germ_level > INFECTION_LEVEL_TWO && antibiotics < 30)
+ else if(germ_level > INFECTION_LEVEL_TWO && antibiotics < ANTIBIO_OD)
infection_damage = min(0.25, 0.25 + round((germ_level - INFECTION_LEVEL_TWO)/200,0.25))
if(infection_damage)
owner.adjustToxLoss(infection_damage)
if (germ_level > 0 && germ_level < INFECTION_LEVEL_ONE/2 && prob(30))
- adjust_germ_level(-1)
+ adjust_germ_level(-antibiotics)
if (germ_level >= INFECTION_LEVEL_ONE/2)
//aiming for germ level to go from ambient to INFECTION_LEVEL_TWO in an average of 15 minutes
- if(antibiotics < 5 && prob(round(germ_level/6)))
+ if(!antibiotics && prob(round(germ_level/6)))
adjust_germ_level(1)
if(germ_level >= INFECTION_LEVEL_ONE)
@@ -181,7 +181,7 @@ var/list/organ_cache = list()
. = 2 //Organ qualifies for effect-specific processing
//No particular effect on the general 'organ' at 3
- if (germ_level >= INFECTION_LEVEL_THREE && antibiotics < 30)
+ if (germ_level >= INFECTION_LEVEL_THREE && antibiotics < ANTIBIO_OD)
. = 3 //Organ qualifies for effect-specific processing
adjust_germ_level(rand(5,10)) //Germ_level increases without overdose of antibiotics
@@ -234,19 +234,19 @@ var/list/organ_cache = list()
//Germs
/obj/item/organ/proc/handle_antibiotics()
- var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin")
+ var/antibiotics = owner.chem_effects[CE_ANTIBIOTIC] || 0
- if (!germ_level || antibiotics < 5)
+ if (!germ_level || antibiotics < ANTIBIO_NORM)
return
if (germ_level < INFECTION_LEVEL_ONE)
germ_level = 0 //cure instantly
else if (germ_level < INFECTION_LEVEL_TWO)
- adjust_germ_level(-6) //at germ_level < 500, this should cure the infection in a minute
+ adjust_germ_level(-antibiotics*4) //at germ_level < 500, this should cure the infection in a minute
else if (germ_level < INFECTION_LEVEL_THREE)
- adjust_germ_level(-2) //at germ_level < 1000, this will cure the infection in 5 minutes
+ adjust_germ_level(-antibiotics*2) //at germ_level < 1000, this will cure the infection in 5 minutes
else
- adjust_germ_level(-1) // You waited this long to get treated, you don't really deserve this organ
+ adjust_germ_level(-antibiotics) // You waited this long to get treated, you don't really deserve this organ
//Adds autopsy data for used_weapon.
/obj/item/organ/proc/add_autopsy_data(var/used_weapon, var/damage)
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index df11357e8b..2c9626ee7e 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -400,7 +400,7 @@
user << "Nothing to fix!"
return 0
- if(damage_amount >= ROBOLIMB_REPAIR_CAP)
+ if(damage_amount >= min_broken_damage) //VOREStation Edit - Makes robotic limb damage scalable
user << "The damage is far too severe to patch over externally."
return 0
@@ -1085,6 +1085,7 @@ Note that amputating the affected organ does in fact remove the infection from t
dislocated = -1
cannot_break = 1
+ min_broken_damage = ROBOLIMB_REPAIR_CAP //VOREStation Addition - Makes robotic limb damage scalable
remove_splint()
get_icon()
unmutate()
@@ -1133,7 +1134,7 @@ Note that amputating the affected organ does in fact remove the infection from t
return !(status & (ORGAN_MUTATED|ORGAN_DEAD))
/obj/item/organ/external/proc/is_malfunctioning()
- return ((robotic >= ORGAN_ROBOT) && (brute_dam + burn_dam) >= 25 && prob(brute_dam + burn_dam))
+ return ((robotic >= ORGAN_ROBOT) && (brute_dam + burn_dam) >= min_broken_damage*0.83 && prob(brute_dam + burn_dam)) //VOREStation Edit - Makes robotic limb damage scalable
/obj/item/organ/external/proc/embed(var/obj/item/weapon/W, var/silent = 0)
if(!owner || loc != owner)
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index fe480ed574..ddfa5823e5 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -101,7 +101,7 @@
/datum/reagent/proc/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
return
-/datum/reagent/proc/overdose(var/mob/living/carbon/M, var/alien, var/removed) // Overdose effect. Doesn't happen instantly.
+/datum/reagent/proc/overdose(var/mob/living/carbon/M, var/alien, var/removed) // Overdose effect.
if(alien == IS_DIONA)
return
if(ishuman(M))
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
index b731f50326..4818dc808f 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
@@ -509,11 +509,46 @@
taste_description = "bitterness"
reagent_state = LIQUID
color = "#C1C1C1"
- metabolism = REM * 0.05
+ metabolism = REM * 0.25
mrate_static = TRUE
overdose = REAGENTS_OVERDOSE
scannable = 1
+/datum/reagent/spaceacillin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
+ ..()
+ M.add_chemical_effect(CE_ANTIBIOTIC, dose >= overdose ? ANTIBIO_OD : ANTIBIO_NORM)
+
+/datum/reagent/corophizine
+ name = "Corophizine"
+ id = "corophizine"
+ description = "A wide-spectrum antibiotic drug. Powerful and uncomfortable in equal doses."
+ taste_description = "burnt toast"
+ reagent_state = LIQUID
+ color = "#FFB0B0"
+ mrate_static = TRUE
+ overdose = 10
+ scannable = 1
+
+/datum/reagent/corophizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
+ ..()
+ M.add_chemical_effect(CE_ANTIBIOTIC, ANTIBIO_SUPER)
+
+ //Based roughly on Levofloxacin's rather severe side-effects
+ if(prob(20))
+ M.Confuse(5)
+ if(prob(20))
+ M.Weaken(5)
+ if(prob(20))
+ M.make_dizzy(5)
+ if(prob(20))
+ M.hallucination = max(M.hallucination, 10)
+
+ //One of the levofloxacin side effects is 'spontaneous tendon rupture', which I'll immitate here. 1:1000 chance, so, pretty darn rare.
+ if(ishuman(M) && rand(1,1000) == 1)
+ var/mob/living/carbon/human/H = M
+ var/obj/item/organ/external/eo = pick(H.organs) //Misleading variable name, 'organs' is only external organs
+ eo.fracture()
+
/datum/reagent/sterilizine
name = "Sterilizine"
id = "sterilizine"
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index 3df633c45b..0feae58505 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -417,6 +417,14 @@
required_reagents = list("cryptobiolin" = 1, "inaprovaline" = 1)
result_amount = 2
+/datum/chemical_reaction/corophizine
+ name = "Corophizine"
+ id = "corophizine"
+ result = "corophizine"
+ required_reagents = list("spaceacillin" = 1, "carbon" = 1, "phoron" = 0.1)
+ catalysts = list("phoron" = 5)
+ result_amount = 2
+
/datum/chemical_reaction/imidazoline
name = "imidazoline"
id = "imidazoline"
diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm
index 2ab40c46d7..2d071a3575 100644
--- a/code/modules/vore/appearance/sprite_accessories_vr.dm
+++ b/code/modules/vore/appearance/sprite_accessories_vr.dm
@@ -201,13 +201,13 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
-/datum/sprite_accessory/ears/otie
- name = "otie, colorable"
+/datum/sprite_accessory/ears/antlers_e
+ name = "antlers with ears"
desc = ""
- icon_state = "otie"
+ icon_state = "cow-nohorns"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
- extra_overlay = "otie-inner"
+ extra_overlay = "antlers_mark"
/datum/sprite_accessory/ears/cow
name = "cow, horns"
@@ -221,6 +221,21 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
+/datum/sprite_accessory/ears/cow_nohorns
+ name = "cow, no horns"
+ desc = ""
+ icon_state = "cow-nohorns"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/otie
+ name = "otie, colorable"
+ desc = ""
+ icon_state = "otie"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "otie-inner"
+
/datum/sprite_accessory/ears/zears
name = "jagged ears"
desc = ""
@@ -823,6 +838,14 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
+/datum/sprite_accessory/tail/newtailmaw
+ name = "new tailmaw (vwag)"
+ desc = ""
+ icon_state = "newtailmaw"
+ ani_state = "newtailmaw_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
/datum/sprite_accessory/tail/ztail
name = "jagged flufftail"
desc = ""
@@ -845,6 +868,22 @@
color_blend_mode = ICON_MULTIPLY
extra_overlay = "sergal_mark"
+/datum/sprite_accessory/tail/skunktail
+ name = "skunk, dual-color"
+ desc = ""
+ icon_state = "skunktail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "skunktail_mark"
+
+/datum/sprite_accessory/tail/deertail
+ name = "deer, dual-color"
+ desc = ""
+ icon_state = "deertail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "deertail_mark"
+
//For all species tails. Includes haircolored tails.
/datum/sprite_accessory/tail/special
name = "Blank tail. Do not select."
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index 9972962207..8029425d84 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -172,45 +172,54 @@
// Release all contents of this belly into the owning mob's location.
// If that location is another mob, contents are transferred into whichever of its bellies the owning mob is in.
// Returns the number of mobs so released.
-/obj/belly/proc/release_all_contents(var/include_absorbed = FALSE)
+/obj/belly/proc/release_all_contents(var/include_absorbed = FALSE, var/silent = FALSE)
+
+ //Don't bother if we don't have contents
if(!contents.len)
return 0
- var/atom/destination = drop_location()
+
+ //Find where we should drop things into (certainly not the owner)
var/count = 0
+
+ //Iterate over contents and move them all
for(var/thing in contents)
var/atom/movable/AM = thing
if(isliving(AM))
var/mob/living/L = AM
if(L.absorbed && !include_absorbed)
continue
- L.absorbed = FALSE
-
- AM.forceMove(destination) // Move the belly contents into the same location as belly's owner.
- count++
+ count += release_specific_contents(AM, silent = TRUE)
+
+ //Clean up our own business
items_preserved.Cut()
- owner.visible_message("[owner] expels everything from their [lowertext(name)]!")
- owner.update_icons()
- if(release_sound)
- playsound(src, 'sound/effects/splat.ogg', vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
+ if(isanimal(owner))
+ owner.update_icons()
+
+ //Print notifications/sound if necessary
+ if(!silent)
+ owner.visible_message("[owner] expels everything from their [lowertext(name)]!")
+ if(release_sound)
+ playsound(src, 'sound/effects/splat.ogg', vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
+
return count
// Release a specific atom from the contents of this belly into the owning mob's location.
// If that location is another mob, the atom is transferred into whichever of its bellies the owning mob is in.
// Returns the number of atoms so released.
-/obj/belly/proc/release_specific_contents(var/atom/movable/M)
+/obj/belly/proc/release_specific_contents(var/atom/movable/M, var/silent = FALSE)
if (!(M in contents))
return 0 // They weren't in this belly anyway
- M.forceMove(drop_location()) // Move the belly contents into the same location as belly's owner.
+ //Place them into our drop_location
+ M.forceMove(drop_location())
items_preserved -= M
- if(release_sound)
- playsound(src, 'sound/effects/splat.ogg', vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
-
+
+ //Special treatment for absorbed prey
if(istype(M,/mob/living))
var/mob/living/ML = M
var/mob/living/OW = owner
if(ML.absorbed)
- ML.absorbed = 0
+ ML.absorbed = FALSE
if(ishuman(M) && ishuman(OW))
var/mob/living/carbon/human/Prey = M
var/mob/living/carbon/human/Pred = OW
@@ -220,8 +229,16 @@
absorbed_count++
Pred.bloodstr.trans_to(Prey, Pred.reagents.total_volume / absorbed_count)
- owner.visible_message("[owner] expels [M] from their [lowertext(name)]!")
- owner.update_icons()
+ //Clean up our own business
+ if(isanimal(owner))
+ owner.update_icons()
+
+ //Print notifications/sound if necessary
+ if(!silent)
+ owner.visible_message("[owner] expels [M] from their [lowertext(name)]!")
+ if(release_sound)
+ playsound(src, 'sound/effects/splat.ogg', vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
+
return 1
// Actually perform the mechanics of devouring the tasty prey.
@@ -329,13 +346,7 @@
// If digested prey is also a pred... anyone inside their bellies gets moved up.
if(is_vore_predator(M))
- for(var/belly in M.vore_organs)
- var/obj/belly/B = belly
- for(var/thing in B)
- var/atom/movable/AM = thing
- AM.forceMove(src)
- if(isliving(AM))
- to_chat(AM,"As [M] melts away around you, you find yourself in [owner]'s [lowertext(name)]")
+ M.release_vore_contents(include_absorbed = TRUE, silent = TRUE)
//Drop all items into the belly.
if(config.items_survive_digestion)
@@ -350,7 +361,7 @@
for(var/slot in slots)
var/obj/item/thingy = M.get_equipped_item(slot = slot)
if(thingy)
- M.remove_from_mob(thingy, M.drop_location())
+ M.unEquip(thingy,force = TRUE)
//Reagent transfer
if(ishuman(owner))
@@ -419,13 +430,17 @@
/obj/belly/drop_location()
//Should be the case 99.99% of the time
if(owner)
- return owner.loc
+ return owner.drop_location()
//Sketchy fallback for safety, put them somewhere safe.
else
log_debug("[src] (\ref[src]) doesn't have an owner, and dropped someone at a latespawn point!")
var/fallback = pick(latejoin)
return get_turf(fallback)
+//Yes, it's ""safe"" to drop items here
+/obj/belly/AllowDrop()
+ return TRUE
+
//Handle a mob struggling
// Called from /mob/living/carbon/relaymove()
/obj/belly/proc/relay_resist(var/mob/living/R)
diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm
index 7c622d1716..9527421377 100644
--- a/code/modules/vore/eating/bellymodes_vr.dm
+++ b/code/modules/vore/eating/bellymodes_vr.dm
@@ -120,18 +120,12 @@
continue
for(var/slot in slots)
var/obj/item/thingy = M.get_equipped_item(slot = slot)
- if(thingy && M.canUnEquip(thingy))
- if(slot == slot_w_uniform)
- var/list/stash = list(slot_r_store,slot_l_store,slot_wear_id,slot_belt)
- for(var/stashslot in stash)
- var/obj/item/SL = M.get_equipped_item(stashslot)
- if(SL)
- M.remove_from_mob(SL, M.drop_location())
- M.remove_from_mob(thingy, M.drop_location())
+ if(thingy)
+ M.unEquip(thingy,force = TRUE)
digest_item(thingy)
break
-
M.updateVRPanel()
+
owner.updateVRPanel()
//////////////////////////// DM_ABSORB ////////////////////////////
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index 8ea2a05dc1..a1ce795bcc 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -222,10 +222,10 @@
//
// Release everything in every vore organ
//
-/mob/living/proc/release_vore_contents(var/include_absorbed = TRUE)
+/mob/living/proc/release_vore_contents(var/include_absorbed = TRUE, var/silent = FALSE)
for(var/belly in vore_organs)
var/obj/belly/B = belly
- B.release_all_contents(include_absorbed)
+ B.release_all_contents(include_absorbed, silent)
//
// Returns examine messages for bellies
diff --git a/icons/mob/vore/ears_vr.dmi b/icons/mob/vore/ears_vr.dmi
index a4844214c6..08fe11aa5c 100644
Binary files a/icons/mob/vore/ears_vr.dmi and b/icons/mob/vore/ears_vr.dmi differ
diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi
index 3b10ec215f..1f10c70797 100644
Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ
diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm
index 5585a8cfff..b87878dc5a 100644
--- a/maps/tether/tether-05-station1.dmm
+++ b/maps/tether/tether-05-station1.dmm
@@ -3156,6 +3156,7 @@
/obj/effect/floor_decal/steeldecal/steel_decals_central1{
dir = 1
},
+/obj/machinery/door/firedoor/glass,
/turf/simulated/floor/tiled/monofloor{
dir = 1
},
@@ -3427,6 +3428,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/machinery/door/firedoor/glass,
/turf/simulated/floor/tiled/monofloor,
/area/tether/station/excursion_dock)
"ajX" = (
@@ -7207,7 +7209,9 @@
dir = 5
},
/obj/machinery/light,
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 5
+ },
/turf/simulated/floor/tiled/monotile,
/area/tether/station/excursion_dock)
"auF" = (
@@ -7286,6 +7290,10 @@
d2 = 4;
icon_state = "2-4"
},
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ icon_state = "pipe-c"
+ },
/turf/simulated/floor/tiled/monotile,
/area/tether/station/excursion_dock)
"auP" = (
@@ -7316,6 +7324,9 @@
d2 = 8;
icon_state = "4-8"
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/simulated/floor/tiled/monotile,
/area/tether/station/excursion_dock)
"auR" = (
@@ -7346,6 +7357,10 @@
icon_state = "1-8"
},
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
+/obj/structure/disposalpipe/segment{
+ dir = 8;
+ icon_state = "pipe-c"
+ },
/turf/simulated/floor/tiled/monotile,
/area/tether/station/excursion_dock)
"auV" = (
@@ -9298,6 +9313,7 @@
d2 = 4;
icon_state = "1-4"
},
+/obj/structure/disposalpipe/segment,
/turf/simulated/floor/tiled,
/area/hallway/station/atrium)
"aAC" = (
@@ -20383,6 +20399,21 @@
},
/turf/simulated/floor/tiled,
/area/teleporter)
+"bOa" = (
+/obj/machinery/door/airlock/glass{
+ name = "Shuttle Bay"
+ },
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment,
+/turf/simulated/floor/tiled/steel_grid,
+/area/hallway/station/atrium)
"bOd" = (
/obj/machinery/power/apc{
cell_type = /obj/item/weapon/cell/super;
@@ -21551,6 +21582,88 @@
/obj/structure/closet/emcloset,
/turf/simulated/floor/tiled,
/area/bridge_hallway)
+"cDQ" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 4
+ },
+/turf/simulated/floor/tiled/monotile,
+/area/tether/station/excursion_dock)
+"cNq" = (
+/obj/structure/bed/chair/office/dark{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"dxX" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment,
+/turf/simulated/floor/tiled/monotile,
+/area/hallway/station/atrium)
+"edg" = (
+/obj/structure/bed/chair/office/dark{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/effect/landmark/start{
+ name = "Explorer"
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"epz" = (
+/obj/machinery/disposal,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 10
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (SOUTHWEST)";
+ icon_state = "bordercolor";
+ dir = 10
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"eUx" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"flX" = (
+/obj/structure/table/woodentable,
+/obj/item/device/universal_translator,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"fsu" = (
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (NORTH)";
+ icon_state = "bordercolor";
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ dir = 2;
+ layer = 3.3;
+ pixel_x = 0;
+ pixel_y = 26
+ },
+/obj/machinery/light_switch{
+ dir = 2;
+ name = "light switch ";
+ pixel_x = -26;
+ pixel_y = 22
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
"gcH" = (
/obj/effect/floor_decal/borderfloorblack{
dir = 1
@@ -21561,6 +21674,142 @@
/obj/machinery/meter,
/turf/simulated/floor/tiled,
/area/tether/station/excursion_dock)
+"ggi" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/turf/simulated/floor/plating,
+/area/tether/station/explorer_meeting)
+"grh" = (
+/obj/machinery/alarm{
+ frequency = 1441;
+ pixel_y = 22
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (NORTH)";
+ icon_state = "bordercolor";
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"gsV" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/excursion_dock)
+"hJg" = (
+/obj/structure/table/woodentable,
+/obj/item/weapon/paper_bin{
+ pixel_x = 1;
+ pixel_y = 9
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"irt" = (
+/obj/structure/table/woodentable,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"jop" = (
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/purple/border,
+/obj/machinery/recharger/wallcharger{
+ pixel_y = -32
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"jKX" = (
+/obj/structure/table/woodentable,
+/obj/item/device/camera,
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (EAST)";
+ icon_state = "bordercolor";
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"lHz" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/purple/border,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"mcn" = (
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1";
+ pixel_x = 0
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (EAST)";
+ icon_state = "bordercolor";
+ dir = 4
+ },
+/obj/machinery/vending/snack,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"mtd" = (
+/obj/structure/table/woodentable,
+/obj/item/weapon/folder/yellow,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"mCP" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/floor_decal/borderfloor{
+ dir = 8
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (WEST)";
+ icon_state = "bordercolor";
+ dir = 8
+ },
+/obj/item/device/radio/intercom{
+ dir = 8;
+ pixel_x = -24
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"mId" = (
+/obj/structure/bed/chair/office/dark,
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/effect/landmark/start{
+ name = "Search and Rescue"
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"nxL" = (
+/obj/effect/floor_decal/steeldecal/steel_decals6{
+ dir = 10
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/excursion_dock)
+"nYM" = (
+/turf/simulated/wall/r_wall,
+/area/tether/station/explorer_meeting)
"oVP" = (
/obj/machinery/atmospherics/unary/vent_pump/high_volume/wall_mounted{
dir = 1;
@@ -21582,6 +21831,26 @@
/obj/machinery/camera/network/northern_star,
/turf/simulated/floor/tiled,
/area/tether/station/excursion_dock)
+"rRn" = (
+/obj/structure/bed/chair/office/dark{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"sbI" = (
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
"soc" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
@@ -21589,6 +21858,98 @@
/obj/machinery/camera/network/northern_star,
/turf/simulated/floor/tiled/monotile,
/area/tether/station/excursion_dock)
+"sSn" = (
+/obj/effect/floor_decal/steeldecal/steel_decals5{
+ dir = 4
+ },
+/obj/machinery/shower{
+ tag = "icon-shower (EAST)";
+ icon_state = "shower";
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals10{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals10,
+/obj/structure/curtain/open/shower,
+/obj/item/weapon/soap/nanotrasen,
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 1
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"tEu" = (
+/obj/structure/bed/chair/office/dark{
+ dir = 1
+ },
+/obj/effect/landmark/start{
+ name = "Pilot"
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"uzS" = (
+/obj/structure/table/woodentable,
+/obj/item/weapon/folder/blue,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"uDP" = (
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (NORTH)";
+ icon_state = "bordercolor";
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"wmC" = (
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/purple/border,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"wLj" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"wSk" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced,
+/turf/simulated/floor/plating,
+/area/tether/station/explorer_meeting)
+"zMp" = (
+/obj/effect/floor_decal/steeldecal/steel_decals_central1{
+ dir = 1
+ },
+/obj/machinery/door/firedoor/glass,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"AmC" = (
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"AwZ" = (
+/obj/structure/disposalpipe/sortjunction{
+ dir = 8;
+ icon_state = "pipe-j1s";
+ name = "Exploration Hangar";
+ sortType = "Exploration Hangar";
+ tag = "icon-pipe-j1s (WEST)"
+ },
+/turf/simulated/floor/tiled,
+/area/hallway/station/atrium)
"AyD" = (
/obj/machinery/shuttle_sensor{
dir = 5;
@@ -21599,13 +21960,77 @@
},
/turf/simulated/shuttle/wall/voidcraft,
/area/shuttle/excursion/tether)
-"CaJ" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 4
+"BGQ" = (
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/green{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ icon_state = "pipe-c"
},
-/obj/machinery/camera/network/northern_star,
/turf/simulated/floor/tiled/monotile,
/area/tether/station/excursion_dock)
+"BZA" = (
+/obj/machinery/washing_machine,
+/obj/effect/floor_decal/steeldecal/steel_decals9,
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 1
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"CaJ" = (
+/obj/effect/floor_decal/steeldecal/steel_decals5{
+ dir = 4
+ },
+/obj/machinery/shower{
+ tag = "icon-shower (EAST)";
+ icon_state = "shower";
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals10{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals10,
+/obj/structure/curtain/open/shower,
+/obj/item/weapon/soap/nanotrasen,
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 8
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 1
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals9,
+/turf/simulated/floor/tiled/monotile,
+/area/tether/station/excursion_dock)
+"Dne" = (
+/obj/structure/table/woodentable,
+/obj/item/device/taperecorder,
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/purple/border,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
"DHJ" = (
/obj/machinery/alarm{
frequency = 1441;
@@ -21614,10 +22039,75 @@
/obj/structure/closet/secure_closet/pilot,
/turf/simulated/floor/tiled,
/area/tether/station/explorer_prep)
+"EKk" = (
+/obj/structure/bed/chair/office/dark{
+ dir = 1
+ },
+/obj/effect/landmark/start{
+ name = "Search and Rescue"
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"Fuf" = (
+/obj/effect/floor_decal/borderfloor{
+ dir = 9
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (NORTHWEST)";
+ icon_state = "bordercolor";
+ dir = 9
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals6{
+ dir = 9
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"GSn" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/simulated/floor/tiled/monotile,
+/area/tether/station/excursion_dock)
"GVt" = (
/obj/structure/closet/secure_closet/pilot,
/turf/simulated/floor/tiled,
/area/tether/station/explorer_prep)
+"IjZ" = (
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (NORTH)";
+ icon_state = "bordercolor";
+ dir = 1
+ },
+/obj/machinery/newscaster{
+ pixel_y = 32
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"Kfy" = (
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (EAST)";
+ icon_state = "bordercolor";
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
"KNg" = (
/obj/machinery/shuttle_sensor{
dir = 6;
@@ -21625,6 +22115,11 @@
},
/turf/simulated/shuttle/wall/voidcraft,
/area/shuttle/excursion/tether)
+"MaY" = (
+/obj/structure/table/woodentable,
+/obj/item/weapon/pen,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
"Mws" = (
/obj/machinery/shuttle_sensor{
dir = 2;
@@ -21632,6 +22127,91 @@
},
/turf/simulated/shuttle/wall/voidcraft,
/area/shuttle/excursion/tether)
+"NuW" = (
+/obj/machinery/camera/network/northern_star{
+ dir = 8
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (EAST)";
+ icon_state = "bordercolor";
+ dir = 4
+ },
+/obj/machinery/vending/cola,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"Nyt" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"NEQ" = (
+/obj/machinery/camera/network/northern_star{
+ dir = 5
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/floor_decal/borderfloor{
+ dir = 8
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (WEST)";
+ icon_state = "bordercolor";
+ dir = 8
+ },
+/obj/structure/extinguisher_cabinet{
+ dir = 4;
+ icon_state = "extinguisher_closed";
+ pixel_x = -30;
+ tag = "icon-extinguisher_closed (EAST)"
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"PeQ" = (
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals6{
+ dir = 5
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/excursion_dock)
+"PqO" = (
+/obj/structure/bed/chair/office/dark{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/effect/landmark/start{
+ name = "Pilot"
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"PEF" = (
+/obj/machinery/door/airlock/glass{
+ name = "Shuttle Bay"
+ },
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment,
+/turf/simulated/floor/tiled/steel_grid,
+/area/tether/station/excursion_dock)
"PYd" = (
/obj/machinery/atmospherics/pipe/simple/visible/cyan{
dir = 10
@@ -21644,20 +22224,105 @@
},
/turf/simulated/shuttle/wall/voidcraft,
/area/shuttle/excursion/tether)
-"RIb" = (
-/obj/effect/floor_decal/steeldecal/steel_decals9,
-/obj/effect/floor_decal/steeldecal/steel_decals9{
- dir = 4
- },
-/obj/effect/floor_decal/steeldecal/steel_decals9{
- dir = 8
- },
-/obj/effect/floor_decal/steeldecal/steel_decals9{
+"QQi" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 1
},
-/obj/structure/closet/secure_closet/guncabinet/excursion,
-/turf/simulated/floor/tiled/monotile,
-/area/tether/station/explorer_prep)
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/purple/border,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"RyW" = (
+/obj/machinery/door/airlock/multi_tile/glass{
+ autoclose = 1;
+ dir = 2;
+ id_tag = null;
+ name = "Exploration Briefing";
+ req_access = list();
+ req_one_access = list(19,43,67)
+ },
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals_central1,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"RGf" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/turf/simulated/floor/plating,
+/area/tether/station/explorer_meeting)
+"SzY" = (
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (NORTH)";
+ icon_state = "bordercolor";
+ dir = 1
+ },
+/obj/machinery/power/apc{
+ dir = 1;
+ name = "north bump";
+ pixel_x = 0;
+ pixel_y = 24
+ },
+/obj/structure/cable/green{
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"Tiu" = (
+/obj/structure/bed/chair/office/dark,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/landmark/start{
+ name = "Search and Rescue"
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"Tlr" = (
+/obj/structure/table/woodentable,
+/obj/machinery/photocopier/faxmachine{
+ department = "Exploration Briefing Room"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 6
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (SOUTHEAST)";
+ icon_state = "bordercolor";
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
"TpR" = (
/obj/structure/grille,
/obj/structure/window/reinforced/full,
@@ -21677,6 +22342,103 @@
/obj/machinery/camera/network/northern_star,
/turf/simulated/floor/tiled,
/area/tether/station/excursion_dock)
+"VZf" = (
+/obj/structure/bed/chair/office/dark{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"WkO" = (
+/obj/structure/bed/chair/office/dark,
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/effect/landmark/start{
+ name = "Explorer"
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"XgS" = (
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 2;
+ icon_state = "pipe-c"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 8
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (WEST)";
+ icon_state = "bordercolor";
+ dir = 8
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals6{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"YMR" = (
+/obj/effect/floor_decal/borderfloor{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (NORTHEAST)";
+ icon_state = "bordercolor";
+ dir = 5
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"YRV" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/camera/network/northern_star{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/monotile,
+/area/tether/station/excursion_dock)
+"YUm" = (
+/obj/machinery/light{
+ dir = 8;
+ icon_state = "tube1";
+ pixel_y = 0
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/floor_decal/borderfloor{
+ dir = 8
+ },
+/obj/effect/floor_decal/corner/purple/border{
+ tag = "icon-bordercolor (WEST)";
+ icon_state = "bordercolor";
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_meeting)
+"Zwu" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/tether/station/excursion_dock)
(1,1,1) = {"
aaa
@@ -29523,13 +30285,13 @@ Vrx
aah
akC
aah
-aah
-aah
+gsV
+Zwu
aad
CaJ
-aah
-aah
-aay
+sSn
+sSn
+CaJ
aad
ach
aaT
@@ -29645,12 +30407,12 @@ abd
abd
abm
abJ
-abd
-abd
-ail
+cDQ
auS
-arp
+ail
abd
+arp
+arp
auE
aad
ack
@@ -29773,7 +30535,7 @@ aao
aao
aao
asY
-avN
+YRV
aad
ack
aaT
@@ -30628,11 +31390,11 @@ oVP
aap
avK
auO
-awi
-axy
-ayV
+PEF
+dxX
+bOa
aAB
-acp
+AwZ
acy
acT
acy
@@ -30749,7 +31511,7 @@ apk
oVP
aap
gcH
-auF
+GSn
aad
axI
aaT
@@ -30993,7 +31755,7 @@ Qua
aau
aaO
avK
-auF
+GSn
aad
aac
aaT
@@ -31115,7 +31877,7 @@ aap
aap
aap
avK
-auF
+GSn
aad
aac
aaT
@@ -31237,9 +31999,9 @@ afd
afd
afd
ate
-auF
+GSn
aad
-aaT
+aac
aaT
aAE
act
@@ -31358,7 +32120,7 @@ aoc
apn
aqd
arw
-amS
+BGQ
auU
aad
aac
@@ -31479,8 +32241,8 @@ amP
aah
aad
soc
-aah
-aah
+nxL
+PeQ
auR
aad
aac
@@ -31601,12 +32363,12 @@ aad
aad
aad
aad
-aad
-aad
-aad
-aad
-aaT
-aaT
+zMp
+RyW
+nYM
+nYM
+nYM
+nYM
alA
aCy
amM
@@ -31723,12 +32485,12 @@ akL
alp
amU
aiv
-aac
-aac
-aac
-aac
-aac
-aac
+Fuf
+XgS
+YUm
+NEQ
+mCP
+epz
alA
amg
amg
@@ -31845,12 +32607,12 @@ bQR
alu
amU
aiv
-aac
-aac
-aac
-aac
-aac
-aac
+fsu
+sbI
+VZf
+edg
+Nyt
+lHz
alA
amg
amg
@@ -31967,12 +32729,12 @@ bQQ
alu
amU
aiv
-aac
-aac
-aac
-aac
-aac
-aac
+uDP
+WkO
+uzS
+MaY
+tEu
+wmC
alA
amg
amg
@@ -32089,12 +32851,12 @@ bQQ
alu
amU
aiv
-aac
-aac
-aac
-aac
-aac
-aac
+grh
+mId
+MaY
+flX
+rRn
+jop
alA
amg
amg
@@ -32211,12 +32973,12 @@ bQS
alu
amW
aiv
-aac
-aac
-aac
-aac
-aac
-aac
+uDP
+WkO
+mtd
+irt
+EKk
+jop
alA
amg
amg
@@ -32333,12 +33095,12 @@ akL
alu
amW
aiv
-aac
-aac
-aac
-aac
-aac
-aac
+SzY
+Tiu
+hJg
+mtd
+tEu
+wmC
alA
amg
amg
@@ -32453,14 +33215,14 @@ aiv
bQJ
bQT
bQJ
-bQJ
aiv
-aac
-aac
-aac
-aac
-aac
-aac
+aiv
+IjZ
+wLj
+cNq
+PqO
+eUx
+QQi
alA
amg
amg
@@ -32575,14 +33337,14 @@ aiv
bQK
bQK
bQK
-RIb
aiv
-aac
-aac
-aac
-aac
-aac
-aac
+BZA
+uDP
+AmC
+AmC
+AmC
+AmC
+Dne
alA
amg
amg
@@ -32698,13 +33460,13 @@ aiv
aiv
aiv
aiv
-aiv
-aac
-aac
-aac
-aac
-aac
-aac
+BZA
+YMR
+Kfy
+mcn
+NuW
+jKX
+Tlr
alA
amg
amg
@@ -32819,14 +33581,14 @@ aac
aac
aac
aac
-aac
-aac
-aac
-aac
-aac
-aac
-aac
-aac
+nYM
+RGf
+ggi
+ggi
+ggi
+ggi
+ggi
+wSk
alA
amg
amg
@@ -32941,14 +33703,14 @@ aaa
aac
aac
aac
-aac
-aac
-aac
-aaa
-aaa
-aaa
-aac
-aac
+aat
+aat
+aat
+aat
+aat
+aat
+aat
+aat
alA
alA
amN
@@ -33062,15 +33824,15 @@ aaa
aaa
aaa
aaa
+aat
+aat
+aat
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aac
+aat
+aat
+aat
aac
amh
amh
@@ -33185,14 +33947,14 @@ aaa
aaa
aaa
aaa
+aat
aaa
aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
+aat
+aat
aac
aac
aac
@@ -33314,9 +34076,9 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
+aat
+aat
+aac
aaa
aaa
aaa
diff --git a/maps/tether/tether_areas2.dm b/maps/tether/tether_areas2.dm
index 5113a7cbe7..1d5df0fcb9 100644
--- a/maps/tether/tether_areas2.dm
+++ b/maps/tether/tether_areas2.dm
@@ -416,6 +416,9 @@
/area/tether/station/explorer_prep
name = "\improper Explorer Prep Room"
+/area/tether/station/explorer_meeting
+ name = "\improper Explorer Meeting Room"
+
/area/shuttle/excursion
name = "\improper Excursion Shuttle"
icon_state = "shuttle2"
diff --git a/nano/images/nanomap_z1.png b/nano/images/nanomap_z1.png
index f31c9fcfd8..e960431353 100644
Binary files a/nano/images/nanomap_z1.png and b/nano/images/nanomap_z1.png differ
diff --git a/nano/images/nanomap_z2.png b/nano/images/nanomap_z2.png
index 71b09e8fa1..be3e07bb34 100644
Binary files a/nano/images/nanomap_z2.png and b/nano/images/nanomap_z2.png differ
diff --git a/nano/images/nanomap_z3.png b/nano/images/nanomap_z3.png
index 5dfc01b510..fd2909e74b 100644
Binary files a/nano/images/nanomap_z3.png and b/nano/images/nanomap_z3.png differ
diff --git a/nano/images/nanomap_z5.png b/nano/images/nanomap_z5.png
index 02190ba52b..746f6bd7cd 100644
Binary files a/nano/images/nanomap_z5.png and b/nano/images/nanomap_z5.png differ
diff --git a/nano/images/nanomap_z6.png b/nano/images/nanomap_z6.png
index 114b30fb73..d30bd61cfa 100644
Binary files a/nano/images/nanomap_z6.png and b/nano/images/nanomap_z6.png differ
diff --git a/nano/images/nanomap_z7.png b/nano/images/nanomap_z7.png
index c871d145ac..169d3163b2 100644
Binary files a/nano/images/nanomap_z7.png and b/nano/images/nanomap_z7.png differ