diff --git a/code/__defines/span_vr.dm b/code/__defines/span_vr.dm index 85e9672dae..618fd52b3d 100644 --- a/code/__defines/span_vr.dm +++ b/code/__defines/span_vr.dm @@ -1,121 +1,89 @@ -// Sorted alphabetically -// Shamelessly yoinked from TGCode, luv u folks -#define span_abductor(str) ("" + str + "") -#define span_admin(str) ("" + str + "") -#define span_adminhelp(str) ("" + str + "") -#define span_adminnotice(str) ("" + str + "") -#define span_adminobserverooc(str) ("" + str + "") -#define span_adminooc(str) ("" + str + "") -#define span_adminsay(str) ("" + str + "") -#define span_aiprivradio(str) ("" + str + "") -#define span_alert(str) ("" + str + "") -#define span_alertalien(str) ("" + str + "") -#define span_alertsyndie(str) ("" + str + "") -#define span_alertwarning(str) ("" + str + "") -#define span_alien(str) ("" + str + "") -#define span_announce(str) ("" + str + "") -#define span_big(str) ("" + str + "") -#define span_bigicon(str) ("" + str + "") -#define span_binarysay(str) ("" + str + "") -#define span_blue(str) ("" + str + "") -#define span_blueteamradio(str) ("" + str + "") -#define span_bold(str) ("" + str + "") -#define span_boldannounce(str) ("" + str + "") -#define span_boldnotice(str) ("" + str + "") -#define span_boldwarning(str) ("" + str + "") -#define span_centcomradio(str) ("" + str + "") -#define span_changeling(str) ("" + str + "") -#define span_clown(str) ("" + str + "") -#define span_colossus(str) ("" + str + "") -#define span_command_headset(str) ("" + str + "") -#define span_comradio(str) ("" + str + "") -#define span_cult(str) ("" + str + "") -#define span_cultbold(str) ("" + str + "") -#define span_cultboldtalic(str) ("" + str + "") -#define span_cultitalic(str) ("" + str + "") -#define span_cultlarge(str) ("" + str + "") -#define span_danger(str) ("" + str + "") -#define span_deadsay(str) ("" + str + "") -#define span_deconversion_message(str) ("" + str + "") -#define span_drone(str) ("" + str + "") -#define span_engradio(str) ("" + str + "") -#define span_extremelybig(str) ("" + str + "") -#define span_ghostalert(str) ("" + str + "") -#define span_green(str) ("" + str + "") -#define span_greenannounce(str) ("" + str + "") -#define span_greenteamradio(str) ("" + str + "") -#define span_greentext(str) ("" + str + "") -#define span_hear(str) ("" + str + "") -#define span_hidden(str) ("") -#define span_hierophant(str) ("" + str + "") -#define span_hierophant_warning(str) ("" + str + "") -#define span_highlight(str) ("" + str + "") -#define span_his_grace(str) ("" + str + "") -#define span_holoparasite(str) ("" + str + "") -#define span_hypnophrase(str) ("" + str + "") -#define span_icon(str) ("" + str + "") -#define span_info(str) ("" + str + "") -#define span_interface(str) ("" + str + "") -#define span_looc(str) ("" + str + "") -#define span_medal(str) ("" + str + "") -#define span_medradio(str) ("" + str + "") -#define span_memo(str) ("" + str + "") -#define span_memoedit(str) ("" + str + "") -#define span_mind_control(str) ("" + str + "") -#define span_minorannounce(str) ("" + str + "") -#define span_monkey(str) ("" + str + "") -#define span_monkeyhive(str) ("" + str + "") -#define span_monkeylead(str) ("" + str + "") -#define span_name(str) ("" + str + "") -#define span_narsie(str) ("" + str + "") -#define span_narsiesmall(str) ("" + str + "") -#define span_nicegreen(str) ("" + str + "") -#define span_notice(str) ("" + str + "") -#define span_noticealien(str) ("" + str + "") -#define span_ooc(str) ("" + str + "") -#define span_papyrus(str) ("" + str + "") -#define span_phobia(str) ("" + str + "") -#define span_prefix(str) ("" + str + "") -#define span_purple(str) ("" + str + "") -#define span_radio(str) ("" + str + "") -#define span_reallybig(str) ("" + str + "") -#define span_red(str) ("" + str + "") -#define span_redteamradio(str) ("" + str + "") -#define span_redtext(str) ("" + str + "") -#define span_resonate(str) ("" + str + "") -#define span_revenbignotice(str) ("" + str + "") -#define span_revenboldnotice(str) ("" + str + "") -#define span_revendanger(str) ("" + str + "") -#define span_revenminor(str) ("" + str + "") -#define span_revennotice(str) ("" + str + "") -#define span_revenwarning(str) ("" + str + "") -#define span_robot(str) ("" + str + "") -#define span_rose(str) ("" + str + "") -#define span_sans(str) ("" + str + "") -#define span_sciradio(str) ("" + str + "") -#define span_secradio(str) ("" + str + "") -#define span_servradio(str) ("" + str + "") -#define span_singing(str) ("" + str + "") -#define span_slime(str) ("" + str + "") -#define span_small(str) ("" + str + "") -#define span_smallnotice(str) ("" + str + "") -#define span_smallnoticeital(str) ("" + str + "") -#define span_spider(str) ("" + str + "") -#define span_suicide(str) ("" + str + "") -#define span_suppradio(str) ("" + str + "") -#define span_swarmer(str) ("" + str + "") -#define span_syndradio(str) ("" + str + "") -#define span_tape_recorder(str) ("" + str + "") -#define span_tinynotice(str) ("" + str + "") -#define span_tinynoticeital(str) ("" + str + "") -#define span_unconscious(str) ("" + str + "") -#define span_userdanger(str) ("" + str + "") -#define span_warning(str) ("" + str + "") -#define span_yell(str) ("" + str + "") -#define span_yellowteamradio(str) ("" + str + "" - -// VORE Specific stuff after this point // Sorted by however I felt like it -#define span_game_say(str) ("" + str + "" -#define span_emote_subtle(str) ("" + str + "" -#define span_emote(str) ("" + str + "" \ No newline at end of file +// We have two other ways of doing this, so why not a third. This one atleast has more span options. +#define span_ooc(str) ("" + str + "") +#define span_looc(str) ("" + str + "") + +#define span_deadsay(str) ("" + str + "") +#define span_radio(str) ("" + str + "") +#define span_deptradio(str) ("" + str + "") +#define span_newscaster(str) ("" + str + "") + +#define span_comradio(str) ("" + str + "") +#define span_syndradio(str) ("" + str + "") +#define span_centradio(str) ("" + str + "" +#define span_airadio(str) ("" + str + "") +#define span_entradio(str) ("" + str + "") + +#define span_secradio(str) ("" + str + "") +#define span_engradio(str) ("" + str + "") +#define span_medradio(str) ("" + str + "") +#define span_sciradio(str) ("" + str + "") +#define span_supradio(str) ("" + str + "" +#define span_srvradio(str) ("" + str + "") +#define span_expradio(str) ("" + str + "") + +#define span_name(str) ("" + str + "") +#define span_say(str) ("" + str + "") +#define span_alert(str) ("" + str + "") +#define span_ghostalert(str) ("" + str + "") + + +#define span_emote(str) ("" + str + "") +#define span_emote_subtle(str) ("" + str + "") + +#define span_attack(str) ("" + str + "") +#define span_moderate(str) ("" + str + "") +#define span_disarm(str) ("" + str + "") +#define span_passive(str) ("" + str + "") + +#define span_critical(str) ("" + str + "") +#define span_danger(str) ("" + str + "") +#define span_warning(str) ("" + str + "") +#define span_rose(str) ("" + str + "") +#define span_info(str) ("" + str + "" +#define span_notice(str) ("" + str + "") +#define span_alium(str) ("" + str + "") +#define span_cult(str) ("" + str + "") + +#define span_reflex_shoot(str) ("" + str + "") + +/* Languages */ + +#define span_alien(str) ("" + str + "") +#define span_tajaran(str) ("" + str + "") +#define span_tajaran_signlang(str) ("" + str + "") +#define span_akhani(str) ("" + str + "") +#define span_skrell(str) ("" + str + "") +#define span_skrellfar(str) ("" + str + "") +#define span_soghun(str) ("" + str + "") +#define span_solcom(str) ("" + str + "") +#define span_changeling(str) ("" + str + "") +#define span_sergal(str) ("" + str + "") +#define span_birdsongc(str) ("" + str + "") +#define span_vulpkanin(str) ("" + str + "") +#define span_enochian(str) ("" + str + "") +#define span_daemon(str) ("" + str + "") +#define span_bug(str) ("" + str + "") +#define span_vox(str) ("" + str + "") +#define span_zaddat(str) ("" + str + "") +#define span_promethean(str) ("" + str + "") +#define span_rough(str) ("" + str + "") +#define span_say_quote(str) ("" + str + "") +#define span_terminus(str) ("" + str + "") +#define span_interface(str) ("" + str + "") +#define span_spacer(str) ("" + str + "") +#define span_blob(str) ("" + str + "") + +#define span_debug_error(str) ("" + str + "") +#define span_debug_warning(str) ("" + str + "") +#define span_debug_info(str) ("" + str + "") +#define span_debug_debug(str) ("" + str + "") +#define span_debug_trace(str) ("" + str + "") + +#define span_black(str) ("" + str + "") +#define span_darkgray(str) ("" + str + "") +#define span_gray(str) ("" + str + "") +#define span_red(str) ("" + str + "") +#define span_orange(str) ("" + str + "") +#define span_blue(str) ("" + str + "") +#define span_green(str) ("" + str + "") \ No newline at end of file diff --git a/code/datums/managed_browsers/changelingevolution.dm b/code/datums/managed_browsers/changelingevolution.dm new file mode 100644 index 0000000000..4458604b9b --- /dev/null +++ b/code/datums/managed_browsers/changelingevolution.dm @@ -0,0 +1,167 @@ +/client + var/datum/managed_browser/changelingevolution/changelingevolution = null + +/datum/managed_browser/changelingevolution + base_browser_id = "evolution_tree" + title = "Evolution Tree" + size_x = 480 + size_y = 600 + var/textbody = null + +/datum/managed_browser/changelingevolution/New(client/new_client) + if(!new_client.mob || !new_client.mob.mind || !new_client.mob.mind.changeling) + message_admins("[new_client] tried to access changeling evolutions while not changeling.") + qdel(src) + + ..() + +/datum/managed_browser/changelingevolution/Destroy() + if(my_client) + my_client.changelingevolution = null + return ..() + +/datum/managed_browser/changelingevolution/get_html() + var/list/dat = list("") + var/geneticpoints_current = my_client.mob.mind.changeling.geneticpoints + var/geneticpoints_max = my_client.mob.mind.changeling.max_geneticpoints + + dat += "
Genetic Points Available: [geneticpoints_current] / [geneticpoints_max]
" + dat += "Obtain more by feeding on your own kind.

