diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 50b5504af5..980e23188a 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -41,24 +41,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/bar) -"aad" = ( -/obj/structure/bed, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/button/door{ - id = "Dorm4"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "aae" = ( /obj/effect/landmark/carpspawn, /turf/open/space, @@ -595,19 +577,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/security/execution/transfer) -"abz" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm5"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "abA" = ( /obj/machinery/light, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -2149,55 +2118,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore/secondary) -"aeD" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm6"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aeE" = ( -/obj/structure/bed, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/button/door{ - id = "Dorm3"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aeF" = ( -/obj/structure/bed, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/button/door{ - id = "Dorm2"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "aeG" = ( /obj/structure/cable, /obj/machinery/power/solar{ @@ -2574,11 +2494,6 @@ }, /turf/open/floor/plasteel, /area/security/main) -"afn" = ( -/obj/structure/bed, -/obj/item/bedsheet/medical, -/turf/open/floor/plasteel/white, -/area/medical/virology) "afo" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Three" @@ -2599,14 +2514,6 @@ }, /turf/open/space/basic, /area/space) -"afq" = ( -/obj/structure/bed, -/obj/item/tank/internals/anesthetic, -/obj/item/clothing/mask/breath, -/obj/effect/decal/cleanable/semen, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/plating, -/area/maintenance/bar) "aft" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 @@ -7503,6 +7410,24 @@ }, /turf/open/floor/plating, /area/maintenance/fore/secondary) +"aqn" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm4"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aqo" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -8283,6 +8208,19 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) +"asu" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm5"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "asv" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -8374,6 +8312,19 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"asL" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm6"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "asM" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -8980,6 +8931,24 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness) +"auw" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm3"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aux" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -10846,6 +10815,24 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) +"ayV" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm2"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "ayW" = ( /turf/closed/wall, /area/ai_monitored/storage/eva) @@ -31259,6 +31246,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, +/obj/machinery/keycard_auth{ + pixel_y = 25 + }, /turf/open/floor/plasteel, /area/quartermaster/qm) "bvH" = ( @@ -39377,6 +39367,11 @@ /obj/machinery/announcement_system, /turf/open/floor/plasteel, /area/tcommsat/computer) +"bOm" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/turf/open/floor/plasteel/white, +/area/medical/virology) "bOn" = ( /obj/machinery/light{ dir = 1 @@ -56671,12 +56666,6 @@ /obj/item/stock_parts/cell/high, /turf/open/floor/plasteel/white, /area/science/circuit) -"eef" = ( -/obj/machinery/autolathe{ - name = "public autolathe" - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "evR" = ( /turf/open/floor/plating, /area/maintenance/bar) @@ -56912,6 +56901,12 @@ /obj/item/pen, /turf/open/floor/plasteel/white, /area/science/circuit) +"ium" = ( +/mob/living/simple_animal/bot/cleanbot{ + name = "C.L.E.A.N." + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) "izv" = ( /obj/machinery/vending/clothing, /obj/machinery/light/small{ @@ -57146,12 +57141,6 @@ }, /turf/open/floor/plating, /area/construction/mining/aux_base) -"lKX" = ( -/mob/living/simple_animal/bot/cleanbot{ - name = "C.L.E.A.N." - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay/central) "lMg" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -57383,6 +57372,14 @@ }, /turf/open/floor/plating, /area/construction) +"rMN" = ( +/obj/structure/bed, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/semen, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/plating, +/area/maintenance/bar) "rNc" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -57594,6 +57591,12 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"urE" = ( +/obj/machinery/autolathe{ + name = "public autolathe" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "usO" = ( /obj/machinery/vending/snack/random, /obj/machinery/light/small{ @@ -79853,7 +79856,7 @@ sAM imH evR evR -afq +rMN bCq bUs bLv @@ -81615,7 +81618,7 @@ cNG cNJ bLF aZK -eef +urE bbR bqt cBq @@ -88517,13 +88520,13 @@ aoD aod aqe arf -aad +aqn ath arf -aeE +auw ath arf -aeF +ayV ath dgz aCd @@ -90317,7 +90320,7 @@ cSA aqe arf ari -abz +asu aun auW avR @@ -91345,7 +91348,7 @@ apr aqj arf ark -aeD +asL aun avu awt @@ -94210,7 +94213,7 @@ blm bmL boi bpw -lKX +ium bsx btX bvj @@ -96541,7 +96544,7 @@ bof fTg bLV bNd -afn +bOm bPp bQF bRN @@ -98347,7 +98350,7 @@ bRQ bOr bSQ bWj -afn +bOm bXc bYe bNd @@ -98861,7 +98864,7 @@ bRQ bOr bSQ bWj -afn +bOm bXc bYe bNd diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index b4aabc3676..fd7c0a3c00 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -124,22 +124,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"aaq" = ( -/obj/structure/bed, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/item/bedsheet/clown, -/turf/open/floor/plasteel/grimy, -/area/hallway/secondary/service) -"aar" = ( -/obj/structure/bed, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/item/bedsheet/mime, -/turf/open/floor/wood, -/area/hallway/secondary/service) "aas" = ( /obj/docking_port/stationary/random{ id = "pod_lavaland1"; @@ -159,52 +143,6 @@ /obj/effect/landmark/xeno_spawn, /turf/open/space, /area/solar/starboard/fore) -"aav" = ( -/obj/structure/bed, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aaw" = ( -/obj/structure/bed, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aax" = ( -/obj/structure/bed, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aay" = ( -/obj/structure/bed, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"aaz" = ( -/obj/structure/bed, -/obj/machinery/light, -/obj/machinery/status_display{ - pixel_y = -32 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aaA" = ( -/obj/structure/bed, -/obj/item/tank/internals/anesthetic, -/obj/item/clothing/mask/breath, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) "aaE" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -1072,6 +1010,10 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"aez" = ( +/obj/machinery/keycard_auth, +/turf/closed/wall, +/area/quartermaster/qm) "aeB" = ( /obj/machinery/status_display, /turf/closed/wall, @@ -13768,6 +13710,14 @@ }, /turf/open/floor/plasteel/grimy, /area/hallway/secondary/service) +"aDF" = ( +/obj/structure/bed, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/item/bedsheet/clown, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/service) "aDG" = ( /turf/open/floor/plasteel/grimy, /area/hallway/secondary/service) @@ -16922,6 +16872,14 @@ }, /turf/open/floor/wood, /area/hallway/secondary/service) +"aIP" = ( +/obj/structure/bed, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/item/bedsheet/mime, +/turf/open/floor/wood, +/area/hallway/secondary/service) "aIQ" = ( /obj/structure/dresser, /turf/open/floor/wood{ @@ -79006,6 +78964,17 @@ /obj/structure/dresser, /turf/open/floor/carpet, /area/crew_quarters/dorms) +"cCi" = ( +/obj/structure/bed, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "cCj" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/clothing/suit/jacket{ @@ -81023,10 +80992,24 @@ icon_state = "wood-broken2" }, /area/crew_quarters/dorms) +"cFx" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "cFy" = ( /obj/item/twohanded/required/kirbyplants/random, /turf/open/floor/wood, /area/crew_quarters/dorms) +"cFz" = ( +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "cFA" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green, @@ -88896,6 +88879,11 @@ /obj/structure/chair/office/dark, /turf/open/floor/wood, /area/crew_quarters/dorms) +"cTc" = ( +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms) "cTd" = ( /obj/structure/table, /obj/item/storage/fancy/donut_box, @@ -90092,6 +90080,15 @@ }, /turf/open/floor/wood, /area/crew_quarters/dorms) +"cUX" = ( +/obj/structure/bed, +/obj/machinery/light, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "cUY" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/clothing/suit/jacket{ @@ -127214,6 +127211,13 @@ dir = 1 }, /area/science/circuit) +"poI" = ( +/obj/structure/bed, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "psi" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bodycontainer/morgue{ @@ -151680,7 +151684,7 @@ djm fow dod dod -aaA +poI dfY ajr aad @@ -160834,11 +160838,11 @@ ary aAf aBu aCB -aaq +aDF aEJ aFV aDI -aar +aIP aKo aLE aMX @@ -174465,7 +174469,7 @@ aaa aaa aad aQQ -aQQ +aez aUp aVY aXE @@ -178374,7 +178378,7 @@ cyY cAx cCd cDD -aaw +cFx cGU cAw cJl @@ -178382,7 +178386,7 @@ cLa cMx cIi cPR -aax +cFz cDG cUW cAw @@ -179155,7 +179159,7 @@ cNU cDI cFB cDI -aaz +cUX cAw cYj cZV @@ -179402,7 +179406,7 @@ czc cAw cCg cDG -aax +cFz cGW cIi cJo @@ -180171,7 +180175,7 @@ bHq cxt coI cAw -aav +cCi cDI cFB cDI @@ -180439,7 +180443,7 @@ cMB cIi cPW cRv -aay +cTc cVb cAw cYp diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 7faca77d70..75d7466371 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -2,58 +2,10 @@ "aaa" = ( /turf/open/space/basic, /area/space) -"aab" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Cabin3"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "aac" = ( /obj/effect/landmark/carpspawn, /turf/open/space, /area/space) -"aad" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/button/door{ - id = "Cabin4"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/structure/bed, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aae" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Cabin2"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "aaf" = ( /obj/structure/lattice, /turf/open/space, @@ -300,19 +252,6 @@ }, /turf/open/floor/plating, /area/security/prison) -"aaM" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Cabin5"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "aaN" = ( /obj/structure/cable{ icon_state = "0-2" @@ -355,37 +294,6 @@ }, /turf/open/floor/plasteel, /area/security/prison) -"aaU" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Cabin6"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aaV" = ( -/obj/machinery/button/door{ - id = "Cabin7"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/obj/structure/bed, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "aaY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -10233,6 +10141,22 @@ /obj/item/clothing/under/assistantformal, /turf/open/floor/wood, /area/crew_quarters/dorms) +"asV" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Cabin3"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "asW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -10271,6 +10195,23 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"ata" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/button/door{ + id = "Cabin4"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "atb" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/machinery/airalarm{ @@ -11951,6 +11892,21 @@ /obj/item/clothing/under/suit_jacket/tan, /turf/open/floor/carpet, /area/crew_quarters/dorms) +"awE" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Cabin2"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "awF" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -11964,6 +11920,19 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"awG" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Cabin5"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "awH" = ( /obj/machinery/newscaster{ pixel_y = 32 @@ -15014,6 +14983,22 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"aCJ" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Cabin6"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aCK" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/machinery/airalarm{ @@ -17590,6 +17575,21 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) +"aHS" = ( +/obj/machinery/button/door{ + id = "Cabin7"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/structure/bed, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "aHT" = ( /obj/structure/chair/wood/normal{ dir = 4 @@ -20373,6 +20373,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, +/obj/machinery/keycard_auth{ + pixel_y = 23 + }, /turf/open/floor/plasteel, /area/quartermaster/qm) "aNS" = ( @@ -120053,10 +120056,10 @@ agz aoV dhs arB -aab +asV auf arB -aae +awE axE arB dhA @@ -121595,19 +121598,19 @@ anK aoZ aqk arB -aad +ata aul avp -aaM +awG axJ avp aAj arB -aaU +aCJ aEe arB boS -aaV +aHS aJh aKt aLW diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 228e90992e..e25fc7ccc1 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -2,126 +2,12 @@ "aaa" = ( /turf/open/space/basic, /area/space) -"aab" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm3Shutters"; - name = "Privacy Shutters Control"; - pixel_y = 26 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aac" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm2Shutters"; - name = "Privacy Shutters Control"; - pixel_y = 26; - req_access_txt = "0" - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "aad" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating{ icon_state = "platingdmg3" }, /area/maintenance/department/science) -"aae" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm1Shutters"; - name = "Privacy Shutters Control"; - pixel_y = 26; - req_access_txt = "0" - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"aaf" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "garbage" - }, -/turf/open/floor/plating, -/area/maintenance/disposal) -"aag" = ( -/obj/machinery/mineral/stacking_unit_console{ - dir = 2; - machinedir = 8; - pixel_x = -32; - pixel_y = 32 - }, -/obj/machinery/conveyor{ - dir = 4; - id = "garbagestacked" - }, -/turf/open/floor/plating, -/area/maintenance/disposal) -"aah" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "garbagestacked" - }, -/turf/open/floor/plating, -/area/maintenance/disposal) -"aai" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/conveyor{ - dir = 1; - id = "garbage" - }, -/turf/open/floor/plating, -/area/maintenance/disposal) -"aaj" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, -/turf/open/floor/plating, -/area/maintenance/disposal) -"aak" = ( -/obj/machinery/recycler, -/obj/machinery/conveyor{ - dir = 4; - id = "garbage" - }, -/turf/open/floor/plating, -/area/maintenance/disposal) -"aal" = ( -/obj/structure/chair/comfy/black, -/obj/structure/sign/plaques/kiddie{ - desc = "An embossed piece of paper from the Third University of Harvard."; - name = "\improper 'Diploma' frame"; - pixel_y = 32 - }, -/obj/machinery/light/small{ - dir = 1; - light_color = "#ffc1c1" - }, -/obj/effect/landmark/start/lawyer, -/turf/open/floor/wood, -/area/lawoffice) -"aam" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "garbage" - }, -/obj/structure/disposaloutlet{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/disposal) "abf" = ( /obj/structure/bed, /turf/open/floor/plating, @@ -8719,6 +8605,16 @@ }, /turf/open/floor/plating, /area/crew_quarters/dorms) +"ave" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm3Shutters"; + name = "Privacy Shutters Control"; + pixel_y = 26 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "avf" = ( /obj/machinery/light/small{ dir = 1 @@ -10162,6 +10058,17 @@ }, /turf/open/floor/plating, /area/crew_quarters/dorms) +"ayj" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm2Shutters"; + name = "Privacy Shutters Control"; + pixel_y = 26; + req_access_txt = "0" + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "ayk" = ( /obj/machinery/light/small{ dir = 1 @@ -11609,6 +11516,17 @@ }, /turf/open/floor/plating, /area/crew_quarters/dorms) +"aBM" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm1Shutters"; + name = "Privacy Shutters Control"; + pixel_y = 26; + req_access_txt = "0" + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms) "aBN" = ( /obj/machinery/light/small{ dir = 1 @@ -16769,6 +16687,13 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) +"aNV" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbagestacked" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) "aNX" = ( /obj/machinery/disposal/deliveryChute{ dir = 8 @@ -17255,6 +17180,22 @@ /obj/item/shard, /turf/open/floor/plating, /area/maintenance/department/cargo) +"aPg" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) "aPi" = ( /obj/machinery/light/small{ dir = 4 @@ -17620,6 +17561,16 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) +"aQo" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) "aQp" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line{ @@ -24159,6 +24110,10 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, +/obj/machinery/keycard_auth{ + pixel_x = -23; + pixel_y = 0 + }, /turf/open/floor/plasteel, /area/quartermaster/qm) "beK" = ( @@ -51312,6 +51267,14 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) +"cvf" = ( +/obj/machinery/recycler, +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) "cvg" = ( /obj/structure/flora/ausbushes/ywflowers, /obj/structure/flora/ausbushes/brflowers, @@ -52118,6 +52081,13 @@ }, /turf/open/floor/plasteel/dark, /area/library/lounge) +"cyp" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) "cyy" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -53734,6 +53704,19 @@ }, /turf/open/floor/plasteel/white, /area/medical/sleeper) +"eFG" = ( +/obj/machinery/mineral/stacking_unit_console{ + dir = 2; + machinedir = 8; + pixel_x = -32; + pixel_y = 32 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "garbagestacked" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) "eHI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, @@ -61528,6 +61511,13 @@ /obj/structure/sign/warning/vacuum/external, /turf/open/floor/plating, /area/hallway/secondary/exit/departure_lounge) +"xer" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) "xeB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, @@ -61781,6 +61771,20 @@ }, /turf/closed/wall/r_wall, /area/science/mixing) +"xJy" = ( +/obj/structure/chair/comfy/black, +/obj/structure/sign/plaques/kiddie{ + desc = "An embossed piece of paper from the Third University of Harvard."; + name = "\improper 'Diploma' frame"; + pixel_y = 32 + }, +/obj/machinery/light/small{ + dir = 1; + light_color = "#ffc1c1" + }, +/obj/effect/landmark/start/lawyer, +/turf/open/floor/wood, +/area/lawoffice) "xKc" = ( /obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, @@ -81803,7 +81807,7 @@ ajM aiu aiu gSH -aal +xJy sJr sJr sJr @@ -99272,13 +99276,13 @@ ale asb coe apX -aab +ave awn apX -aac +ayj azr apX -aae +aBM aDb apX oFo @@ -101105,7 +101109,7 @@ aTm bbE bbE bbE -dps +bbE bbE bbE aEj @@ -101364,7 +101368,7 @@ bcA bdF beJ bfB -bbE +dps aZv aUC biz @@ -107513,9 +107517,9 @@ aaa aaa aLn aNT -aaf -aai -aam +xer +aQo +aPg aRu srZ aLm @@ -107771,7 +107775,7 @@ aaa aLm aLm aNU -aaj +cyp dqY aRv sZh @@ -108027,8 +108031,8 @@ aaa aaa aLm aME -aag -aaj +eFG +cyp dqY aRw sqQ @@ -108284,9 +108288,9 @@ aaa aaa aLo aMF -aah -aaj -aak +aNV +cyp +cvf aQn sqQ aSm @@ -108542,8 +108546,8 @@ aaa aLo aMG aNX -aaj -aaf +cyp +xer aRy aSn aSn diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 0f8e832d63..115ad3d363 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2248,11 +2248,6 @@ }, /turf/open/floor/plasteel, /area/tdome/arena_source) -"fR" = ( -/obj/item/paicard, -/obj/structure/table/wood, -/turf/open/floor/engine/cult, -/area/wizard_station) "fS" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -2940,22 +2935,6 @@ /obj/machinery/capture_the_flag/red, /turf/open/floor/circuit/green/anim, /area/ctf) -"hH" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight/seclite, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/item/paicard, -/turf/open/floor/plasteel/dark, -/area/centcom/ferry) "hI" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -3730,13 +3709,6 @@ }, /turf/open/floor/plasteel, /area/centcom/control) -"jA" = ( -/obj/machinery/shower{ - dir = 4 - }, -/obj/item/soap/syndie, -/turf/open/floor/plasteel/freezer, -/area/syndicate_mothership) "jB" = ( /obj/structure/noticeboard{ dir = 8; @@ -4222,14 +4194,6 @@ "ku" = ( /turf/closed/indestructible/fakeglass, /area/syndicate_mothership) -"kv" = ( -/obj/structure/mirror{ - pixel_x = -28 - }, -/obj/structure/table, -/obj/item/reagent_containers/rag/towel/syndicate, -/turf/open/floor/plasteel/freezer, -/area/syndicate_mothership) "kw" = ( /turf/open/floor/plasteel/yellowsiding, /area/centcom/supply) @@ -8429,6 +8393,13 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) +"tg" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/item/soap/syndie, +/turf/open/floor/plasteel/freezer, +/area/syndicate_mothership) "tl" = ( /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating, @@ -11402,6 +11373,22 @@ /obj/structure/table/reinforced, /turf/open/floor/plasteel/grimy, /area/centcom/ferry) +"AL" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/seclite, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/paicard, +/turf/open/floor/plasteel/dark, +/area/centcom/ferry) "AM" = ( /obj/machinery/shuttle_manipulator, /turf/open/floor/circuit/green, @@ -11598,6 +11585,11 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"Bp" = ( +/obj/item/paicard, +/obj/structure/table/wood, +/turf/open/floor/engine/cult, +/area/wizard_station) "Bs" = ( /obj/structure/table/wood, /obj/machinery/computer/libraryconsole/bookmanagement, @@ -17441,6 +17433,14 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"Rl" = ( +/obj/structure/mirror{ + pixel_x = -28 + }, +/obj/structure/table, +/obj/item/reagent_containers/rag/towel/syndicate, +/turf/open/floor/plasteel/freezer, +/area/syndicate_mothership) "Rm" = ( /obj/structure/chair/wood/wings{ dir = 3 @@ -25747,7 +25747,7 @@ lI lI lI Ax -fR +Bp qZ qZ Ax @@ -37828,8 +37828,8 @@ nx mA Tz ku -jA -kv +tg +Rl uM QV wp @@ -56343,7 +56343,7 @@ yr sw sw Ad -hH +AL Bx sw Cv diff --git a/code/__DEFINES/melee.dm b/code/__DEFINES/melee.dm new file mode 100644 index 0000000000..cb4a433211 --- /dev/null +++ b/code/__DEFINES/melee.dm @@ -0,0 +1,10 @@ +//Martial arts defines + +#define MARTIALART_BOXING "boxing" +#define MARTIALART_WRESTLING "wrestling" +#define MARTIALART_SLEEPINGCARP "sleeping carp" +#define MARTIALART_PSYCHOBRAWL "psychotic brawling" +#define MARTIALART_MUSHPUNCH "mushroom punch" +#define MARTIALART_KRAVMAGA "krav maga" +#define MARTIALART_CQC "CQC" +#define MARTIALART_PLASMAFIST "plasma fist" \ No newline at end of file diff --git a/code/datums/martial.dm b/code/datums/martial.dm index ae8f92a342..d119759efc 100644 --- a/code/datums/martial.dm +++ b/code/datums/martial.dm @@ -2,6 +2,7 @@ var/name = "Martial Art" var/streak = "" var/max_streak_length = 6 + var/id = "" //ID, used by mind/has_martialartcode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proc var/current_target var/datum/martial_art/base // The permanent style. This will be null unless the martial art is temporary var/deflection_chance = 0 //Chance to deflect projectiles diff --git a/code/datums/martial/boxing.dm b/code/datums/martial/boxing.dm index c93fc47f2b..7399528e1c 100644 --- a/code/datums/martial/boxing.dm +++ b/code/datums/martial/boxing.dm @@ -1,5 +1,6 @@ /datum/martial_art/boxing name = "Boxing" + id = MARTIALART_BOXING /datum/martial_art/boxing/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) to_chat(A, "Can't disarm while boxing!") diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index 55cd4a3f7a..71545476ff 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -6,6 +6,7 @@ /datum/martial_art/cqc name = "CQC" + id = MARTIALART_CQC help_verb = /mob/living/carbon/human/proc/CQC_help block_chance = 75 var/just_a_cook = FALSE diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm index cdf932e127..9e40a5a3dc 100644 --- a/code/datums/martial/krav_maga.dm +++ b/code/datums/martial/krav_maga.dm @@ -1,5 +1,6 @@ /datum/martial_art/krav_maga name = "Krav Maga" + id = MARTIALART_KRAVMAGA var/datum/action/neck_chop/neckchop = new/datum/action/neck_chop() var/datum/action/leg_sweep/legsweep = new/datum/action/leg_sweep() var/datum/action/lung_punch/lungpunch = new/datum/action/lung_punch() @@ -92,7 +93,7 @@ "[A] leg sweeps you!") playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1) D.apply_damage(5, BRUTE) - D.Knockdown(40, override_hardstun = 0.01, 25) + D.Knockdown(40, override_hardstun = 0.01, override_stamdmg = 25) log_combat(A, D, "leg sweeped") return 1 diff --git a/code/datums/martial/mushpunch.dm b/code/datums/martial/mushpunch.dm index 33d5bb51bf..1ef7734771 100644 --- a/code/datums/martial/mushpunch.dm +++ b/code/datums/martial/mushpunch.dm @@ -1,5 +1,6 @@ /datum/martial_art/mushpunch name = "Mushroom Punch" + id = MARTIALART_MUSHPUNCH /datum/martial_art/mushpunch/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) var/atk_verb diff --git a/code/datums/martial/plasma_fist.dm b/code/datums/martial/plasma_fist.dm index f540dc0783..e38a011db0 100644 --- a/code/datums/martial/plasma_fist.dm +++ b/code/datums/martial/plasma_fist.dm @@ -4,6 +4,7 @@ /datum/martial_art/plasma_fist name = "Plasma Fist" + id = MARTIALART_PLASMAFIST help_verb = /mob/living/carbon/human/proc/plasma_fist_help diff --git a/code/datums/martial/psychotic_brawl.dm b/code/datums/martial/psychotic_brawl.dm index 1cb18f903f..8f1a33a8b3 100644 --- a/code/datums/martial/psychotic_brawl.dm +++ b/code/datums/martial/psychotic_brawl.dm @@ -1,5 +1,6 @@ /datum/martial_art/psychotic_brawling name = "Psychotic Brawling" + id = MARTIALART_PSYCHOBRAWL /datum/martial_art/psychotic_brawling/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) return psycho_attack(A,D) diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 5f19c37b99..e205d7a435 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -6,6 +6,7 @@ /datum/martial_art/the_sleeping_carp name = "The Sleeping Carp" + id = MARTIALART_SLEEPINGCARP deflection_chance = 100 reroute_deflection = TRUE no_guns = TRUE diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm index e57edf9fb2..e07fa27ef5 100644 --- a/code/datums/martial/wrestling.dm +++ b/code/datums/martial/wrestling.dm @@ -10,6 +10,7 @@ /datum/martial_art/wrestling name = "Wrestling" + id = MARTIALART_WRESTLING var/datum/action/slam/slam = new/datum/action/slam() var/datum/action/throw_wrassle/throw_wrassle = new/datum/action/throw_wrassle() var/datum/action/kick/kick = new/datum/action/kick() diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 51fc6c54f6..8e61801e15 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -64,6 +64,8 @@ var/force_escaped = FALSE // Set by Into The Sunset command of the shuttle manipulator + var/list/learned_recipes //List of learned recipe TYPES. + /datum/mind/New(var/key) src.key = key soulOwner = src @@ -779,6 +781,11 @@ mind_initialize() //updates the mind (or creates and initializes one if one doesn't exist) mind.active = 1 //indicates that the mind is currently synced with a client +/datum/mind/proc/has_martialart(var/string) + if(martial_art && martial_art.id == string) + return martial_art + return FALSE + /mob/dead/new_player/sync_mind() return diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 1dbdb4efe0..141f7e510a 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -177,6 +177,8 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( desc = "A device used to rapidly pipe things." icon = 'icons/obj/tools.dmi' icon_state = "rpd" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' flags_1 = CONDUCT_1 force = 10 throwforce = 10 diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 21f6961e5d..686c6fd511 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -1,4 +1,3 @@ - ///books that teach things (intrinsic actions like bar flinging, spells like fireball or smoke, or martial arts)/// /obj/item/book/granter @@ -13,19 +12,50 @@ /obj/item/book/granter/proc/turn_page(mob/user) playsound(user, pick('sound/effects/pageturn1.ogg','sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg'), 30, 1) if(do_after(user,50, user)) - to_chat(user, "[pick(remarks)]") + if(remarks.len) + to_chat(user, "[pick(remarks)]") + else + to_chat(user, "You keep reading...") return TRUE return FALSE /obj/item/book/granter/proc/recoil(mob/user) //nothing so some books can just return +/obj/item/book/granter/proc/already_known(mob/user) + return FALSE + +/obj/item/book/granter/proc/on_reading_start(mob/user) + to_chat(user, "You start reading [name]...") + +/obj/item/book/granter/proc/on_reading_stopped(mob/user) + to_chat(user, "You stop reading...") + +/obj/item/book/granter/proc/on_reading_finished(mob/user) + to_chat(user, "You finish reading [name]!") + /obj/item/book/granter/proc/onlearned(mob/user) used = TRUE + /obj/item/book/granter/attack_self(mob/user) - if(reading == TRUE) + if(reading) to_chat(user, "You're already reading this!") return FALSE + if(already_known(user)) + return FALSE + if(used && oneuse) + recoil(user) + else + on_reading_start(user) + reading = TRUE + for(var/i=1, i<=pages_to_mastery, i++) + if(!turn_page(user)) + on_reading_stopped() + reading = FALSE + return + if(do_after(user,50, user)) + on_reading_finished(user) + reading = FALSE return TRUE ///ACTION BUTTONS/// @@ -34,33 +64,23 @@ var/granted_action var/actionname = "catching bugs" //might not seem needed but this makes it so you can safely name action buttons toggle this or that without it fucking up the granter, also caps -/obj/item/book/granter/action/attack_self(mob/user) - . = ..() - if(!.) - return +/obj/item/book/granter/action/already_known(mob/user) if(!granted_action) - return - var/datum/action/G = new granted_action + return TRUE for(var/datum/action/A in user.actions) - if(A.type == G.type) + if(A.type == granted_action) to_chat(user, "You already know all about [actionname].") - qdel(G) - return - if(used == TRUE && oneuse == TRUE) - recoil(user) - else - to_chat(user, "You start reading about [actionname]...") - reading = TRUE - for(var/i=1, i<=pages_to_mastery, i++) - if(!turn_page(user)) - to_chat(user, "You stop reading...") - reading = FALSE - qdel(G) - return - if(do_after(user,50, user)) - to_chat(user, "You feel like you've got a good handle on [actionname]!") - G.Grant(user) - reading = FALSE + return TRUE + return FALSE + +/obj/item/book/granter/action/on_reading_start(mob/user) + to_chat(user, "You start reading about [actionname]...") + +/obj/item/book/granter/action/on_reading_finished(mob/user) + to_chat(user, "You feel like you've got a good handle on [actionname]!") + var/datum/action/G = new granted_action + G.Grant(user) + onlearned(user) /obj/item/book/granter/action/drink_fling granted_action = /datum/action/innate/drink_fling @@ -120,38 +140,28 @@ var/spell var/spellname = "conjure bugs" -/obj/item/book/granter/spell/attack_self(mob/user) - . = ..() - if(!.) - return +/obj/item/book/granter/spell/already_known(mob/user) if(!spell) - return - var/obj/effect/proc_holder/spell/S = new spell + return TRUE for(var/obj/effect/proc_holder/spell/knownspell in user.mind.spell_list) - if(knownspell.type == S.type) + if(knownspell.type == spell) if(user.mind) if(iswizard(user)) - to_chat(user,"You're already far more versed in this spell than this flimsy howto book can provide.") + to_chat(user,"You're already far more versed in this spell than this flimsy how-to book can provide.") else to_chat(user,"You've already read this one.") - return - if(used == TRUE && oneuse == TRUE) - recoil(user) - else - to_chat(user, "You start reading about casting [spellname]...") - reading = TRUE - for(var/i=1, i<=pages_to_mastery, i++) - if(!turn_page(user)) - to_chat(user, "You stop reading...") - reading = FALSE - qdel(S) - return - if(do_after(user,50, user)) - to_chat(user, "You feel like you've experienced enough to cast [spellname]!") - user.mind.AddSpell(S) - user.log_message("learned the spell [spellname] ([S])", LOG_ATTACK, color="orange") - onlearned(user) - reading = FALSE + return TRUE + return FALSE + +/obj/item/book/granter/spell/on_reading_start(mob/user) + to_chat(user, "You start reading about casting [spellname]...") + +/obj/item/book/granter/spell/on_reading_finished(mob/user) + to_chat(user, "You feel like you've experienced enough to cast [spellname]!") + var/obj/effect/proc_holder/spell/S = new spell + user.mind.AddSpell(S) + user.log_message("learned the spell [spellname] ([S])", LOG_ATTACK, color="orange") + onlearned(user) /obj/item/book/granter/spell/recoil(mob/user) user.visible_message("[src] glows in a black light!") @@ -280,7 +290,8 @@ if(ishuman(user)) to_chat(user,"HORSIE HAS RISEN") var/obj/item/clothing/magichead = new /obj/item/clothing/mask/horsehead/cursed(user.drop_location()) - user.dropItemToGround(user.wear_mask, TRUE) + if(!user.dropItemToGround(user.wear_mask)) + qdel(user.wear_mask) user.equip_to_slot_if_possible(magichead, SLOT_WEAR_MASK, TRUE, TRUE) qdel(src) else @@ -327,35 +338,24 @@ var/martialname = "bug jitsu" var/greet = "You feel like you have mastered the art in breaking code. Nice work, jackass." -/obj/item/book/granter/martial/attack_self(mob/user) - . = ..() - if(!.) - return +/obj/item/book/granter/martial/already_known(mob/user) if(!martial) - return + return TRUE + var/datum/martial_art/MA = martial + if(user.mind.has_martialart(initial(MA.id))) + to_chat(user,"You already know [martialname]!") + return TRUE + return FALSE + +/obj/item/book/granter/martial/on_reading_start(mob/user) + to_chat(user, "You start reading about [martialname]...") + +/obj/item/book/granter/martial/on_reading_finished(mob/user) + to_chat(user, "[greet]") var/datum/martial_art/MA = new martial - if(user.mind.martial_art) - for(var/datum/martial_art/knownmartial in user.mind.martial_art) - if(knownmartial.type == MA.type) - to_chat(user,"You already know [martialname]!") - return - if(used == TRUE && oneuse == TRUE) - recoil(user) - else - to_chat(user, "You start reading about [martialname]...") - reading = TRUE - for(var/i=1, i<=pages_to_mastery, i++) - if(!turn_page(user)) - to_chat(user, "You stop reading...") - reading = FALSE - qdel(MA) - return - if(do_after(user,50, user)) - to_chat(user, "[greet]") - MA.teach(user) - user.log_message("learned the martial art [martialname] ([MA])", LOG_ATTACK, color="orange") - onlearned(user) - reading = FALSE + MA.teach(user) + user.log_message("learned the martial art [martialname] ([MA])", LOG_ATTACK, color="orange") + onlearned(user) /obj/item/book/granter/martial/cqc martial = /datum/martial_art/cqc @@ -416,3 +416,18 @@ icon_state = "blankscroll" // I did not include mushpunch's grant, it is not a book and the item does it just fine. + + +//Crafting Recipe books + +/obj/item/book/granter/crafting_recipe + var/list/crafting_recipe_types = list() + +/obj/item/book/granter/crafting_recipe/on_reading_finished(mob/user) + . = ..() + if(!user.mind) + return + for(var/crafting_recipe_type in crafting_recipe_types) + var/datum/crafting_recipe/R = crafting_recipe_type + user.mind.teach_crafting_recipe(crafting_recipe_type) + to_chat(user,"You learned how to make [initial(R.name)].") \ No newline at end of file diff --git a/code/game/objects/items/implants/implant_krav_maga.dm b/code/game/objects/items/implants/implant_krav_maga.dm index 3a751ecd0e..373658b386 100644 --- a/code/game/objects/items/implants/implant_krav_maga.dm +++ b/code/game/objects/items/implants/implant_krav_maga.dm @@ -21,7 +21,7 @@ return if(!H.mind) return - if(istype(H.mind.martial_art, /datum/martial_art/krav_maga)) + if(H.mind.has_martialart(MARTIALART_KRAVMAGA)) style.remove(H) else style.teach(H,1) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 4bb3359c2f..5610cbad9a 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -18,7 +18,7 @@ /obj/item/stack/medical/attack(mob/living/M, mob/user) - if(M.stat == DEAD) + if(M.stat == DEAD && !stop_bleeding) var/t_him = "it" if(M.gender == MALE) t_him = "him" diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index 68ddf3ce28..c58d934d6d 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -230,24 +230,23 @@ /obj/effect/proc_holder/changeling/sting/LSD name = "Hallucination Sting" - desc = "Causes terror in the target." - helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung, and the effect begins after a few seconds." + desc = "Causes terror in the target and deals a minor amount of toxin damage." + helptext = "We evolve the ability to sting a target with a powerful toxic hallucinogenic chemical. The target does not notice they have been stung, and the effect begins instantaneously. This ability is somewhat loud, and carries a small risk of our blood gaining violent sensitivity to heat." sting_icon = "sting_lsd" chemical_cost = 10 dna_cost = 1 + loudness = 1 action_icon = 'icons/mob/actions/actions_changeling.dmi' action_icon_state = "ling_sting_lsd" action_background_icon_state = "bg_ling" -/obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target) +/obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/target) log_combat(user, target, "stung", "LSD sting") - addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(100,200)) + if(target.reagents) + target.reagents.add_reagent("regenerative_materia", 5) + target.reagents.add_reagent("mindbreaker", 5) return TRUE -/obj/effect/proc_holder/changeling/sting/LSD/proc/hallucination_time(mob/living/carbon/target) - if(target) - target.hallucination = max(90, target.hallucination) - /obj/effect/proc_holder/changeling/sting/cryo name = "Cryogenic Sting" desc = "We silently sting a human with a cocktail of chemicals that freeze them." diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index 3e96512bb8..0fb46c3e46 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -317,6 +317,8 @@ var/list/cant_craft = list() for(var/rec in GLOB.crafting_recipes) var/datum/crafting_recipe/R = rec + if(!R.always_availible && !(R.type in user?.mind?.learned_recipes)) //User doesn't actually know how to make this. + continue if((R.category != cur_category) || (R.subcategory != cur_subcategory)) continue if(check_contents(R, surroundings)) @@ -431,3 +433,10 @@ data["tool_text"] = tool_text return data + +//Mind helpers + +/datum/mind/proc/teach_crafting_recipe(R) + if(!learned_recipes) + learned_recipes = list() + learned_recipes |= R \ No newline at end of file diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index f0665682a9..3c614c6a9e 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -9,6 +9,7 @@ var/chem_catalysts[] = list() //like tools but for reagents var/category = CAT_NONE //where it shows up in the crafting UI var/subcategory = CAT_NONE + var/always_availible = TRUE //Set to FALSE if it needs to be learned first. /datum/crafting_recipe/pin_removal name = "Pin Removal" diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index 1eeea79410..6d10a2c6ef 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -283,7 +283,7 @@ tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3) foodtype = GRAIN | DAIRY | FRUIT | SUGAR -obj/item/reagent_containers/food/snacks/store/cake/holy_cake +/obj/item/reagent_containers/food/snacks/store/cake/holy_cake name = "angel food cake" desc = "A cake made for angels and chaplains alike! Contains holy water." icon = 'modular_citadel/icons/obj/food/cake.dmi' @@ -322,7 +322,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake tastes = list("cake" = 5, "sweetness" = 5, "batter" = 1) foodtype = GRAIN | DAIRY | SUGAR | JUNKFOOD -obj/item/reagent_containers/food/snacks/store/cake/hardware_cake +/obj/item/reagent_containers/food/snacks/store/cake/hardware_cake name = "hardware cake" desc = "A cake that is made with electronic boards and leaks acid..." icon = 'modular_citadel/icons/obj/food/cake.dmi' diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 58de99945b..70b8c468c5 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -432,7 +432,21 @@ /mob/dead/new_player/proc/LateChoices() - var/list/dat = list("