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