" + dat += "What am I?

" + dat += "Inherent" + dat += "Armor" + dat += "Weapons" + dat += "Stings" + dat += "Shrieks" + dat += "Health" + dat += "Enhancements
" + if(textbody) + dat += "" + dat += "[textbody]" + dat += "
" + dat += "" + + return dat.Join() + +/datum/managed_browser/changelingevolution/Topic(href, href_list[]) + if(!my_client) + return FALSE + + if(href_list["close"]) + return + + if(href_list["inherent"]) + generate_abilitylist(CHANGELING_POWER_INHERENT) + + if(href_list["armor"]) + generate_abilitylist(CHANGELING_POWER_ARMOR) + + if(href_list["weapons"]) + generate_abilitylist(CHANGELING_POWER_WEAPONS) + + if(href_list["stings"]) + generate_abilitylist(CHANGELING_POWER_STINGS) + + if(href_list["shrieks"]) + generate_abilitylist(CHANGELING_POWER_SHRIEKS) + + if(href_list["health"]) + generate_abilitylist(CHANGELING_POWER_HEALTH) + + if(href_list["enhancements"]) + generate_abilitylist(CHANGELING_POWER_ENHANCEMENTS) + + if(href_list["evolve"]) + var/datum/mind/M = my_client.mob.mind + var/datum/changeling/C = my_client.mob.mind.changeling + var/datum/power/changeling/Thepower = href_list["evolve"] + + for (var/datum/power/changeling/P in powerinstances) + if(P.name == Thepower) + Thepower = P + break + + if(!istype(M)) + return + + if(Thepower == null) + to_chat(M.current, "Purchase failed. Inform a dev of this error.") + return + + if(Thepower in C.purchased_powers) + to_chat(M.current, "You already have this ability! Inform a dev of this error.") /// Should not be possible + return + + if(C.geneticpoints < Thepower.genomecost) + to_chat(M.current, "We cannot evolve this... yet. We must acquire more DNA.") + return + + C.purchased_powers += Thepower /// Set it to purchased + C.geneticpoints -= Thepower.genomecost + generate_abilitylist(Thepower.power_category) /// Refresh the UI + + my_client.mob.mind.changeling.purchasePower(M, Thepower) + + if(href_list["tutorial"]) + textbody = "
What am I?

