diff --git a/_maps/shuttles/emergency_medisim.dmm b/_maps/shuttles/emergency_medisim.dmm new file mode 100644 index 00000000000..2bab1c11380 --- /dev/null +++ b/_maps/shuttles/emergency_medisim.dmm @@ -0,0 +1,2401 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aB" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"aG" = ( +/turf/closed/indestructible/fakeglass, +/area/shuttle/escape/simulation) +"aS" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/obj/structure/closet/emcloset, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"cc" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"cL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"dg" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"eb" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"eu" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 9 + }, +/obj/structure/railing/corner, +/turf/template_noop, +/area/shuttle/escape) +"eX" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing, +/turf/template_noop, +/area/shuttle/escape) +"fa" = ( +/obj/machinery/door/airlock/external{ + name = "Engine Maintenance Access" + }, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"ft" = ( +/obj/machinery/computer/med_data, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"fL" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating, +/area/shuttle/escape) +"fW" = ( +/obj/item/reagent_containers/glass/bottle/epinephrine{ + pixel_x = 6 + }, +/obj/item/reagent_containers/glass/bottle/multiver{ + pixel_x = -3 + }, +/obj/item/reagent_containers/glass/bottle/epinephrine{ + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/reagent_containers/glass/bottle/multiver{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = 3; + pixel_y = -2 + }, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = 4; + pixel_y = 1 + }, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = 2; + pixel_y = 8 + }, +/obj/structure/table/reinforced, +/obj/item/binoculars, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"gb" = ( +/obj/effect/turf_decal/sand, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"gj" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/shuttle/escape) +"gt" = ( +/obj/item/candle/infinite{ + anchored = 1; + pixel_y = 8 + }, +/obj/structure/table/wood/fancy/blue, +/turf/open/indestructible/binary, +/area/shuttle/escape/simulation) +"gP" = ( +/obj/structure/rack, +/obj/item/toy/crayon/blue, +/obj/item/toy/crayon/blue{ + pixel_x = 8 + }, +/obj/item/toy/crayon/blue{ + pixel_x = 4 + }, +/obj/item/toy/crayon/blue{ + pixel_x = -4 + }, +/turf/open/floor/plasteel/chapel{ + dir = 1 + }, +/area/shuttle/escape/simulation) +"he" = ( +/obj/structure/rack, +/obj/item/reagent_containers/food/drinks/soda_cans/tonic, +/obj/item/reagent_containers/food/drinks/soda_cans/tonic, +/obj/item/reagent_containers/food/drinks/soda_cans/tonic, +/obj/item/reagent_containers/food/drinks/soda_cans/tonic, +/turf/open/floor/plasteel/chapel{ + dir = 4 + }, +/area/shuttle/escape/simulation) +"ho" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/escape) +"hr" = ( +/obj/structure/table/optable, +/obj/item/surgical_drapes, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"ht" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"hw" = ( +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"hV" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 9 + }, +/turf/template_noop, +/area/shuttle/escape) +"il" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"in" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + active_power_usage = 0; + idle_power_usage = 0; + use_power = 0 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"ir" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"iQ" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"jf" = ( +/turf/open/floor/plasteel/chapel{ + dir = 8 + }, +/area/shuttle/escape/simulation) +"jQ" = ( +/obj/structure/rack, +/obj/item/toy/crayon/red{ + pixel_x = -4 + }, +/obj/item/toy/crayon/red{ + pixel_x = 4 + }, +/obj/item/toy/crayon/red, +/obj/item/toy/crayon/red, +/obj/item/toy/crayon/red{ + pixel_x = 8 + }, +/turf/open/floor/plasteel/chapel{ + dir = 8 + }, +/area/shuttle/escape/simulation) +"jV" = ( +/obj/structure/railing/corner, +/turf/open/floor/stone, +/area/shuttle/escape/simulation) +"jY" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"km" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/rack, +/obj/item/flashlight/flare/torch, +/obj/item/flashlight/flare/torch, +/obj/item/flashlight/flare/torch, +/obj/item/flashlight/flare/torch, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"ku" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/escape) +"kB" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/escape) +"kO" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/escape) +"kS" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"lg" = ( +/obj/structure/fluff/big_chain{ + pixel_y = 9 + }, +/obj/structure/lattice/catwalk, +/turf/open/chasm, +/area/shuttle/escape/simulation) +"ll" = ( +/obj/item/scalpel{ + pixel_y = 12 + }, +/obj/item/circular_saw, +/obj/item/retractor{ + pixel_x = 4 + }, +/obj/item/hemostat{ + pixel_x = -4 + }, +/obj/item/clothing/gloves/color/latex, +/obj/item/clothing/mask/surgical, +/obj/structure/table/reinforced, +/obj/item/surgicaldrill, +/obj/item/cautery, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"ls" = ( +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"mq" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/stone, +/area/shuttle/escape/simulation) +"np" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"nA" = ( +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"nD" = ( +/obj/machinery/stasis, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"oK" = ( +/obj/machinery/teambuilder/blue, +/turf/open/indestructible/binary, +/area/shuttle/escape/simulation) +"oY" = ( +/obj/effect/gibspawner/human, +/turf/open/floor/plating, +/area/shuttle/escape/simulation) +"pD" = ( +/obj/structure/trap/ctf/blue{ + name = "historically accurate magical runes" + }, +/turf/open/floor/stone, +/area/shuttle/escape/simulation) +"pF" = ( +/turf/closed/indestructible/iron, +/area/shuttle/escape/simulation) +"pL" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"qm" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"qC" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_y = -1 + }, +/obj/item/storage/toolbox/emergency{ + pixel_x = 3; + pixel_y = -5 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"qM" = ( +/obj/item/defibrillator/loaded, +/obj/structure/table/reinforced, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"qS" = ( +/obj/machinery/computer/emergency_shuttle{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"qY" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"rE" = ( +/obj/item/storage/firstaid/toxin, +/obj/item/storage/firstaid/o2{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/table/reinforced, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"rG" = ( +/obj/machinery/capture_the_flag/medisim/blue, +/turf/open/indestructible/binary, +/area/shuttle/escape/simulation) +"rK" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/stone, +/area/shuttle/escape/simulation) +"rQ" = ( +/obj/item/ctf/blue/medisim, +/turf/open/floor/mineral/diamond, +/area/shuttle/escape/simulation) +"rT" = ( +/obj/structure/mineral_door/iron, +/turf/open/floor/stone, +/area/shuttle/escape/simulation) +"rU" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"rX" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"sk" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 8 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"so" = ( +/obj/structure/table/reinforced, +/obj/item/binoculars, +/obj/item/binoculars, +/obj/item/binoculars, +/obj/item/instrument/musicalmoth, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"sy" = ( +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/structure/table/reinforced, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"sH" = ( +/obj/effect/turf_decal/siding/wood/end, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"sS" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/escape) +"tP" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/escape) +"un" = ( +/obj/structure/bed/roller, +/obj/machinery/iv_drip, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"uo" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/escape) +"uG" = ( +/obj/structure/bed/pod{ + desc = "An old medical bed, just waiting for replacement with something up to date."; + name = "medical bed" + }, +/obj/structure/curtain, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"uM" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = 11 + }, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"uW" = ( +/obj/structure/rack, +/obj/item/documents/syndicate/blue, +/turf/open/floor/plasteel/chapel{ + dir = 8 + }, +/area/shuttle/escape/simulation) +"vl" = ( +/obj/item/food/egg/blue, +/obj/structure/rack, +/turf/open/floor/plasteel/chapel, +/area/shuttle/escape/simulation) +"wc" = ( +/obj/structure/flora/ausbushes/brflowers, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"wf" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"wX" = ( +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/shuttle/escape) +"xi" = ( +/obj/structure/flora/ausbushes/genericbush, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"xy" = ( +/obj/machinery/shower{ + dir = 8; + name = "emergency shower" + }, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"xP" = ( +/obj/structure/grille/indestructable, +/turf/open/floor/plating, +/area/shuttle/escape/simulation) +"yw" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"yx" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"zJ" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/decal/remains/human, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"Aa" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"Al" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/rack, +/obj/item/flashlight/flare/torch, +/obj/item/flashlight/flare/torch, +/obj/item/flashlight/flare/torch, +/obj/item/flashlight/flare/torch, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"Aw" = ( +/obj/machinery/door/airlock/external{ + name = "Engine Maintenance Access"; + req_access_txt = "19" + }, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"Be" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall/mineral/titanium, +/area/shuttle/escape) +"BO" = ( +/obj/structure/closet/crate{ + name = "emergency supplies crate" + }, +/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/emergency, +/obj/item/flashlight/flare{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/flashlight/flare{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/crowbar, +/obj/item/wrench, +/obj/item/radio, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"Ck" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"Cv" = ( +/obj/machinery/drone_dispenser{ + desc = "A hefty machine that periodically creates a pair of binoculars. Really, Nanotrasen? We're getting this lazy?"; + dispense_type = /obj/item/binoculars; + end_create_message = "dispenses a pair of binoculars."; + glass_cost = 0; + maximum_idle = 1; + metal_cost = 0; + name = "binoculars fabricator"; + power_used = 0; + starting_amount = 25000 + }, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"Cy" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"CM" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"CT" = ( +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"CY" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"Do" = ( +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"DO" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/crowbar, +/obj/item/storage/firstaid/fire, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"Eo" = ( +/obj/structure/railing, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/stone, +/area/shuttle/escape/simulation) +"Et" = ( +/obj/structure/railing, +/turf/open/floor/stone, +/area/shuttle/escape/simulation) +"EN" = ( +/turf/template_noop, +/area/template_noop) +"EV" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"EZ" = ( +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"Fd" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"Fs" = ( +/obj/item/candle/infinite{ + anchored = 1; + pixel_y = 8 + }, +/obj/structure/table/wood/fancy/red, +/turf/open/indestructible/binary, +/area/shuttle/escape/simulation) +"FK" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"FT" = ( +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/machinery/door/morgue{ + name = "Emergency Supplies" + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"Gv" = ( +/obj/machinery/computer{ + desc = "A computer calculating the medieval times. Uh, wow. Is this bad boy quantum?"; + dir = 8; + name = "Reality Simulation Computer" + }, +/turf/open/floor/circuit/green/anim, +/area/shuttle/escape) +"GQ" = ( +/obj/structure/punji_sticks/spikes, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"Ho" = ( +/turf/open/floor/plasteel/chapel{ + dir = 1 + }, +/area/shuttle/escape/simulation) +"HE" = ( +/obj/structure/bed/roller, +/obj/machinery/iv_drip, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/tiled/blue, +/area/shuttle/escape) +"HR" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"Io" = ( +/obj/item/banner/blue{ + anchored = 1 + }, +/turf/closed/indestructible/iron, +/area/shuttle/escape/simulation) +"Is" = ( +/obj/structure/flora/ausbushes/fernybush, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"JC" = ( +/obj/machinery/computer/crew{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"JD" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/open/floor/glass, +/area/shuttle/escape) +"JU" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/escape) +"Kb" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"Ki" = ( +/obj/machinery/computer/security{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"Kq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"Kw" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"KF" = ( +/obj/structure/table, +/obj/item/toy/katana{ + desc = "Complementary from NT for all those medieval simulation watchers."; + icon_state = "claymore"; + inhand_icon_state = "claymore"; + name = "replica claymore"; + worn_icon_state = "claymore" + }, +/obj/item/food/popcorn, +/obj/item/binoculars, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"LA" = ( +/obj/item/banner/red{ + anchored = 1 + }, +/turf/closed/indestructible/iron, +/area/shuttle/escape/simulation) +"Mf" = ( +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"Mt" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Escape Shuttle Infirmary" + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"MN" = ( +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"MP" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"Ng" = ( +/obj/effect/turf_decal/sand, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"Nm" = ( +/turf/open/floor/plasteel/chapel{ + dir = 4 + }, +/area/shuttle/escape/simulation) +"NN" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Cockpit"; + req_access_txt = "19" + }, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"NS" = ( +/turf/open/floor/stone, +/area/shuttle/escape/simulation) +"NX" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Cargo Bay Airlock" + }, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"Ob" = ( +/obj/structure/table/reinforced, +/obj/item/folder/red{ + pixel_x = 3 + }, +/obj/item/folder/white{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = -4; + pixel_y = 4 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"Ov" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"OA" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"OZ" = ( +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"Pb" = ( +/obj/machinery/computer/atmos_alert{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"Pi" = ( +/obj/machinery/computer/communications{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"Pr" = ( +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"Pv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/punji_sticks/spikes, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"QC" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"QH" = ( +/obj/structure/rack, +/obj/item/food/egg/red, +/turf/open/floor/plasteel/chapel{ + dir = 4 + }, +/area/shuttle/escape/simulation) +"QR" = ( +/obj/structure/flora/ausbushes/reedbush, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"QS" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/mobile/emergency{ + dir = 1; + dwidth = 6; + height = 26; + name = "Medisim emergency shuttle"; + width = 25 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"Rj" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/plating, +/area/shuttle/escape/simulation) +"Rl" = ( +/turf/open/floor/glass, +/area/shuttle/escape) +"Ry" = ( +/obj/structure/flora/ausbushes/sunnybush, +/obj/effect/decal/remains/human, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"RB" = ( +/obj/structure/sign/departments/security, +/turf/closed/wall/mineral/titanium, +/area/shuttle/escape) +"RJ" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"RK" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig"; + req_access_txt = "2" + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"RV" = ( +/obj/structure/rack, +/obj/item/tank/internals/oxygen/red, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/clothing/mask/gas, +/obj/item/clothing/head/hardhat/red, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"Sf" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_y = -1 + }, +/obj/item/storage/toolbox/emergency{ + pixel_x = 3; + pixel_y = -5 + }, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"Si" = ( +/obj/structure/rack, +/obj/item/crowbar, +/obj/item/wrench, +/obj/item/weldingtool, +/obj/item/wirecutters, +/obj/item/stack/cable_coil, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"Su" = ( +/turf/open/floor/plasteel/chapel, +/area/shuttle/escape/simulation) +"SA" = ( +/obj/structure/flora/ausbushes/palebush, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"SC" = ( +/obj/structure/rack, +/obj/item/reagent_containers/food/drinks/soda_cans/cola, +/obj/item/reagent_containers/food/drinks/soda_cans/cola, +/obj/item/reagent_containers/food/drinks/soda_cans/cola, +/turf/open/floor/plasteel/chapel, +/area/shuttle/escape/simulation) +"SF" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/sand, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"ST" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"SV" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"To" = ( +/obj/structure/closet/crate/medical, +/obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/o2{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/toxin{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/healthanalyzer{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/lazarus_injector, +/mob/living/simple_animal/bot/medbot{ + name = "\improper emergency medibot"; + pixel_x = -3; + pixel_y = 2 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"TE" = ( +/turf/open/chasm, +/area/shuttle/escape/simulation) +"TI" = ( +/obj/item/binoculars, +/obj/structure/table/reinforced, +/obj/item/binoculars, +/obj/item/binoculars, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"TZ" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/stone, +/area/shuttle/escape/simulation) +"Ua" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 10 + }, +/turf/template_noop, +/area/shuttle/escape) +"UH" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"Va" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing, +/turf/template_noop, +/area/shuttle/escape) +"Vn" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -32 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"Vv" = ( +/obj/structure/rack, +/obj/item/documents/syndicate/red, +/turf/open/floor/plasteel/chapel{ + dir = 1 + }, +/area/shuttle/escape/simulation) +"VF" = ( +/obj/structure/flora/ausbushes/pointybush, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"VG" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/stone, +/area/shuttle/escape/simulation) +"Wb" = ( +/obj/structure/lattice/catwalk, +/obj/structure/fluff/big_chain{ + pixel_y = 9 + }, +/turf/open/chasm, +/area/shuttle/escape/simulation) +"Wx" = ( +/obj/structure/railing, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"WA" = ( +/obj/structure/closet/crate/large, +/obj/item/clothing/suit/armor/vest/cuirass, +/obj/item/clothing/suit/armor/vest/cuirass, +/obj/item/clothing/suit/armor/vest/cuirass, +/obj/item/paper/crumpled/retired_designs, +/turf/open/floor/plating, +/area/shuttle/escape) +"WN" = ( +/obj/machinery/light, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"WQ" = ( +/obj/structure/railing/corner, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"Xk" = ( +/obj/structure/closet/crate/critter, +/mob/living/simple_animal/hostile/lizard/space{ + name = "Stows-Away" + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"Xq" = ( +/obj/structure/railing, +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"Xv" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/escape) +"Xw" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/sandy_dirt, +/area/shuttle/escape/simulation) +"XQ" = ( +/obj/structure/flora/ausbushes, +/turf/open/floor/plating/grass, +/area/shuttle/escape/simulation) +"XR" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"XX" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"Ya" = ( +/obj/structure/table/reinforced, +/obj/item/restraints/handcuffs{ + pixel_y = 3 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"Ye" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/handcuffs{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/storage/lockbox/loyalty, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"Yj" = ( +/turf/open/floor/carpet/blue, +/area/shuttle/escape/simulation) +"Yk" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"Yp" = ( +/obj/machinery/teambuilder/red, +/turf/open/indestructible/binary, +/area/shuttle/escape/simulation) +"Yu" = ( +/obj/structure/trap/ctf/red{ + name = "historically accurate magical runes" + }, +/turf/open/floor/stone, +/area/shuttle/escape/simulation) +"YB" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"YC" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 8 + }, +/turf/template_noop, +/area/shuttle/escape) +"YT" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 1 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"YU" = ( +/turf/open/floor/carpet/red, +/area/shuttle/escape/simulation) +"Zf" = ( +/obj/structure/rack, +/obj/item/crowbar, +/obj/item/wrench, +/obj/item/weldingtool, +/obj/item/wirecutters, +/obj/item/stack/cable_coil, +/turf/open/floor/plating, +/area/shuttle/escape) +"Zk" = ( +/obj/machinery/capture_the_flag/medisim/red, +/turf/open/indestructible/binary, +/area/shuttle/escape/simulation) +"Zv" = ( +/obj/item/ctf/red/medisim, +/turf/open/floor/mineral/gold, +/area/shuttle/escape/simulation) +"Zx" = ( +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"ZB" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/escape) +"ZI" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood, +/area/shuttle/escape/simulation) +"ZM" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/template_noop, +/area/shuttle/escape) + +(1,1,1) = {" +EN +EN +EN +EN +EN +EN +EN +EN +EN +gj +gj +Xv +ZB +ZB +ZB +Xv +gj +gj +EN +EN +EN +EN +EN +EN +EN +EN +EN +"} +(2,1,1) = {" +EN +EN +EN +wX +gj +Ck +Ck +Ck +gj +wX +ZB +ZB +JC +qS +Pb +ZB +ZB +wX +gj +Ck +Ck +Ck +gj +wX +EN +EN +EN +"} +(3,1,1) = {" +EN +EN +eu +ho +ku +CY +CY +CY +hV +wX +Aw +Rl +JD +JD +JD +Rl +Aw +wX +Ua +CY +CY +CY +eu +ho +ku +EN +EN +"} +(4,1,1) = {" +EN +gj +eX +gj +eX +Xk +fL +eb +tP +Xv +Xv +DO +Ki +Zx +Pi +YB +Xv +Xv +Va +eb +Ov +WA +eX +gj +eX +gj +EN +"} +(5,1,1) = {" +Xv +Xv +fa +Xv +kB +qC +wX +EN +tP +Xv +Xv +Xv +Xv +NN +Xv +Xv +Xv +Xv +Va +EN +wX +Zf +ZM +Xv +fa +Xv +Xv +"} +(6,1,1) = {" +Xv +aS +Zx +Xv +kO +YC +JU +YC +uo +Xv +CT +Zx +Zx +cc +Zx +Zx +CT +Xv +kO +YC +wX +YC +uo +Xv +Zx +aS +Xv +"} +(7,1,1) = {" +aB +EZ +EZ +Xv +Xv +Xv +ZB +Xv +Xv +Xv +Zx +Zx +Kw +Xv +Pr +Zx +Zx +Xv +Xv +Xv +ZB +Xv +Xv +Xv +EZ +EZ +QS +"} +(8,1,1) = {" +Xv +Zx +EZ +EZ +kS +Zx +Zx +Zx +kS +Zx +Zx +EZ +Kw +ZB +Pr +EZ +Zx +EZ +kS +Zx +Zx +Zx +kS +EZ +EZ +Zx +Xv +"} +(9,1,1) = {" +aB +cc +EZ +Xv +Xv +ZB +ZB +ZB +Xv +Xv +Zx +Zx +Kw +ZB +Pr +Zx +Zx +Xv +Xv +ZB +ZB +ZB +Xv +Xv +EZ +cc +aB +"} +(10,1,1) = {" +sS +Xv +Xv +Xv +EN +EN +EN +EN +EN +Xv +Xv +Zx +Kw +Xv +Pr +Zx +Xv +Xv +EN +EN +EN +EN +EN +Xv +Xv +Xv +sS +"} +(11,1,1) = {" +EN +EN +Xv +Xv +Xv +ZB +ZB +ZB +Xv +Xv +FT +Zx +Zx +kS +Zx +Zx +FT +Xv +Xv +ZB +ZB +ZB +Xv +Xv +Xv +EN +EN +"} +(12,1,1) = {" +EN +Xv +sS +hr +ll +qM +so +un +HE +Xv +sS +Zx +Rl +Rl +Rl +Zx +sS +Xv +Vn +XX +XX +XX +Cy +in +sS +Xv +EN +"} +(13,1,1) = {" +EN +Xv +ft +il +nA +nA +nA +nA +nA +nA +Mt +nA +Rl +Rl +Rl +ls +RK +ls +ls +ls +ls +ls +ls +Ya +Ob +Xv +EN +"} +(14,1,1) = {" +EN +Xv +fW +ir +nD +rE +sy +uG +nA +nA +Be +EV +Rl +Rl +Rl +WN +RB +ls +ls +Yk +Yk +Yk +ls +ls +Ye +Xv +EN +"} +(15,1,1) = {" +EN +Xv +Xv +pF +aG +aG +aG +pF +uM +xy +ZB +Zx +Zx +hw +Zx +Zx +ZB +TI +TI +pF +aG +aG +aG +pF +Xv +Xv +EN +"} +(16,1,1) = {" +EN +Xv +pF +pF +oK +rG +oK +pF +pF +Xv +Xv +ZB +ZB +NX +ZB +ZB +Xv +Xv +pF +pF +Yp +Zk +Yp +pF +pF +Xv +EN +"} +(17,1,1) = {" +EN +aG +aG +NS +pD +oK +pD +NS +aG +aG +Xv +Fd +hw +hw +hw +Fd +Xv +aG +aG +NS +Yu +Yp +Yu +NS +aG +aG +EN +"} +(18,1,1) = {" +EN +aG +gt +Su +NS +pD +NS +Nm +gt +aG +To +hw +hw +hw +hw +hw +RV +aG +Fs +Su +NS +Yu +NS +Nm +Fs +aG +EN +"} +(19,1,1) = {" +EN +aG +gP +jf +Yj +Yj +Yj +Ho +uW +aG +BO +FK +KF +FK +KF +FK +Sf +aG +Vv +jf +YU +YU +YU +Ho +jQ +aG +EN +"} +(20,1,1) = {" +EN +aG +he +Su +Yj +rQ +Yj +Nm +vl +aG +Cv +hw +hw +hw +hw +hw +Si +aG +QH +Su +YU +Zv +YU +Nm +SC +aG +EN +"} +(21,1,1) = {" +EN +pF +gt +jf +Yj +Yj +Yj +Ho +gt +pF +hw +FK +FK +FK +FK +FK +hw +pF +Fs +jf +YU +YU +YU +Ho +Fs +pF +EN +"} +(22,1,1) = {" +EN +pF +Nm +Su +Nm +NS +Su +Nm +Su +pF +iQ +Gv +Gv +Gv +Gv +Gv +np +pF +Nm +Su +Nm +NS +Su +Nm +Su +pF +EN +"} +(23,1,1) = {" +EN +pF +pF +pF +aG +rT +aG +pF +pF +pF +aG +aG +aG +aG +aG +aG +aG +pF +pF +pF +aG +rT +aG +pF +pF +pF +EN +"} +(24,1,1) = {" +EN +EN +pF +NS +NS +NS +NS +pF +wc +MN +GQ +Pv +GQ +GQ +GQ +GQ +GQ +MN +VF +pF +NS +NS +NS +NS +pF +EN +EN +"} +(25,1,1) = {" +pF +pF +pF +jV +pF +TZ +pF +pF +MN +MN +Do +MN +Mf +MN +MN +Ry +SA +dg +MN +pF +pF +TZ +pF +rK +pF +pF +pF +"} +(26,1,1) = {" +pF +Rj +xP +Et +TE +rX +lg +Io +ht +MN +MN +MN +MN +MN +dg +MN +MN +MN +Kb +LA +Wb +rX +TE +VG +xP +oY +pF +"} +(27,1,1) = {" +pF +pF +pF +Et +TE +rX +TE +TE +qY +yw +MN +HR +MN +MP +gb +gb +MN +yw +Wx +TE +TE +rX +TE +VG +pF +pF +pF +"} +(28,1,1) = {" +EN +EN +pF +Et +TE +RJ +Aa +Aa +wf +yx +gb +gb +MP +OA +OZ +gb +SF +yx +WQ +Aa +Aa +ZI +TE +VG +pF +EN +EN +"} +(29,1,1) = {" +pF +pF +pF +Et +lg +TE +TE +TE +qY +yx +MN +gb +Ng +OZ +QC +MN +MN +yx +Xq +TE +TE +TE +lg +VG +pF +pF +pF +"} +(30,1,1) = {" +pF +Rj +xP +Eo +TE +TE +TE +Io +SV +MN +MN +MN +MN +MN +MN +MN +MN +MN +Xw +LA +TE +TE +TE +mq +xP +oY +pF +"} +(31,1,1) = {" +pF +pF +pF +jY +pF +sk +pF +pF +MN +zJ +MN +Is +MN +dg +QR +MN +ST +dg +MN +pF +pF +sk +pF +rU +pF +pF +pF +"} +(32,1,1) = {" +EN +EN +pF +Kq +pL +UH +sH +pF +xi +MN +GQ +GQ +GQ +GQ +GQ +GQ +Pv +MN +XQ +pF +YT +UH +XR +CM +pF +EN +EN +"} +(33,1,1) = {" +EN +EN +pF +km +qm +pF +pF +pF +pF +pF +aG +aG +aG +aG +aG +aG +aG +pF +pF +pF +pF +pF +cL +Al +pF +EN +EN +"} +(34,1,1) = {" +EN +EN +pF +pF +pF +pF +EN +EN +EN +EN +EN +EN +EN +EN +EN +EN +EN +EN +EN +EN +EN +pF +pF +pF +pF +EN +EN +"} diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index a8104a98f8a..8e7d053366f 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -28,6 +28,7 @@ #define SWEDISH /datum/mutation/human/swedish #define CHAV /datum/mutation/human/chav #define ELVIS /datum/mutation/human/elvis +#define MEDIEVAL /datum/mutation/human/medieval #define RADIOACTIVE /datum/mutation/human/radioactive #define GLOWY /datum/mutation/human/glow #define ANTIGLOWY /datum/mutation/human/glow/anti diff --git a/code/__DEFINES/language.dm b/code/__DEFINES/language.dm index 175304e2337..e1cb5cd3fc4 100644 --- a/code/__DEFINES/language.dm +++ b/code/__DEFINES/language.dm @@ -10,6 +10,7 @@ #define LANGUAGE_ABSORB "absorb" #define LANGUAGE_APHASIA "aphasia" +#define LANGUAGE_CTF "ctf" #define LANGUAGE_CULTIST "cultist" #define LANGUAGE_CURATOR "curator" #define LANGUAGE_GLAND "gland" @@ -20,3 +21,4 @@ #define LANGUAGE_SOFTWARE "software" #define LANGUAGE_STONER "stoner" #define LANGUAGE_VOICECHANGE "voicechange" + diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm index d69994a3f7c..b4eb66f3c51 100644 --- a/code/__DEFINES/shuttles.dm +++ b/code/__DEFINES/shuttles.dm @@ -89,4 +89,5 @@ //Shuttle unlocks #define SHUTTLE_UNLOCK_ALIENTECH "abductor" #define SHUTTLE_UNLOCK_BUBBLEGUM "bubblegum" +#define SHUTTLE_UNLOCK_MEDISIM "holodeck" #define SHUTTLE_UNLOCK_NARNAR "narnar" diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index f550005b8c7..bfced97bb00 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -110,6 +110,7 @@ if(!isfloorturf(random_location)) continue var/turf/open/floor/F = random_location + if(!F.air) continue diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm index d0b8ad14498..696efea36a7 100644 --- a/code/datums/mutations/speech.dm +++ b/code/datums/mutations/speech.dm @@ -208,3 +208,43 @@ ..() owner.remove_language(/datum/language/beachbum, TRUE, TRUE, LANGUAGE_STONER) owner.remove_blocked_language(subtypesof(/datum/language) - /datum/language/beachbum, LANGUAGE_STONER) + +/datum/mutation/human/medieval + name = "Medieval" + desc = "A horrible mutation originating from the distant past, thought to have once been a common gene in all of old world Europe." + quality = MINOR_NEGATIVE + text_gain_indication = "You feel like seeking the holy grail!" + text_lose_indication = "You no longer feel like seeking anything." + +/datum/mutation/human/medieval/on_acquiring(mob/living/carbon/human/owner) + if(..()) + return + RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech) + +/datum/mutation/human/medieval/on_losing(mob/living/carbon/human/owner) + if(..()) + return + UnregisterSignal(owner, COMSIG_MOB_SAY) + +/datum/mutation/human/medieval/proc/handle_speech(datum/source, list/speech_args) + SIGNAL_HANDLER + + var/message = speech_args[SPEECH_MESSAGE] + if(message) + message = " [message] " + var/list/medieval_words = strings("medieval_replacement.json", "medieval") + var/list/startings = strings("medieval_replacement.json", "startings") + for(var/key in medieval_words) + var/value = medieval_words[key] + if(islist(value)) + value = pick(value) + if(uppertext(key) == key) + value = uppertext(value) + if(capitalize(key) == key) + value = capitalize(value) + message = replacetextEx(message,regex("\b[REGEX_QUOTE(key)]\b","ig"), value) + message = trim(message) + var/chosen_starting = pick(startings) + message = "[chosen_starting] [message]" + + speech_args[SPEECH_MESSAGE] = message diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index d667b88c7c5..3337420eccd 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -235,6 +235,16 @@ admin_notes = "Due to the limited space for non paying crew, this shuttle may cause a riot." credit_cost = CARGO_CRATE_VALUE * 20 +/datum/map_template/shuttle/emergency/medisim + suffix = "medisim" + name = "Medieval Reality Simulation Dome" + description = "A state of the art simulation dome, loaded onto your shuttle! Watch and laugh at how petty humanity used to be before it reached the stars. Guaranteed to be at least 40% historically accurate." + admin_notes = "Ghosts can spawn in and fight as knights or archers. The CTF auto restarts, so no admin intervention necessary." + credit_cost = 20000 + +/datum/map_template/shuttle/emergency/medisim/prerequisites_met() + return SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_MEDISIM] + /datum/map_template/shuttle/emergency/discoinferno suffix = "discoinferno" name = "Disco Inferno" diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm index c9237f1629d..ee041b25509 100644 --- a/code/game/area/areas/shuttles.dm +++ b/code/game/area/areas/shuttles.dm @@ -144,6 +144,12 @@ name = "Luxurious Emergency Shuttle" area_flags = NOTELEPORT +/area/shuttle/escape/simulation + name = "Medieval Reality Simulation Dome" + icon_state = "shuttlectf" + area_flags = NOTELEPORT + dynamic_lighting = DYNAMIC_LIGHTING_DISABLED + /area/shuttle/escape/arena name = "The Arena" area_flags = NOTELEPORT diff --git a/code/game/machinery/teambuilder.dm b/code/game/machinery/teambuilder.dm index 621d8a33509..daa2a6a9379 100644 --- a/code/game/machinery/teambuilder.dm +++ b/code/game/machinery/teambuilder.dm @@ -14,16 +14,20 @@ ///What radio station is your radio set to when crossed (And human)? var/team_radio = FREQ_COMMON +/obj/machinery/teambuilder/Initialize() + . = ..() + add_filter("teambuilder", 2, list("type" = "outline", "color" = team_color, "size" = 2)) + /obj/machinery/teambuilder/examine_more(mob/user) . = ..() . += "You see a hastily written note on the side, it says '1215-1217, PICK A SIDE'." /obj/machinery/teambuilder/Crossed(atom/movable/AM, oldloc) . = ..() - if(AM.color) + if(AM.get_filter("teambuilder")) return if(isliving(AM) && team_color) - AM.color = team_color + AM.add_filter("teambuilder", 2, list("type" = "outline", "color" = team_color, "size" = 2)) if(ishuman(AM) && team_radio) var/mob/living/carbon/human/human = AM var/obj/item/radio/Radio = human.ears @@ -34,13 +38,11 @@ /obj/machinery/teambuilder/red name = "Teambuilding Machine (Red)" desc = "A machine that, when passed, colors you based on the color of your team. Go red team!" - color = "#ff0000" - team_color = "#ff0000" + team_color = COLOR_RED team_radio = FREQ_CTF_RED /obj/machinery/teambuilder/blue name = "Teambuilding Machine (Blue)" desc = "A machine that, when passed, colors you based on the color of your team. Go blue team!" - color = "#0000ff" - team_color = "#0000ff" + team_color = COLOR_BLUE team_radio = FREQ_CTF_BLUE diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index e3bb252f26b..b702d9bdd1d 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -349,6 +349,8 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb if(anchored) return + . = TRUE + if(resistance_flags & ON_FIRE) var/mob/living/carbon/C = user var/can_handle_hot = FALSE @@ -392,10 +394,12 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb if(!allow_attack_hand_drop(user) || !user.temporarilyRemoveItemFromInventory(src)) return + . = FALSE pickup(user) add_fingerprint(user) if(!user.put_in_active_hand(src, FALSE, FALSE)) user.dropItemToGround(src) + return TRUE /obj/item/proc/allow_attack_hand_drop(mob/user) return TRUE diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index e0e5c382200..49079e6bf88 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -169,7 +169,6 @@ underlays += mutable_appearance('icons/obj/structures.dmi', "grille") //add a grille underlay underlays += mutable_appearance('icons/turf/floors.dmi', "plating") //add the plating underlay, below the grille - /turf/closed/indestructible/opsglass name = "window" icon = 'icons/obj/smooth_structures/plastitanium_window.dmi' @@ -240,6 +239,17 @@ underlay_appearance.icon_state = "necro1" return TRUE +/turf/closed/indestructible/iron + name = "impervious metal wall" + desc = "A wall with tough metal plating." + icon = 'icons/turf/walls/iron_wall.dmi' + icon_state = "iron_wall-0" + base_icon_state = "iron_wall" + smoothing_flags = SMOOTH_BITMASK + smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS) + canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS) + opacity = FALSE + /turf/closed/indestructible/riveted/boss name = "necropolis wall" desc = "A thick, seemingly indestructible stone wall." diff --git a/code/game/turfs/open/floor/misc_floor.dm b/code/game/turfs/open/floor/misc_floor.dm index a1ea9605903..4de85a513e9 100644 --- a/code/game/turfs/open/floor/misc_floor.dm +++ b/code/game/turfs/open/floor/misc_floor.dm @@ -188,3 +188,13 @@ /turf/open/floor/plating/rust/rust_heretic_act() return + +/turf/open/floor/stone + name = "stone brick floor" + desc = "Odd, really, how it looks exactly like the iron walls yet is stone instead of iron. Now, if that's really more of a complaint about\ + the ironness of walls or the stoneness of the floors, that's really up to you. But have you really ever seen iron that dull? I mean, it\ + makes sense for the station to have dull metal walls but we're talking how a rudimentary iron wall would be. Medieval ages didn't even\ + use iron walls, iron walls are actually not even something that exists because iron is an expensive and not-so-great thing to build walls\ + out of. It only makes sense in the context of space because you're trying to keep a freezing vacuum out. Is anyone following me on this? \ + The idea of a \"rudimentary\" iron wall makes no sense at all! Is anything i'm even saying here true? Someone's gotta fact check this!" + icon_state = "stone_floor" diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index a776b2eefa6..571f7225bb3 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2126,7 +2126,7 @@ else if(href_list["ctf_toggle"]) if(!check_rights(R_ADMIN)) return - toggle_all_ctf(usr) + toggle_id_ctf(usr, "centcom") else if(href_list["rebootworld"]) if(!check_rights(R_ADMIN)) diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm index 8c319f145b3..0014e440d49 100644 --- a/code/modules/admin/verbs/secrets.dm +++ b/code/modules/admin/verbs/secrets.dm @@ -152,7 +152,7 @@ dat += "" holder << browse(dat, "window=fingerprints;size=440x410") if("ctfbutton") - toggle_all_ctf(holder) + toggle_id_ctf(holder, "centcom") if("tdomereset") var/delete_mobs = alert("Clear all mobs?","Confirm","Yes","No","Cancel") if(delete_mobs == "Cancel") diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index e6fdcbd6437..49ddbc67fa8 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -7,8 +7,6 @@ #define AMMO_DROP_LIFETIME 300 #define CTF_REQUIRED_PLAYERS 4 - - /obj/item/ctf name = "banner" icon = 'icons/obj/banner.dmi' @@ -30,6 +28,8 @@ var/anyonecanpickup = TRUE var/obj/effect/ctf/flag_reset/reset var/reset_path = /obj/effect/ctf/flag_reset + /// Which area we announce updates on the flag to. Should just generally be the area of the arena. + var/game_area = /area/ctf /obj/item/ctf/Destroy() QDEL_NULL(reset) @@ -39,24 +39,33 @@ . = ..() if(!reset) reset = new reset_path(get_turf(src)) + RegisterSignal(src, COMSIG_PARENT_PREQDELETED, .proc/reset_flag) //just in case CTF has some map hazards (read: chasms). /obj/item/ctf/ComponentInitialize() . = ..() - AddComponent(/datum/component/two_handed) + AddComponent(/datum/component/two_handed, require_twohands = TRUE) /obj/item/ctf/process() - if(is_ctf_target(loc)) //don't reset from someone's hands. + if(is_ctf_target(loc)) //pickup code calls temporary drops to test things out, we need to make sure the flag doesn't reset from return PROCESS_KILL if(world.time > reset_cooldown) - forceMove(get_turf(src.reset)) - for(var/mob/M in GLOB.player_list) - var/area/mob_area = get_area(M) - if(istype(mob_area, /area/ctf)) - to_chat(M, "\The [src] has been returned to base!") - STOP_PROCESSING(SSobj, src) + reset_flag() -//ATTACK HAND IGNORING PARENT RETURN VALUE +/obj/item/ctf/proc/reset_flag(capture = FALSE) + SIGNAL_HANDLER + + forceMove(get_turf(src.reset)) + for(var/mob/M in GLOB.player_list) + var/area/mob_area = get_area(M) + if(istype(mob_area, game_area)) + if(!capture) + to_chat(M, "[src] has been returned to the base!") + STOP_PROCESSING(SSobj, src) + return TRUE //so if called by a signal, it doesn't delete + +//working with attack hand feels like taking my brain and putting it through an industrial pill press so i'm gonna be a bit liberal with the comments /obj/item/ctf/attack_hand(mob/living/user) + //pre normal check item stuff, this is for our special flag checks if(!is_ctf_target(user) && !anyonecanpickup) to_chat(user, "Non-players shouldn't be moving the flag!") return @@ -66,30 +75,30 @@ if(loc == user) if(!user.dropItemToGround(src)) return - anchored = FALSE - pickup(user) - if(!user.put_in_active_hand(src)) - dropped(user) - return - user.set_anchored(TRUE) - user.status_flags &= ~CANPUSH for(var/mob/M in GLOB.player_list) var/area/mob_area = get_area(M) - if(istype(mob_area, /area/ctf)) - to_chat(M, "\The [src] has been taken!") + if(istype(mob_area, game_area)) + to_chat(M, "\The [initial(src.name)] has been taken!") STOP_PROCESSING(SSobj, src) - ..() + anchored = FALSE //normal checks need this to be FALSE to pass + . = ..() //this is the actual normal item checks + if(.) //only apply these flag passives + anchored = TRUE + return + //passing means the user picked up the flag so we can now apply this + user.set_anchored(TRUE) + user.status_flags &= ~CANPUSH /obj/item/ctf/dropped(mob/user) ..() user.set_anchored(FALSE) user.status_flags |= CANPUSH - reset_cooldown = world.time + 200 //20 seconds + reset_cooldown = world.time + 20 SECONDS START_PROCESSING(SSobj, src) for(var/mob/M in GLOB.player_list) var/area/mob_area = get_area(M) - if(istype(mob_area, /area/ctf)) - to_chat(M, "\The [src] has been dropped!") + if(istype(mob_area, game_area)) + to_chat(M, "\The [initial(name)] has been dropped!") anchored = TRUE @@ -129,16 +138,25 @@ desc = "This is where a blue banner used to play capture the flag \ would go." -/proc/toggle_all_ctf(mob/user) +/proc/toggle_id_ctf(user, activated_id, automated = FALSE) var/ctf_enabled = FALSE var/area/A for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines) + if(activated_id != CTF.game_id) + continue ctf_enabled = CTF.toggle_ctf() A = get_area(CTF) for(var/obj/machinery/power/emitter/E in A) E.active = ctf_enabled - message_admins("[key_name_admin(user)] has [ctf_enabled? "enabled" : "disabled"] CTF!") - notify_ghosts("CTF has been [ctf_enabled? "enabled" : "disabled"]!",'sound/effects/ghost2.ogg') + if(user) + message_admins("[key_name_admin(user)] has [ctf_enabled ? "enabled" : "disabled"] CTF!") + else if(automated) + message_admins("CTF has finished a round and automatically restarted.") + notify_ghosts("CTF has automatically restarted after a round finished in [A]!",'sound/effects/ghost2.ogg') + else + message_admins("The players have spoken! Voting has enabled CTF!") + if(!automated) + notify_ghosts("CTF has been [ctf_enabled? "enabled" : "disabled"] in [A]!",'sound/effects/ghost2.ogg') /obj/machinery/capture_the_flag name = "CTF Controller" @@ -146,6 +164,9 @@ icon = 'icons/obj/device.dmi' icon_state = "syndbeacon" resistance_flags = INDESTRUCTIBLE + var/game_id = "centcom" + + var/victory_rejoin_text = "Teams have been cleared. Click on the machines to vote to begin another round." var/team = WHITE_TEAM var/team_span = "" //Capture the Flag scoring @@ -156,16 +177,20 @@ var/control_points = 0 var/control_points_to_win = 180 var/list/team_members = list() + ///assoc list: mob = outfit datum (class) var/list/spawned_mobs = list() var/list/recently_dead_ckeys = list() var/ctf_enabled = FALSE - var/ctf_gear = /datum/outfit/ctf + ///assoc list for classes. If there's only one, it'll just equip. Otherwise, it lets you pick which outfit! + var/list/ctf_gear = list("white" = /datum/outfit/ctf) var/instagib_gear = /datum/outfit/ctf/instagib + var/ammo_type = /obj/effect/ctf/ammo var/list/dead_barricades = list() var/static/arena_reset = FALSE var/static/list/people_who_want_to_play = list() + var/game_area = /area/ctf /obj/machinery/capture_the_flag/Initialize() . = ..() @@ -191,7 +216,7 @@ icon_state = "syndbeacon" team = RED_TEAM team_span = "redteamradio" - ctf_gear = /datum/outfit/ctf/red + ctf_gear = list("red" = /datum/outfit/ctf/red) instagib_gear = /datum/outfit/ctf/red/instagib /obj/machinery/capture_the_flag/blue @@ -199,28 +224,32 @@ icon_state = "bluebeacon" team = BLUE_TEAM team_span = "blueteamradio" - ctf_gear = /datum/outfit/ctf/blue + ctf_gear = list("blue" = /datum/outfit/ctf/blue) instagib_gear = /datum/outfit/ctf/blue/instagib //ATTACK GHOST IGNORING PARENT RETURN VALUE /obj/machinery/capture_the_flag/attack_ghost(mob/user) if(ctf_enabled == FALSE) if(user.client && user.client.holder) - var/response = alert("Enable CTF?", "CTF", "Yes", "No") + var/response = alert("Enable this CTF game?", "CTF", "Yes", "No") if(response == "Yes") - toggle_all_ctf(user) + toggle_id_ctf(user, game_id) return if(!(GLOB.ghost_role_flags & GHOSTROLE_MINIGAME)) to_chat(user, "CTF has been temporarily disabled by admins.") return + for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines) + if(CTF.game_id != game_id && CTF.ctf_enabled) + to_chat(user, "There is already an ongoing game in the [get_area(CTF)]!") + return people_who_want_to_play |= user.ckey var/num = people_who_want_to_play.len var/remaining = CTF_REQUIRED_PLAYERS - num if(remaining <= 0) people_who_want_to_play.Cut() - toggle_all_ctf() + toggle_id_ctf(null, game_id) else to_chat(user, "CTF has been requested. [num]/[CTF_REQUIRED_PLAYERS] have readied up.") @@ -239,7 +268,7 @@ return for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines) - if(CTF == src || CTF.ctf_enabled == FALSE) + if(CTF.game_id != game_id || CTF == src || CTF.ctf_enabled == FALSE) continue if(user.ckey in CTF.team_members) to_chat(user, "No switching teams while the round is going!") @@ -247,31 +276,55 @@ if(CTF.team_members.len < src.team_members.len) to_chat(user, "[src.team] has more team members than [CTF.team]! Try joining [CTF.team] team to even things up.") return - team_members |= user.ckey var/client/new_team_member = user.client if(user.mind && user.mind.current) ctf_dust_old(user.mind.current) spawn_team_member(new_team_member) +//does not add to recently dead, because it dusts and that triggers ctf_qdelled_player /obj/machinery/capture_the_flag/proc/ctf_dust_old(mob/living/body) if(isliving(body) && (team in body.faction)) var/turf/T = get_turf(body) - new /obj/effect/ctf/ammo(T) - recently_dead_ckeys += body.ckey - addtimer(CALLBACK(src, .proc/clear_cooldown, body.ckey), respawn_cooldown, TIMER_UNIQUE) + if(ammo_type) + new ammo_type(T) body.dust() +/obj/machinery/capture_the_flag/proc/ctf_qdelled_player(mob/living/body) + SIGNAL_HANDLER + + recently_dead_ckeys += body.ckey + addtimer(CALLBACK(src, .proc/clear_cooldown, body.ckey), respawn_cooldown, TIMER_UNIQUE) + /obj/machinery/capture_the_flag/proc/clear_cooldown(ckey) recently_dead_ckeys -= ckey /obj/machinery/capture_the_flag/proc/spawn_team_member(client/new_team_member) - var/mob/living/carbon/human/M = new/mob/living/carbon/human(get_turf(src)) + var/datum/outfit/chosen_class + if(ctf_gear.len == 1) //no choices to make + for(var/key in ctf_gear) + chosen_class = ctf_gear[key] + else if(ctf_gear.len > 3) //a lot of choices, so much that we can't use a basic alert + var/result = input(new_team_member, "Select a class.", "CTF") as null|anything in sortList(ctf_gear) + if(!result || !(GLOB.ghost_role_flags & GHOSTROLE_MINIGAME) || (new_team_member.ckey in recently_dead_ckeys) || !isobserver(new_team_member.mob)) + return //picked nothing, admin disabled it, cheating to respawn faster, cheating to respawn... while in game? + chosen_class = ctf_gear[result] + else //2-3 choices + var/list/names_only = assoc_list_strip_value(ctf_gear) + names_only.len += 1 //create a new null entry so if it's a 2-sized list, names_only[3] is null instead of out of bounds + var/result = alert(new_team_member, "Select a class.", "CTF", names_only[1], names_only[2], names_only[3]) + if(!result || !(GLOB.ghost_role_flags & GHOSTROLE_MINIGAME) || (new_team_member.ckey in recently_dead_ckeys) || !isobserver(new_team_member.mob)) + return //picked nothing, admin disabled it, cheating to respawn faster, cheating to respawn... while in game? + chosen_class = ctf_gear[result] + var/mob/living/carbon/human/M = new /mob/living/carbon/human(get_turf(src)) new_team_member.prefs.copy_to(M) M.set_species(/datum/species/synth) M.key = new_team_member.key M.faction += team - M.equipOutfit(ctf_gear) - spawned_mobs += M + M.equipOutfit(chosen_class) + RegisterSignal(M, COMSIG_PARENT_QDELETING, .proc/ctf_qdelled_player) //just in case CTF has some map hazards (read: chasms). bit shorter than dust + spawned_mobs[M] = chosen_class + team_members |= new_team_member.ckey + return M //used in medisim.dm /obj/machinery/capture_the_flag/Topic(href, href_list) if(href_list["join"]) @@ -283,22 +336,22 @@ if(istype(I, /obj/item/ctf)) var/obj/item/ctf/flag = I if(flag.team != src.team) - user.transferItemToLoc(flag, get_turf(flag.reset), TRUE) points++ - for(var/mob/M in GLOB.player_list) - var/area/mob_area = get_area(M) - if(istype(mob_area, /area/ctf)) - to_chat(M, "[user.real_name] has captured \the [flag], scoring a point for [team] team! They now have [points]/[points_to_win] points!") - if(points >= points_to_win) - victory() + flag.reset_flag(capture = TRUE) + for(var/mob/ctf_player in GLOB.player_list) + var/area/mob_area = get_area(ctf_player) + if(istype(mob_area, game_area)) + to_chat(ctf_player, "[user.real_name] has captured \the [flag], scoring a point for [team] team! They now have [points]/[points_to_win] points!") + if(points >= points_to_win) + victory() /obj/machinery/capture_the_flag/proc/victory() for(var/mob/_competitor in GLOB.mob_living_list) var/mob/living/competitor = _competitor var/area/mob_area = get_area(competitor) - if(istype(mob_area, /area/ctf)) + if(istype(mob_area, game_area)) to_chat(competitor, "[team] team wins!") - to_chat(competitor, "Teams have been cleared. Click on the machines to vote to begin another round.") + to_chat(competitor, victory_rejoin_text) for(var/obj/item/ctf/W in competitor) competitor.dropItemToGround(W) competitor.dust() @@ -306,6 +359,8 @@ control.icon_state = "dominator" control.controlling = null for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines) + if(CTF.game_id != game_id) + continue if(CTF.ctf_enabled == TRUE) CTF.points = 0 CTF.control_points = 0 @@ -366,12 +421,16 @@ /obj/machinery/capture_the_flag/proc/instagib_mode() for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines) + if(CTF.game_id != game_id) + continue if(CTF.ctf_enabled == TRUE) CTF.ctf_gear = CTF.instagib_gear CTF.respawn_cooldown = INSTAGIB_RESPAWN /obj/machinery/capture_the_flag/proc/normal_mode() for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines) + if(CTF.game_id != game_id) + continue if(CTF.ctf_enabled == TRUE) CTF.ctf_gear = initial(ctf_gear) CTF.respawn_cooldown = DEFAULT_RESPAWN @@ -447,8 +506,10 @@ . = TRUE if(ishuman(target)) var/mob/living/carbon/human/H = target - if(istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit/shielded/ctf)) - . = TRUE + for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines) + if(H in CTF.spawned_mobs) + . = TRUE + break // RED TEAM GUNS @@ -633,7 +694,7 @@ return for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines) if(M in CTF.spawned_mobs) - var/outfit = CTF.ctf_gear + var/outfit = CTF.spawned_mobs[M] var/datum/outfit/O = new outfit for(var/obj/item/gun/G in M) qdel(G) @@ -648,10 +709,13 @@ desc = "It provided cover in fire fights. And now it's gone." icon = 'icons/obj/objects.dmi' icon_state = "barrier0" + var/game_id = "centcom" /obj/effect/ctf/dead_barricade/Initialize(mapload) . = ..() for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines) + if(CTF.game_id != game_id) + continue CTF.dead_barricades += src /obj/effect/ctf/dead_barricade/proc/respawn() @@ -659,7 +723,6 @@ new /obj/structure/barricade/security/ctf(get_turf(src)) qdel(src) - //Control Point /obj/machinery/control_point @@ -671,6 +734,7 @@ var/obj/machinery/capture_the_flag/controlling var/team = "none" var/point_rate = 0.5 + var/game_area = /area/ctf /obj/machinery/control_point/process(delta_time) if(controlling) @@ -695,7 +759,7 @@ icon_state = "dominator-[CTF.team]" for(var/mob/M in GLOB.player_list) var/area/mob_area = get_area(M) - if(istype(mob_area, /area/ctf)) + if(istype(mob_area, game_area)) to_chat(M, "[user.real_name] has captured \the [src], claiming it for [CTF.team]! Go take it back!") break diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 21d228dc6b8..09e7d4cec7a 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -43,6 +43,12 @@ inhand_icon_state = "blueshift" custom_premium_price = PAYCHECK_HARD +/obj/item/clothing/suit/armor/vest/cuirass + name = "cuirass" + desc = "A lighter plate armor used to still keep out those pesky arrows, while retaining the ability to move." + icon_state = "cuirass" + inhand_icon_state = "armor" + /obj/item/clothing/suit/armor/hos name = "armored greatcoat" desc = "A greatcoat enhanced with a special alloy for some extra protection and style for those with a commanding presence." diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm index 273d859203f..9cede55cb09 100644 --- a/code/modules/holodeck/computer.dm +++ b/code/modules/holodeck/computer.dm @@ -288,6 +288,9 @@ M.flags_1 |= NODECONSTRUCT_1 for(var/obj/structure/S in added) S.flags_1 |= NODECONSTRUCT_1 + if(istype(program, /area/holodeck/rec_center/thunderdome1218) && !SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_MEDISIM]) + say("Special note from \"1218 AD\" developer: I see you too are interested in the REAL dark ages of humanity! I've made this program also unlock some interesting shuttle designs on any communication console around. Have fun!") + SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_MEDISIM] = TRUE /obj/machinery/computer/holodeck/proc/derez(obj/O, silent = TRUE, forced = FALSE) // Emagging a machine creates an anomaly in the derez systems. diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index 787dfd7700b..49d79ee3fe9 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -145,6 +145,10 @@ . = ..() AddComponent(/datum/component/caltrop, 20, 30, 100, CALTROP_BYPASS_SHOES) +/obj/structure/punji_sticks/spikes + name = "wooden spikes" + icon_state = "woodspike" + /////////BONFIRES////////// /obj/structure/bonfire diff --git a/code/modules/projectiles/guns/misc/bow.dm b/code/modules/projectiles/guns/misc/bow.dm new file mode 100644 index 00000000000..c84a1c613b7 --- /dev/null +++ b/code/modules/projectiles/guns/misc/bow.dm @@ -0,0 +1,125 @@ + +/obj/item/gun/ballistic/bow + name = "longbow" + desc = "While pretty finely crafted, surely you can find something better to use in the current year." + icon = 'icons/obj/guns/projectile.dmi' + icon_state = "bow" + inhand_icon_state = "bow" + load_sound = null + fire_sound = null + mag_type = /obj/item/ammo_box/magazine/internal/bow + force = 15 + attack_verb_continuous = list("whipped", "cracked") + attack_verb_simple = list("whip", "crack") + weapon_weight = WEAPON_HEAVY + w_class = WEIGHT_CLASS_BULKY + internal_magazine = TRUE + bolt_type = BOLT_TYPE_NO_BOLT + var/drawn = FALSE + +/obj/item/gun/ballistic/bow/update_icon() + . = ..() + if(!chambered) + icon_state = "bow" + else + icon_state = "bow_[drawn]" + +/obj/item/gun/ballistic/bow/proc/drop_arrow() + drawn = FALSE + if(!chambered) + chambered = magazine.get_round(keep = FALSE) + return + if(!chambered) + return + chambered.forceMove(drop_location()) + update_icon() + +/obj/item/gun/ballistic/bow/chamber_round(keep_bullet = FALSE, spin_cylinder, replace_new_round) + if(chambered || !magazine) + return + if(magazine.ammo_count()) + chambered = magazine.get_round(TRUE) + chambered.forceMove(src) + +/obj/item/gun/ballistic/bow/attack_self(mob/user) + if(chambered) + to_chat(user, "You [drawn ? "release the tension on" : "draw the string on"] [src].") + drawn = !drawn + update_icon() + +/obj/item/gun/ballistic/bow/afterattack(atom/target, mob/living/user, flag, params, passthrough = FALSE) + if(!chambered) + return + if(!drawn) + to_chat(user, "Without drawing the bow, the arrow uselessly falls to the ground.") + drop_arrow() + update_icon() + return + drawn = FALSE + . = ..() //fires, removing the arrow + update_icon() + +/obj/item/gun/ballistic/bow/shoot_with_empty_chamber(mob/living/user) + return //so clicking sounds please + +/obj/item/ammo_box/magazine/internal/bow + name = "bowstring" + ammo_type = /obj/item/ammo_casing/caseless/arrow + max_ammo = 1 + start_empty = TRUE + caliber = "arrow" + +/obj/item/ammo_casing/caseless/arrow + name = "arrow" + desc = "Stabby Stabman!" + icon_state = "arrow" + flags_1 = NONE + throwforce = 1 + projectile_type = /obj/projectile/bullet/reusable/arrow + firing_effect_type = null + caliber = "arrow" + heavy_metal = FALSE + +/obj/item/ammo_casing/caseless/arrow/despawning/dropped() + . = ..() + addtimer(CALLBACK(src, .proc/floor_vanish), 5 SECONDS) + +/obj/item/ammo_casing/caseless/arrow/despawning/proc/floor_vanish() + if(isturf(loc)) + qdel(src) + +/obj/projectile/bullet/reusable/arrow + name = "arrow" + desc = "Ow! Get it out of me!" + ammo_type = /obj/item/ammo_casing/caseless/arrow + damage = 50 + speed = 1 + range = 25 + + + +/obj/item/storage/bag/quiver + name = "quiver" + desc = "Holds arrows for your bow. Good, because while pocketing arrows is possible, it surely can't be pleasant." + icon_state = "quiver" + inhand_icon_state = "quiver" + worn_icon_state = "harpoon_quiver" + var/arrow_path = /obj/item/ammo_casing/caseless/arrow + +/obj/item/storage/bag/quiver/Initialize(mapload) + . = ..() + var/datum/component/storage/storage = GetComponent(/datum/component/storage) + storage.max_w_class = WEIGHT_CLASS_TINY + storage.max_items = 40 + storage.max_combined_w_class = 100 + storage.set_holdable(list( + /obj/item/ammo_casing/caseless/arrow + )) + +/obj/item/storage/bag/quiver/PopulateContents() + . = ..() + for(var/i in 1 to 10) + new arrow_path(src) + +/obj/item/storage/bag/quiver/despawning + arrow_path = /obj/item/ammo_casing/caseless/arrow/despawning diff --git a/code/modules/shuttle/medisim.dm b/code/modules/shuttle/medisim.dm new file mode 100644 index 00000000000..67008825a9e --- /dev/null +++ b/code/modules/shuttle/medisim.dm @@ -0,0 +1,144 @@ +///These are for the medisim shuttle + +#define REDFIELD_TEAM "Red" +#define BLUESWORTH_TEAM "Blue" + +/obj/machinery/capture_the_flag/medisim + game_id = "medieval" + game_area = /area/shuttle/escape/simulation + ammo_type = null //no guns, no need + victory_rejoin_text = "Teams have been cleared. The next game is starting automatically. Rejoin a team if you wish!" + +/obj/machinery/capture_the_flag/medisim/Initialize(mapload) + . = ..() + start_ctf() //both machines initialize, so both will call start_ctf instead of toggle_id_ctf calling it for both, twice. + +/obj/machinery/capture_the_flag/medisim/victory() + . = ..() + toggle_id_ctf(null, game_id, automated = TRUE)//only one machine runs the victory proc, start_ctf proc would break the other machine + +/obj/machinery/capture_the_flag/medisim/spawn_team_member(client/new_team_member) + . = ..() + if(!.) + return + var/mob/living/carbon/human/human_knight = . + randomize_human(human_knight) + human_knight.dna.add_mutation(MEDIEVAL, MUT_OTHER) + var/oldname = human_knight.name + var/title = "error" + switch (human_knight.gender) + if (MALE) + title = pick(list("Sir", "Lord")) + if (FEMALE) + title = pick(list("Dame", "Lady")) + else + title = "Noble" + human_knight.real_name = "[title] [oldname]" + human_knight.name = human_knight.real_name + +/obj/machinery/capture_the_flag/medisim/red + name = "\improper Redfield Data Realizer" + icon_state = "syndbeacon" + team = REDFIELD_TEAM + team_span = "redteamradio" + ctf_gear = list("knight" = /datum/outfit/medisim/red_knight, "archer" = /datum/outfit/medisim/red_archer) + +/obj/machinery/capture_the_flag/medisim/blue + name = "\improper Bluesworth Data Realizer" + icon_state = "bluebeacon" + team = BLUESWORTH_TEAM + team_span = "blueteamradio" + ctf_gear = list("knight" = /datum/outfit/medisim/blue_knight, "archer" = /datum/outfit/medisim/blue_archer) + +/obj/item/ctf/red/medisim + name = "\improper Redfield Castle Fair Maiden" + desc = "Protect your maiden, and capture theirs!" + icon = 'icons/obj/plushes.dmi' + icon_state = "plushie_nuke" + game_area = /area/shuttle/escape + movement_type = FLOATING //there are chasms, and resetting when they fall in is really lame so lets minimize that + +/obj/item/ctf/blue/medisim + name = "\improper Bluesworth Hold Fair Maiden" + desc = "Protect your maiden, and capture theirs!" + icon = 'icons/obj/plushes.dmi' + icon_state = "plushie_slime" + game_area = /area/shuttle/escape + movement_type = FLOATING //there are chasms, and resetting when they fall in is really lame so lets minimize that + +//everything except arrows +/datum/outfit/medisim/post_equip(mob/living/carbon/human/H, visualsOnly) + var/list/no_drops = list() + no_drops += H.get_item_by_slot(ITEM_SLOT_FEET) + no_drops += H.get_item_by_slot(ITEM_SLOT_BELT) + no_drops += H.get_item_by_slot(ITEM_SLOT_ICLOTHING) + no_drops += H.get_item_by_slot(ITEM_SLOT_OCLOTHING) + no_drops += H.get_item_by_slot(ITEM_SLOT_HEAD) + no_drops += H.get_item_by_slot(ITEM_SLOT_HANDS) + no_drops += H.get_item_by_slot(ITEM_SLOT_GLOVES) + listclearnulls(no_drops) //any slots we didn't have + for(var/_outfit_item in no_drops) + var/obj/item/outfit_item = _outfit_item + outfit_item.item_flags |= DROPDEL//so this all stays clean :) + +/datum/outfit/medisim/red_knight + name = "Redfield Castle Knight" + + uniform = /obj/item/clothing/under/color/red + shoes = /obj/item/clothing/shoes/plate/red + suit = /obj/item/clothing/suit/armor/riot/knight/red + gloves = /obj/item/clothing/gloves/plate/red + head = /obj/item/clothing/head/helmet/knight/red + r_hand = /obj/item/claymore + +/datum/outfit/medisim/blue_knight + name = "Bluesworth Hold Knight" + + uniform = /obj/item/clothing/under/color/blue + shoes = /obj/item/clothing/shoes/plate/blue + suit = /obj/item/clothing/suit/armor/riot/knight/blue + gloves = /obj/item/clothing/gloves/plate/blue + head = /obj/item/clothing/head/helmet/knight/blue + r_hand = /obj/item/claymore + +/datum/outfit/medisim/red_archer + name = "Redfield Castle Archer" + + uniform = /obj/item/clothing/under/color/red + belt = /obj/item/storage/bag/quiver + shoes = /obj/item/clothing/shoes/plate/red + suit = /obj/item/clothing/suit/armor/vest/cuirass + gloves = /obj/item/clothing/gloves/plate/red + head = /obj/item/clothing/head/helmet/knight/red + r_hand = /obj/item/gun/ballistic/bow + +/datum/outfit/medisim/blue_archer + name = "Bluesworth Hold Archer" + + uniform = /obj/item/clothing/under/color/blue + belt = /obj/item/storage/bag/quiver + shoes = /obj/item/clothing/shoes/plate/blue + suit = /obj/item/clothing/suit/armor/vest/cuirass + gloves = /obj/item/clothing/gloves/plate/blue + head = /obj/item/clothing/head/helmet/knight/blue + r_hand = /obj/item/gun/ballistic/bow + +/obj/machinery/computer/reality_simulation + name = "reality simulation computer" + desc = "A computer calculating the medieval times. Uh, wow. Is this bad boy quantum?" + +/obj/item/paper/crumpled/retired_designs + name = "crumpled notes on cuirass design" + info = {"Yeah, you may as well just melt this crap back down into metal.
+
+
+ What else am I supposed to say? Nanotrasen thinks these authentic cuirass models are too expensive for the simulation watchers. + That's bullshit, but my hands are tied. But you know. If one of you cargo folk up at central command take a cuirass for yourself + instead of throwing the damn thing out, like, I'm sure nobody would notice or care. OK, but I'm sitting here on an official + NT shuttle encouraging you to break spacelaw. Damn, I'm bored as fuck. I was kidding. Melt em. See you guys soon. +
+
+ the rest of the page is filled with various doodles of people fighting with swords."} + +#undef REDFIELD_TEAM +#undef BLUESWORTH_TEAM diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi index 651277aa5fd..27e1cdd6681 100644 Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 0f264c2736f..07c20cdbc03 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index abec870988c..a9764fee944 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/icons/obj/hydroponics/equipment.dmi b/icons/obj/hydroponics/equipment.dmi index 343c88a0dff..1826c43085c 100644 Binary files a/icons/obj/hydroponics/equipment.dmi and b/icons/obj/hydroponics/equipment.dmi differ diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index fccfe9da0c7..2d9f2013752 100644 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index c5b182b81a3..88d3ef3b6a9 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/strings/medieval_replacement.json b/strings/medieval_replacement.json new file mode 100644 index 00000000000..15442a46efc --- /dev/null +++ b/strings/medieval_replacement.json @@ -0,0 +1,323 @@ +{ + "startings": [ + "Forsooth,", + "I say,", + "I sayeth,", + "Forsooth, I say,", + "Forsooth, say I,", + "Forsooth, sayeth I,", + "Hark,", + "Harketh,", + "Avast,", + "Zounds,", + "Perchance,", + "Pray tell,", + "Prithee,", + "What hey,", + "What ho,", + "Pray,", + "Surely", + "Pray pardon,", + "Alas,", + "In short,", + "By my faith,", + "If it pleases you,", + "I pray you,", + "In truth,", + "By my trowth,", + "In sooth,", + "By my word,", + "S'wounds,", + "Z'wounds,", + "Heigh-ho,", + "Ah,", + "Quoth I,", + "Listen,", + "Listen thee,", + "Hear me,", + "Now hear me,", + "I warrant", + "Come,", + "Kind sire,", + "Sire,", + "There is much in what you say, and yet," + ], + "medieval": { + "it is": "'tis", + "it's": "'tis", + "it was": "'twas", + "it will": "'twould", + "it were": "'twere", + "there": "thither", + "shall not": "shan't", + "will not": "shan't", + "over there": "yonder", + "in the": "i' the", + "thank you": [ + "many good thanks to you", + "thankee", + "kindly thanks to you", + "grammercy to you" + ], + "thanks": [ + "many good thanks to you", + "thankee", + "kindly thanks to you", + "grammercy to you" + ], + "you": [ + "thou", + "thee", + "ye" + ], + "your": [ + "thine", + "thy", + "thyne" + ], + "are": "art", + "killed": [ + "slain", + "vanquished", + "brung low", + "conquered", + "fleeced", + "humbled", + "subjugated", + "bested", + "foiled" + ], + "kill": [ + "slay", + "vanquish", + "bring low", + "conquer", + "fleece", + "humble", + "subjugate", + "best", + "foil" + ], + "goodbye": [ + "farewell", + "fare thee well", + "good morrow", + "godspeed", + "begone", + "by your leave", + "good day", + "adieu", + "cheerio", + "pleasant journey", + "I bid thee good day", + "I bid thee farewell" + ], + "bye": [ + "farewell", + "fare thee well", + "good morrow", + "godspeed", + "begone", + "by your leave", + "good day", + "adieu", + "cheerio", + "pleasant journey", + "I bid thee good day", + "I bid thee farewell" + ], + "yes": [ + "aye", + "yea", + "yea verily" + ], + "no": [ + "nay", + "nayeth" + ], + "hello": [ + "hail", + "good day", + "well met", + "well meteth", + "tally ho", + "ave" + ], + "hi": [ + "hail", + "good day", + "well met", + "well meteth", + "tally ho", + "ave" + ], + "does": [ + "doeseth", + "dost", + "doth" + ], + "my": "mine", + "in": "within", + "nuke disk": "plate of holy fire", + "captain": "king", + "cap": "king", + "food": [ + "bellytimber", + "game", + "cake" + ], + "going": "a-walkin'", + "go": "a-walk", + "bet": "warrant", + "the": "yon", + "kidding": [ + "but pulling a jest", + "but pulling a jape" + ], + "joke": [ + "jest", + "jape" + ], + "station": "castle", + "please": [ + "I pray you", + "prithee", + "pray" + ], + "ok": [ + "as you will", + "agreed", + "well said", + "just so" + ], + "is": "be", + "never": "ne'er", + "haha": [ + "guffaw!", + "cackle!", + "oh, 'tis to laugh!", + "zounds!", + "chuckle!", + "snigger!", + "snicker!", + "snort!", + "cachinnate!", + "titter!", + "and there was much tittering!", + "and there was much guffawing!", + "and there was much chuckling!", + "and there was much snorting!", + "and there was much snickering!", + "and there was much mirth!" + ], + "hehe": [ + "guffaw!", + "cackle!", + "oh, 'tis to laugh!", + "zounds!", + "chuckle!", + "snigger!", + "snicker!", + "snort!", + "cachinnate!", + "titter!", + "and there was much tittering!", + "and there was much guffawing!", + "and there was much chuckling!", + "and there was much snorting!", + "and there was much snickering!", + "and there was much mirth!" + ], + "hah": [ + "guffaw!", + "cackle!", + "oh, 'tis to laugh!", + "zounds!", + "chuckle!", + "snigger!", + "snicker!", + "snort!", + "cachinnate!", + "titter!", + "and there was much tittering!", + "and there was much guffawing!", + "and there was much chuckling!", + "and there was much snorting!", + "and there was much snickering!", + "and there was much mirth!" + ], + "heh": [ + "guffaw!", + "cackle!", + "oh, 'tis to laugh!", + "zounds!", + "chuckle!", + "snigger!", + "snicker!", + "snort!", + "cachinnate!", + "titter!", + "and there was much tittering!", + "and there was much guffawing!", + "and there was much chuckling!", + "and there was much snorting!", + "and there was much snickering!", + "and there was much mirth!" + ], + "help": [ + "aid", + "aideth", + "saveth", + "assistance", + "succor" + ], + "could": "couldst", + "would": "wouldst", + "sure": "shore", + "maybe": [ + "mayhaps", + "perchance" + ], + "probably": [ + "mayhaps", + "perchance" + ], + "girl": [ + "madame", + "waif", + "mistress", + "lass", + "lady", + "maid", + "maiden" + ], + "felinid": "catbeast", + "cat": "beast", + "moth": "gnat", + "mothperson": "gnat critter", + "plasmaman": "fire spirit", + "plasmamen": "fire spirits", + "lizard": "beast", + "lizardperson": "moat creature", + "soon": "anon", + "later": "anon", + "often": "oft", + "really": [ + "indeed", + "in truth" + ], + "those": "yon", + "here": "hither", + "enough": "ynogh", + "why": "wherefore", + "away": "aroint", + "being": "bein", + "of": "o'", + "shit": "nightsoil", + "fuck": "flummery", + "based": [ + "joly", + "jolyf" + ] + } + } diff --git a/tgstation.dme b/tgstation.dme index 899649111cd..711153be153 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2815,6 +2815,7 @@ #include "code\modules\projectiles\guns\magic\wand.dm" #include "code\modules\projectiles\guns\misc\beam_rifle.dm" #include "code\modules\projectiles\guns\misc\blastcannon.dm" +#include "code\modules\projectiles\guns\misc\bow.dm" #include "code\modules\projectiles\guns\misc\chem_gun.dm" #include "code\modules\projectiles\guns\misc\grenade_launcher.dm" #include "code\modules\projectiles\guns\misc\medbeam.dm" @@ -3051,6 +3052,7 @@ #include "code\modules\shuttle\emergency.dm" #include "code\modules\shuttle\ferry.dm" #include "code\modules\shuttle\manipulator.dm" +#include "code\modules\shuttle\medisim.dm" #include "code\modules\shuttle\monastery.dm" #include "code\modules\shuttle\navigation_computer.dm" #include "code\modules\shuttle\on_move.dm"