" + textbody += "" + textbody += "You are a changeling, a creature empowered with genetic-based abilities that change your body in bizarre ways." + textbody += " It's probably best the crew doesn't know about your power -- at least not right away.

" + textbody += "What a changeling is, however, is up to you. Are you a strange alien impersonating crew? Are you a" + textbody += " normal crewmember infected with a parasite? An experiment gone wrong? It's up to you to make the story.

" + textbody += "Of course, you need to know how it works to begin with.

" + textbody += "Your abilities cost chemicals that your body will slowly regenerate with varying speeds based on enhancements obtained." + textbody += " There are a set of inherent abilities you will always have while the rest may be purchased through genomes.

" + textbody += "You may obtain more genomes if you find another changeling and absorb them, but this is not required. If you've found " + textbody += "your abilities aren't to your liking, you have up to two re-adapts available, and these may be refilled by absorbing anyone -- including monkeys.

" + textbody += "Good luck and remember, killing isn't always the end goal." + display() + +/datum/managed_browser/changelingevolution/proc/generate_abilitylist(cat) + var/list/ability_list = list() + var/info = "" + var/catname = "" + for(var/datum/power/changeling/P in powerinstances) + if(P.power_category == cat) + ability_list[++ability_list.len] = P + switch(cat) + if(CHANGELING_POWER_INHERENT) + catname = "Inherent" + info = "These powers are inherent to your kind and will always be accessible, provided you have the chemicals to use them." + if(CHANGELING_POWER_ARMOR) + catname = "Armor" + info = "These abilities will provide you with space protection -- and potentially armor." + if(CHANGELING_POWER_WEAPONS) + catname = "Weapons" + info = "These abilities will provide you the means to fight back." + if(CHANGELING_POWER_STINGS) + catname = "Stings" + info = "These abilities provide the means to sting organic beings for various effects -- though you must be close enough, and they must have exposed flesh." + if(CHANGELING_POWER_SHRIEKS) + catname = "Shrieks" + info = "These abilities enhance your vocal chords, empowering your screams." + if(CHANGELING_POWER_HEALTH) + catname = "Health" + info = "These abilities will enhance your health or aid you in mending your wounds." + if(CHANGELING_POWER_ENHANCEMENTS) + catname = "Enhancements" + info = "These abilities enhance you in various ways." + create_textbody(ability_list, catname, info) + +/datum/managed_browser/changelingevolution/proc/create_textbody(ability_list, cat, catinfo) + textbody = "
[cat] Skills
" + textbody += "[catinfo]


" + for(var/A in ability_list) + var/datum/power/changeling/powerdata = A + textbody += "
[initial(powerdata.name)]
" + textbody += "[initial(powerdata.desc)]

" + textbody += "[powerdata.helptext]
" + if(powerdata.enhancedtext != "") + textbody += "WHEN EHANCED: [powerdata.enhancedtext]
" + if(powerdata in my_client.mob.mind.changeling.purchased_powers) + textbody += "
This ability is already evolved!
" + else if(cat != "Inherent") + textbody += "
Cost: [powerdata.genomecost]
" + textbody += "
Evolve
" + textbody += "" + display() diff --git a/code/game/objects/random/misc_vr.dm b/code/game/objects/random/misc_vr.dm index 3044ac31d6..21ca60771a 100644 --- a/code/game/objects/random/misc_vr.dm +++ b/code/game/objects/random/misc_vr.dm @@ -191,3 +191,27 @@ prob(1);/obj/item/weapon/flame/lighter/random, prob(1);/obj/item/weapon/storage/wallet/random, prob(1);/obj/random/cutout) + +/obj/random/instrument + name = "random instrument" + desc = "This is a random instrument." + icon = 'icons/obj/musician.dmi' + icon_state = "violin" + spawn_nothing_percentage = 0 + +/obj/random/instrument/item_to_spawn() + return pick(prob(5);/obj/item/instrument/violin, + prob(5);/obj/item/instrument/banjo, + prob(5);/obj/item/instrument/guitar, + prob(5);/obj/item/instrument/eguitar, + prob(5);/obj/item/instrument/accordion, + prob(5);/obj/item/instrument/trumpet, + prob(5);/obj/item/instrument/saxophone, + prob(5);/obj/item/instrument/trombone, + prob(5);/obj/item/instrument/recorder, + prob(5);/obj/item/instrument/harmonica, + prob(1);/obj/item/instrument/bikehorn, + prob(5);/obj/item/instrument/piano_synth, + prob(5);/obj/item/instrument/glockenspiel, + prob(1);/obj/item/instrument/musicalmoth + ) diff --git a/code/modules/emotes/definitions/human.dm b/code/modules/emotes/definitions/human.dm index a35d4f1d67..b8571fa164 100644 --- a/code/modules/emotes/definitions/human.dm +++ b/code/modules/emotes/definitions/human.dm @@ -11,7 +11,7 @@ . = ..() /decl/emote/human/deathgasp/get_emote_message_3p(var/mob/living/carbon/human/user) - return "USER [user.species.get_death_message(user)]" + return "[user.species.get_death_message(user)]" /decl/emote/human/swish key = "swish" diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm index 0f102110e8..c213161a3b 100644 --- a/code/modules/vehicles/cargo_train.dm +++ b/code/modules/vehicles/cargo_train.dm @@ -129,6 +129,8 @@ /obj/vehicle/train/engine/turn_on() if(!key) return + if(!cell) + return else ..() update_stats() @@ -230,7 +232,9 @@ if (on) to_chat(usr, "You start [src]'s engine.") else - if(cell.charge < charge_use) + if(!cell) + to_chat(usr, "[src] doesn't appear to have a power cell!") + else if(cell.charge < charge_use) to_chat(usr, "[src] is out of power.") else to_chat(usr, "[src]'s engine won't start.") diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index dcb909a2f5..b9eada1d12 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -193,6 +193,8 @@ /obj/vehicle/proc/turn_on() if(!mechanical || stat) return FALSE + if(!cell) + return FALSE if(powered && cell.charge < charge_use) return FALSE on = 1 diff --git a/code/modules/xenoarcheaology/effects/poltergeist.dm b/code/modules/xenoarcheaology/effects/poltergeist.dm index 5b270fd38c..c0cc034938 100644 --- a/code/modules/xenoarcheaology/effects/poltergeist.dm +++ b/code/modules/xenoarcheaology/effects/poltergeist.dm @@ -15,7 +15,7 @@ if(valid_targets.len) var/obj/obj_to_throw = pick(valid_targets) - obj_to_throw.visible_message("\The [obj_to_throw] levitates, befure hurtling toward [target]!") + obj_to_throw.visible_message("\The [obj_to_throw] levitates, before hurtling toward [target]!") obj_to_throw.throw_at(target, world.view, min(40, damage * GetAnomalySusceptibility(target))) /datum/artifact_effect/poltergeist/DoEffectTouch(var/mob/user) diff --git a/maps/groundbase/gb-z1.dmm b/maps/groundbase/gb-z1.dmm index d3715c2ee1..00ee0c63c3 100644 --- a/maps/groundbase/gb-z1.dmm +++ b/maps/groundbase/gb-z1.dmm @@ -48,6 +48,9 @@ /obj/machinery/computer/arcade/battle{ dir = 8 }, +/obj/structure/sign/painting/library_secure{ + pixel_x = 30 + }, /turf/simulated/floor/tiled/dark, /area/groundbase/civilian/bar) "ah" = ( @@ -1137,6 +1140,12 @@ /obj/effect/landmark/start/medical, /turf/simulated/floor/tiled/white, /area/groundbase/medical/office) +"cT" = ( +/obj/structure/sign/painting/library_secure{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled/dark, +/area/groundbase/civilian/bar) "cU" = ( /obj/item/weapon/stock_parts/manipulator, /obj/item/weapon/stock_parts/matter_bin, @@ -2067,6 +2076,9 @@ /obj/machinery/firealarm{ dir = 4 }, +/obj/structure/sign/painting/library_secure{ + pixel_y = -30 + }, /turf/simulated/floor/lino, /area/groundbase/civilian/cafe) "fk" = ( @@ -2797,6 +2809,13 @@ "gW" = ( /turf/simulated/floor/lino, /area/groundbase/civilian/cafe) +"gX" = ( +/obj/structure/table/bench/padded, +/obj/structure/sign/painting/library_secure{ + pixel_x = -30 + }, +/turf/simulated/floor/tiled/dark, +/area/groundbase/civilian/bar) "gY" = ( /obj/machinery/telecomms/hub/preset/groundbase, /turf/simulated/floor/tiled/dark{ @@ -3067,6 +3086,9 @@ /turf/simulated/wall, /area/groundbase/medical/resleeving) "hM" = ( +/obj/structure/sign/painting/library_secure{ + pixel_y = -30 + }, /turf/simulated/floor/tiled/dark, /area/groundbase/medical/autoresleeving) "hN" = ( @@ -3447,6 +3469,12 @@ "iH" = ( /turf/simulated/wall/r_wall, /area/maintenance/groundbase/level1/netunnel) +"iI" = ( +/obj/structure/sign/painting/library_secure{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled/dark, +/area/groundbase/security/briefing) "iJ" = ( /obj/structure/table/rack{ dir = 8; @@ -3484,6 +3512,15 @@ }, /turf/simulated/floor/tiled, /area/groundbase/engineering/engine) +"iO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/sign/painting/library_secure{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/medical/equipment) "iP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -6106,6 +6143,10 @@ dir = 4 }, /obj/machinery/light, +/obj/structure/table/reinforced, +/obj/machinery/photocopier/faxmachine{ + department = "Engineering" + }, /turf/simulated/floor/tiled, /area/groundbase/engineering/lobby) "pf" = ( @@ -6829,6 +6870,9 @@ /obj/structure/bed/chair/wood{ dir = 4 }, +/obj/structure/sign/painting/library_secure{ + pixel_y = 30 + }, /turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "qY" = ( @@ -7258,6 +7302,15 @@ /obj/machinery/portable_atmospherics/powered/pump/filled, /turf/simulated/floor/tiled/techmaint, /area/groundbase/engineering/atmos) +"rS" = ( +/obj/structure/closet/walllocker_double{ + pixel_y = 28 + }, +/obj/random/instrument, +/obj/random/instrument, +/obj/item/instrument/guitar, +/turf/simulated/floor/wood, +/area/groundbase/civilian/gameroom) "rT" = ( /turf/simulated/floor/outdoors/newdirt_nograss/virgo3c{ outdoors = 0 @@ -7666,6 +7719,7 @@ /obj/machinery/light{ dir = 4 }, +/obj/item/weapon/hand_labeler, /turf/simulated/floor/tiled, /area/groundbase/civilian/toolstorage) "sQ" = ( @@ -8657,6 +8711,9 @@ /obj/machinery/alarm{ dir = 8 }, +/obj/structure/sign/painting/library_secure{ + pixel_y = 30 + }, /turf/simulated/floor/lino, /area/groundbase/civilian/cafe) "vp" = ( @@ -8973,6 +9030,9 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, +/obj/structure/sign/painting/library_secure{ + pixel_y = 30 + }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/halle) "vY" = ( @@ -13563,6 +13623,12 @@ /obj/machinery/chemical_dispenser/bar_alc/full, /turf/simulated/floor/lino, /area/groundbase/civilian/bar) +"GS" = ( +/obj/structure/sign/painting/library_secure{ + pixel_x = -30 + }, +/turf/simulated/floor/tiled/dark, +/area/groundbase/security/warden) "GT" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -13590,6 +13656,12 @@ }, /turf/simulated/floor/carpet/sblucarpet, /area/groundbase/security/iaa2) +"GW" = ( +/obj/structure/sign/painting/public{ + pixel_x = -30 + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/gameroom) "GX" = ( /obj/machinery/light{ dir = 8 @@ -13715,6 +13787,9 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/sign/painting/library_secure{ + pixel_x = -30 + }, /turf/simulated/floor/tiled/dark, /area/groundbase/medical/resleeving) "Hl" = ( @@ -14530,8 +14605,17 @@ /obj/item/device/suit_cooling_unit, /obj/item/device/suit_cooling_unit, /obj/structure/table/reinforced, +/obj/structure/sign/painting/library_secure{ + pixel_y = -30 + }, /turf/simulated/floor/tiled, /area/groundbase/engineering/eva) +"Jl" = ( +/obj/structure/sign/painting/public{ + pixel_y = -30 + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/gameroom) "Jm" = ( /obj/machinery/camera/network/civilian{ dir = 1 @@ -15331,6 +15415,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/item/weapon/hand_labeler, /turf/simulated/floor/tiled/dark, /area/groundbase/security/briefing) "Le" = ( @@ -15473,6 +15558,9 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, +/obj/structure/sign/painting/library_secure{ + pixel_y = 30 + }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/halle) "Lv" = ( @@ -17501,6 +17589,15 @@ }, /turf/simulated/floor/bmarble, /area/groundbase/engineering/engine) +"QF" = ( +/obj/structure/bed/chair/backed_red{ + dir = 4 + }, +/obj/structure/sign/painting/public{ + pixel_x = -30 + }, +/turf/simulated/floor/wood, +/area/groundbase/civilian/gameroom) "QG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/black{ dir = 4 @@ -17516,6 +17613,8 @@ /obj/structure/table/reinforced, /obj/item/device/sleevemate, /obj/item/device/denecrotizer/medical, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, /turf/simulated/floor/tiled/white, /area/groundbase/medical/equipment) "QI" = ( @@ -18090,6 +18189,12 @@ outdoors = 0 }, /area/groundbase/command/ai/foyer) +"Sd" = ( +/obj/structure/sign/painting/library_secure{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/medical/lhallway) "Se" = ( /obj/effect/floor_decal/industrial/danger{ dir = 8 @@ -18417,6 +18522,9 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/obj/structure/sign/painting/library_secure{ + pixel_y = -30 + }, /turf/simulated/floor/wood, /area/groundbase/civilian/cafe) "SP" = ( @@ -20382,6 +20490,9 @@ /area/groundbase/command/tcomms/foyer) "XJ" = ( /obj/structure/closet/secure_closet/engineering_personal, +/obj/structure/sign/painting/library_secure{ + pixel_x = 30 + }, /turf/simulated/floor/tiled, /area/groundbase/engineering/workshop) "XK" = ( @@ -25130,7 +25241,7 @@ AE Hq tu vV -ut +gX ut yA pj @@ -25263,7 +25374,7 @@ Fi FF MO pj -ht +cT vV AA ut @@ -26031,7 +26142,7 @@ eR eR AZ cv -AN +iI kh jx az @@ -26612,7 +26723,7 @@ JA Ea TC iw -Pl +GS HW uZ tw @@ -26967,7 +27078,7 @@ ce ce ce pj -ht +cT vV AA ut @@ -29387,13 +29498,13 @@ MO MO MO hq -Yl +GW Me Hl AH Yl Yl -cr +QF hq lE lE @@ -29819,7 +29930,7 @@ tb Fn kC Yl -Yl +Jl hq lE vw @@ -29955,7 +30066,7 @@ Ym oS vL hq -Yl +rS uJ oI kr @@ -33939,7 +34050,7 @@ Tn QC Dx QC -qA +iO DQ oi ze @@ -34501,7 +34612,7 @@ Ni jz qC ox -wA +Sd DQ KY jw diff --git a/maps/groundbase/gb-z2.dmm b/maps/groundbase/gb-z2.dmm index ca598de8c3..a84a1b5dbc 100644 --- a/maps/groundbase/gb-z2.dmm +++ b/maps/groundbase/gb-z2.dmm @@ -670,6 +670,9 @@ /obj/item/weapon/disk/nuclear{ name = "authentication disk" }, +/obj/machinery/light/small{ + dir = 8 + }, /turf/simulated/floor/wood, /area/groundbase/command/captainq) "bQ" = ( @@ -4252,7 +4255,7 @@ "mo" = ( /obj/structure/table/woodentable, /obj/machinery/photocopier/faxmachine{ - department = "Library Conference Room" + department = "Library" }, /turf/simulated/floor/wood, /area/groundbase/civilian/library) @@ -4467,6 +4470,12 @@ /obj/item/weapon/material/minihoe, /turf/simulated/floor/tiled, /area/groundbase/science/xenobot) +"mX" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/groundbase/command/captainq) "mY" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -10729,6 +10738,13 @@ /obj/item/weapon/storage/box/monkeycubes/wolpincubes, /turf/simulated/floor/tiled/white, /area/medical/virology) +"FC" = ( +/obj/machinery/chem_master, +/obj/structure/sign/painting/library_secure{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/medical/Chemistry) "FD" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -12799,6 +12815,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, +/obj/structure/table/standard, +/obj/machinery/photocopier/faxmachine{ + department = "Research"; + pixel_y = 6 + }, /turf/simulated/floor/tiled, /area/groundbase/science/rnd) "Lt" = ( @@ -14144,6 +14165,10 @@ sortType = "Trash" }, /obj/structure/table/standard, +/obj/machinery/photocopier/faxmachine{ + department = "Cargo"; + pixel_y = 6 + }, /turf/simulated/floor/tiled, /area/groundbase/cargo/office) "Pc" = ( @@ -14825,7 +14850,7 @@ /turf/simulated/floor/tiled/dark, /area/groundbase/command/hall) "QY" = ( -/obj/machinery/vending/fitness, +/obj/random/vendorall, /obj/machinery/light/small{ dir = 1 }, @@ -17624,6 +17649,7 @@ /obj/machinery/recharger{ pixel_y = 5 }, +/obj/item/weapon/hand_labeler, /turf/simulated/floor/wood, /area/groundbase/civilian/library) "Zw" = ( @@ -31226,7 +31252,7 @@ tt bx Yu Ur -nS +FC sW TU RJ @@ -32396,7 +32422,7 @@ Bo ia nz no -XW +mX ow ia kr diff --git a/maps/groundbase/gb-z3.dmm b/maps/groundbase/gb-z3.dmm index fbd9550b5f..d2eb7dbd37 100644 --- a/maps/groundbase/gb-z3.dmm +++ b/maps/groundbase/gb-z3.dmm @@ -2015,13 +2015,6 @@ "IS" = ( /turf/simulated/open/virgo3c, /area/groundbase/level3/ne/open) -"IV" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/vending/fitness, -/turf/simulated/floor/tiled/virgo3c, -/area/groundbase/medical/patio) "Jf" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/virgo3c, @@ -14626,7 +14619,7 @@ IS IS IS Hx -IV +yZ OD Hn ky diff --git a/maps/groundbase/groundbase_areas.dm b/maps/groundbase/groundbase_areas.dm index 3b8d2b607a..e5eac280c4 100644 --- a/maps/groundbase/groundbase_areas.dm +++ b/maps/groundbase/groundbase_areas.dm @@ -443,33 +443,42 @@ limit_mob_size = FALSE block_suit_sensors = TRUE forbid_events = TRUE + /area/groundbase/dorms/bathroom name = "Dormitory Bathroom" sound_env = SOUND_ENVIRONMENT_BATHROOM /area/groundbase/dorms/room1 name = "Dorm Room 1" lightswitch = 0 + sound_env = SMALL_SOFTFLOOR /area/groundbase/dorms/room2 name = "Dorm Room 2" lightswitch = 0 + sound_env = SMALL_SOFTFLOOR /area/groundbase/dorms/room3 name = "Dorm Room 3" lightswitch = 0 + sound_env = SMALL_SOFTFLOOR /area/groundbase/dorms/room4 name = "Dorm Room 4" lightswitch = 0 + sound_env = SMALL_SOFTFLOOR /area/groundbase/dorms/room5 name = "Dorm Room 5" lightswitch = 0 + sound_env = SMALL_SOFTFLOOR /area/groundbase/dorms/room6 name = "Dorm Room 6" lightswitch = 0 + sound_env = SMALL_SOFTFLOOR /area/groundbase/dorms/room7 name = "Dorm Room 7" lightswitch = 0 + sound_env = SMALL_SOFTFLOOR /area/groundbase/dorms/room8 name = "Dorm Room 8" lightswitch = 0 + sound_env = SMALL_SOFTFLOOR /area/maintenance/groundbase/substation name = "Substation" diff --git a/vorestation.dme b/vorestation.dme index 7abbcab90a..34254871d9 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -86,6 +86,7 @@ #include "code\__defines\shuttle.dm" #include "code\__defines\sound.dm" #include "code\__defines\spaceman_dmm.dm" +#include "code\__defines\span_vr.dm" #include "code\__defines\species_languages.dm" #include "code\__defines\species_languages_vr.dm" #include "code\__defines\species_languages_YW.dm" @@ -3843,6 +3844,7 @@ #include "code\modules\research\designs\weapons_yw.dm" #include "code\modules\research\designs\xenoarch_toys.dm" #include "code\modules\research\designs\xenobio_toys.dm" +#include "code\modules\research\designs\xenobio_toys_vr.dm" #include "code\modules\research\designs\circuits\ai_modules.dm" #include "code\modules\research\designs\circuits\ai_modules_vr.dm" #include "code\modules\research\designs\circuits\circuits.dm" @@ -4098,6 +4100,7 @@ #include "code\modules\vore\eating\silicon_vr.dm" #include "code\modules\vore\eating\simple_animal_vr.dm" #include "code\modules\vore\eating\slipvore_vr.dm" +#include "code\modules\vore\eating\stumblevore_vr.dm" #include "code\modules\vore\eating\transforming_vr.dm" #include "code\modules\vore\eating\vore_vr.dm" #include "code\modules\vore\eating\vorehooks_vr.dm" @@ -4204,6 +4207,7 @@ #include "code\modules\xenobio\items\slimepotions.dm" #include "code\modules\xenobio\items\slimepotions_vr.dm" #include "code\modules\xenobio\items\weapons.dm" +#include "code\modules\xenobio\items\weapons_vr.dm" #include "code\modules\xenobio\machinery\processor.dm" #include "code\modules\xgm\xgm_gas_data.dm" #include "code\modules\xgm\xgm_gas_mixture.dm"