diff --git a/_maps/map_files/Baltimore/baltimore_surface.dmm b/_maps/map_files/Baltimore/baltimore_surface.dmm index 001611e4b7b..2c38310efb5 100644 --- a/_maps/map_files/Baltimore/baltimore_surface.dmm +++ b/_maps/map_files/Baltimore/baltimore_surface.dmm @@ -2449,6 +2449,7 @@ light_color = "#FFDDCC"; color = "#FFDDCC" }, +/obj/mecha/working/normalvehicle/buggy/dune, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust{ icon_state = "bluerustysolid" }, @@ -2980,12 +2981,6 @@ /obj/item/clothing/ears/headphones, /turf/open/floor/plasteel/f13/vault_floor/floor, /area/f13/raider_mall) -"bch" = ( -/obj/mecha/combat/phazon/truckcaravan/loaded{ - dir = 8 - }, -/turf/open/floor/f13/wood, -/area/f13/wasteland/town) "bcj" = ( /obj/structure/fence{ pixel_x = -12 @@ -6393,16 +6388,6 @@ name = "Ship wall" }, /area/f13/building/boat) -"cph" = ( -/obj/machinery/light/small{ - light_color = "#FF0000"; - color = "#FF0000"; - name = "red light fixture"; - dir = 8 - }, -/obj/mecha/combat/phazon/buggy/red/loaded, -/turf/open/floor/plasteel/f13/vault_floor/plating, -/area/f13/ruins) "cpw" = ( /obj/structure/cargocrate{ color = "#FFFFFF" @@ -6740,24 +6725,6 @@ /obj/effect/decal/cleanable/greenglow, /turf/open/floor/plating, /area/f13/building/boat) -"cxM" = ( -/obj/structure/railing/wood/post{ - pixel_x = -16; - pixel_y = 6; - color = "#cc3300" - }, -/obj/structure/railing/wood/post{ - pixel_x = -16; - pixel_y = -16; - color = "#cc3300" - }, -/obj/structure/barricade/tentclothedge{ - dir = 8 - }, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "cxY" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -7043,6 +7010,14 @@ icon_state = "verticalleftborderleft2" }, /area/f13/wasteland/city) +"cCL" = ( +/obj/structure/barricade/tentclothedge{ + dir = 4 + }, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "cCP" = ( /obj/structure/flora/grass/wasteland, /turf/open/indestructible/ground/outside/gravel, @@ -7759,29 +7734,6 @@ icon_state = "horizontaloutermain1" }, /area/f13/wasteland/city) -"cNN" = ( -/obj/structure/railing/wood/post{ - pixel_x = -16; - pixel_y = 6; - color = "#cc3300" - }, -/obj/structure/railing/wood/post{ - pixel_x = -16; - pixel_y = -16; - color = "#cc3300" - }, -/obj/structure/railing/wood/post{ - pixel_x = -16; - pixel_y = -16; - color = "#cc3300" - }, -/obj/structure/barricade/tentclothedge{ - dir = 8 - }, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "cNS" = ( /turf/open/indestructible/ground/outside/gravel, /area/f13/citycaves) @@ -9948,20 +9900,6 @@ name = "rusted Docks" }, /area/f13/ruins) -"dzR" = ( -/obj/structure/barricade/tentclothcorner{ - dir = 8 - }, -/obj/structure/railing/wood{ - pixel_y = 7; - name = "wooden docks"; - color = "#cc3300"; - layer = 1 - }, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "dzW" = ( /obj/machinery/door/unpowered/secure_bos, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, @@ -10214,6 +10152,12 @@ }, /turf/closed/wall/rust, /area/f13/building/boat) +"dDs" = ( +/obj/structure/destructible/tribal_torch/lit, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "dDt" = ( /obj/structure/chair/folding{ dir = 4 @@ -11469,14 +11413,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/f13/vault_floor/green/whitegreenfull, /area/f13/building/center) -"edW" = ( -/obj/structure/bed/mattress{ - icon_state = "mattress1" - }, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "edX" = ( /obj/structure/flora/roadplant{ icon_state = "grass_2d" @@ -12473,6 +12409,12 @@ sunlight_state = 1 }, /area/f13/wasteland/city) +"eyh" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "eyM" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/f13/vault_floor/misc/vault1{ @@ -14281,13 +14223,6 @@ icon_state = "fancy-broken3" }, /area/f13/ruins) -"fgP" = ( -/obj/mecha/combat/phazon/pickuptruck/mechanic, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust{ - name = "Old Docks"; - sunlight_state = 1 - }, -/area/f13/building/center) "fgY" = ( /obj/structure/stone_tile/block, /obj/structure/stone_tile/block{ @@ -14963,6 +14898,14 @@ icon_state = "floorscorched1" }, /area/f13/wasteland/city/citycenter) +"fts" = ( +/obj/structure/bed/mattress{ + icon_state = "mattress1" + }, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "ftu" = ( /obj/structure/table/glass, /obj/item/reagent_containers/food/drinks/coffee, @@ -15354,11 +15297,11 @@ }, /area/f13/wasteland/town) "fAj" = ( -/obj/mecha/combat/phazon/jeep/bos/loaded, /obj/machinery/light/small{ dir = 8; name = "tan light fixture" }, +/obj/mecha/working/normalvehicle/jeep/bos, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, /area/f13/brotherhood) "fAq" = ( @@ -15553,18 +15496,6 @@ /obj/structure/closet/crate/wooden/toy, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, /area/f13/ruins) -"fEi" = ( -/obj/structure/table/wood/fancy/red, -/obj/mecha/combat/phazon/highwayman/loaded{ - dir = 8 - }, -/obj/mecha/combat/phazon/highwayman/loaded{ - dir = 8 - }, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust{ - icon_state = "bluerustysolid" - }, -/area/f13/building/center) "fEn" = ( /mob/living/simple_animal/hostile/ghoul, /turf/open/floor/plating/rust, @@ -15587,6 +15518,12 @@ icon_state = "common1" }, /area/f13/building/center) +"fEu" = ( +/obj/mecha/working/normalvehicle/jeep/enclave/loaded, +/turf/open/floor/plating/dirt/dirt_maryland{ + icon_state = "dirt_original" + }, +/area/f13/wasteland/city) "fEy" = ( /obj/effect/decal/cleanable/dirt, /turf/closed/wall/f13/ruins, @@ -15882,6 +15819,7 @@ color = "#A47449"; dir = 4 }, +/obj/mecha/working/normalvehicle/corvega/police/loaded, /turf/open/indestructible/ground/outside/sidewalkdirt, /area/f13/wasteland/town) "fJl" = ( @@ -18261,10 +18199,6 @@ }, /turf/open/indestructible/ground/outside/gravel, /area/f13/wasteland/town) -"gzh" = ( -/obj/structure/simple_door/bunker, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, -/area/f13/brotherhood) "gzj" = ( /obj/structure/table/reinforced, /obj/item/circuitboard/computer/powermonitor, @@ -19687,9 +19621,6 @@ /obj/structure/railing{ color = "#A47449" }, -/obj/mecha/combat/phazon/buggy/blue/loaded{ - dir = 8 - }, /turf/open/indestructible/ground/outside/gravel, /area/f13/wasteland/town) "hbR" = ( @@ -21308,6 +21239,27 @@ icon_state = "mosaic_dark-broken5" }, /area/f13/building/center) +"hFb" = ( +/obj/effect/decal/marking{ + icon_state = "dottedhorizontalcorroded" + }, +/obj/structure/railing/wood/post{ + pixel_x = -16; + pixel_y = 6; + color = "#cc3300" + }, +/obj/structure/railing/wood/post{ + pixel_x = -16; + pixel_y = -16; + color = "#cc3300" + }, +/obj/structure/barricade/tentclothedge{ + dir = 8 + }, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "hFf" = ( /obj/structure/wreck/trash/two_barrels, /turf/open/indestructible/ground/outside/baltimore{ @@ -24217,14 +24169,6 @@ /obj/machinery/recycler, /turf/open/floor/wood_mosaic/wood_mosaic_light, /area/f13/building/boat) -"iFr" = ( -/obj/mecha/combat/phazon/buggy/blue/loaded{ - dir = 8 - }, -/turf/open/indestructible/ground/outside/sidewalkdirt{ - icon_state = "horizontalbottomborderbottom1" - }, -/area/f13/wasteland/town) "iFu" = ( /obj/effect/mob_spawn/human/corpse/vault, /turf/open/floor/wood_wide/wood_wide_dark, @@ -24289,14 +24233,6 @@ }, /turf/open/indestructible/ground/outside/gravel, /area/f13/wasteland/town) -"iGi" = ( -/obj/structure/barricade/tentclothedge{ - dir = 4 - }, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "iGl" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -24784,27 +24720,6 @@ sunlight_state = 1 }, /area/f13/wasteland/town) -"iOf" = ( -/obj/effect/decal/marking{ - icon_state = "dottedhorizontalcorroded" - }, -/obj/structure/railing/wood/post{ - pixel_x = -16; - pixel_y = 6; - color = "#cc3300" - }, -/obj/structure/railing/wood/post{ - pixel_x = -16; - pixel_y = -16; - color = "#cc3300" - }, -/obj/structure/barricade/tentclothedge{ - dir = 8 - }, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "iOk" = ( /obj/structure/stairs/east{ dir = 8 @@ -25785,6 +25700,10 @@ }, /turf/open/indestructible/ground/outside/gravel, /area/f13/underground/cave) +"jhO" = ( +/obj/mecha/working/normalvehicle/pickuptruck/bos/loaded, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/brotherhood) "jhT" = ( /obj/machinery/chem_master/advanced, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust{ @@ -26317,6 +26236,15 @@ icon_state = "road_east_w" }, /area/f13/wasteland/city/citycenter) +"jtI" = ( +/obj/effect/decal/marking{ + icon_state = "dottedhorizontalcorroded" + }, +/obj/structure/barricade/tentclothedge, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "jtQ" = ( /obj/structure/chair/booth{ icon_state = "booth_east_south" @@ -28810,6 +28738,12 @@ icon_state = "grass_9" }, /area/f13/wasteland/city) +"knL" = ( +/obj/mecha/working/normalvehicle/truckcaravan/loaded{ + dir = 8 + }, +/turf/open/floor/f13/wood, +/area/f13/wasteland/town) "kog" = ( /obj/structure/closet/crate/large, /obj/effect/spawner/lootdrop/low_tools, @@ -29592,6 +29526,12 @@ icon_state = "road_center" }, /area/f13/wasteland/town) +"kCn" = ( +/obj/mecha/working/normalvehicle/ambulance/loaded{ + dir = 8 + }, +/turf/open/floor/plasteel/f13/vault_floor/plating, +/area/f13/clinic) "kCx" = ( /obj/structure/flora/roadplant{ icon_state = "shrub_decals" @@ -30205,15 +30145,6 @@ }, /turf/open/floor/plasteel/f13/vault_floor/misc/vault1, /area/f13/building/boat) -"kNW" = ( -/obj/structure/table/wood/fancy, -/obj/mecha/combat/phazon/buggy/red{ - dir = 8 - }, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust{ - icon_state = "bluerustysolid" - }, -/area/f13/building/center) "kOb" = ( /obj/structure/bookshelf, /obj/item/book/granter/action/origami, @@ -30652,6 +30583,33 @@ /mob/living/simple_animal/hostile/ghoul/reaver, /turf/open/floor/plasteel/f13/vault_floor/misc/rarewhite, /area/f13/building/boat) +"kVz" = ( +/obj/effect/decal/marking{ + icon_state = "dottedhorizontalcorroded" + }, +/obj/structure/railing/wood/post{ + pixel_x = -16; + pixel_y = 6; + color = "#cc3300" + }, +/obj/structure/railing/wood/post{ + pixel_x = -16; + pixel_y = -16; + color = "#cc3300" + }, +/obj/structure/barricade/tentclothcorner{ + dir = 1 + }, +/obj/structure/railing/wood{ + pixel_y = 7; + name = "wooden docks"; + color = "#cc3300"; + layer = 1 + }, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "kVF" = ( /obj/machinery/smartfridge/bottlerack/lootshelf/brews, /turf/open/floor/plasteel/f13/vault_floor{ @@ -31635,6 +31593,20 @@ icon_state = "fancy-broken3" }, /area/f13/building) +"lnp" = ( +/obj/structure/barricade/tentclothcorner{ + dir = 8 + }, +/obj/structure/railing/wood{ + pixel_y = 7; + name = "wooden docks"; + color = "#cc3300"; + layer = 1 + }, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "lnr" = ( /obj/effect/decal/cleanable/dirt, /mob/living/simple_animal/hostile/molerat, @@ -32103,7 +32075,6 @@ dir = 8; name = "tan light fixture" }, -/obj/mecha/combat/phazon/pickuptruck/bos/armed/loaded, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, /area/f13/brotherhood) "lwQ" = ( @@ -32398,13 +32369,6 @@ icon_state = "common_light-broken4" }, /area/f13/building/boat) -"lAv" = ( -/obj/mecha/combat/phazon/pickuptruck/loaded, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust{ - name = "Old Docks"; - sunlight_state = 1 - }, -/area/f13/building/center) "lAz" = ( /obj/effect/decal/remains/human, /turf/open/indestructible/ground/outside/desert{ @@ -33788,6 +33752,12 @@ sunlight_state = 1 }, /area/f13/wasteland/city) +"lWo" = ( +/obj/structure/barricade/tentclothcorner, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "lWu" = ( /obj/vehicle/ridden/lavaboat{ name = "Canoe"; @@ -34303,6 +34273,7 @@ /area/f13/building/center) "mfN" = ( /obj/structure/flora/grass/coyote/ten, +/obj/mecha/working/normalvehicle/buggy/blue/loaded, /turf/open/indestructible/ground/outside/gravel, /area/f13/wasteland/town) "mfS" = ( @@ -34783,30 +34754,6 @@ }, /turf/open/floor/plasteel/f13/vault_floor/yellow/whiteyellowfull, /area/f13/ruins) -"mpD" = ( -/obj/effect/decal/marking{ - icon_state = "dottedhorizontalcorroded" - }, -/obj/structure/barricade/tentclothedge{ - dir = 1; - pixel_y = -3 - }, -/obj/structure/railing/wood{ - pixel_y = 4; - name = "wooden docks"; - color = "#cc3300"; - layer = 1 - }, -/obj/structure/railing/wood{ - pixel_y = 7; - name = "wooden docks"; - color = "#cc3300"; - layer = 1 - }, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "mpP" = ( /turf/open/indestructible/ground/outside/sidewalkdirt{ icon_state = "verticalrightborderright2bottom" @@ -35026,6 +34973,29 @@ sunlight_state = 1 }, /area/f13/wasteland/town) +"muT" = ( +/obj/structure/railing/wood/post{ + pixel_x = -16; + pixel_y = 6; + color = "#cc3300" + }, +/obj/structure/railing/wood/post{ + pixel_x = -16; + pixel_y = -16; + color = "#cc3300" + }, +/obj/structure/railing/wood/post{ + pixel_x = -16; + pixel_y = -16; + color = "#cc3300" + }, +/obj/structure/barricade/tentclothedge{ + dir = 8 + }, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "muX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -35370,15 +35340,6 @@ icon_state = "mosaic_dark1" }, /area/f13/raider_mall) -"mAj" = ( -/obj/effect/decal/marking{ - icon_state = "dottedhorizontalcorroded" - }, -/obj/structure/barricade/tentclothedge, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "mAy" = ( /obj/structure/rug/big/rug_yellow, /obj/effect/decal/cleanable/greenglow, @@ -37805,6 +37766,10 @@ /obj/effect/decal/cleanable/greenglow, /turf/open/floor/wood_fancy, /area/f13/ruins) +"nuy" = ( +/obj/structure/simple_door/bunker, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/brotherhood) "nuD" = ( /obj/structure/reagent_dispensers/fueltank/vehicle_gas_station{ icon_state = "vat"; @@ -39036,15 +39001,6 @@ icon_state = "housebase" }, /area/f13/building/center) -"nSA" = ( -/obj/effect/decal/marking{ - icon_state = "dottedhorizontalcorroded" - }, -/obj/structure/closet/crate/footchest, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "nSG" = ( /obj/structure/closet/fridge, /obj/effect/decal/cleanable/glass, @@ -39448,6 +39404,15 @@ sunlight_state = 1 }, /area/f13/wasteland/city) +"nZD" = ( +/obj/structure/table/wood/fancy, +/obj/mecha/working/normalvehicle/highwayman/loaded{ + dir = 8 + }, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust{ + icon_state = "bluerustysolid" + }, +/area/f13/building/center) "nZP" = ( /obj/structure/gas_pump/oilpump3X, /turf/open/indestructible/ground/outside/sidewalkdirt{ @@ -39912,12 +39877,6 @@ }, /turf/open/indestructible/ground/outside/ruins, /area/f13/wasteland/city/citycenter) -"oiF" = ( -/obj/mecha/combat/phazon/corvega/police/loaded{ - dir = 8 - }, -/turf/open/indestructible/ground/outside/sidewalkdirt, -/area/f13/wasteland/town) "oiO" = ( /obj/structure/table/wood, /obj/item/kirbyplants{ @@ -43549,27 +43508,6 @@ sunlight_state = 1 }, /area/f13/building/boat) -"pvQ" = ( -/obj/structure/barricade/tentclothedge{ - dir = 1; - pixel_y = -3 - }, -/obj/structure/railing/wood{ - pixel_y = 4; - name = "wooden docks"; - color = "#cc3300"; - layer = 1 - }, -/obj/structure/railing/wood{ - pixel_y = 7; - name = "wooden docks"; - color = "#cc3300"; - layer = 1 - }, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "pvT" = ( /obj/structure/railing{ color = "#A47449"; @@ -43935,6 +43873,28 @@ icon_state = "common_light1" }, /area/f13/Ocean) +"pCm" = ( +/obj/effect/decal/marking{ + icon_state = "dottedhorizontalcorroded" + }, +/obj/structure/railing/wood/post{ + pixel_x = -16; + pixel_y = 6; + color = "#cc3300" + }, +/obj/structure/railing/wood/post{ + pixel_x = -16; + pixel_y = -16; + color = "#cc3300" + }, +/obj/structure/barricade/tentclothedge, +/obj/structure/barricade/tentclothcorner{ + dir = 4 + }, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "pCD" = ( /obj/structure/table/reinforced, /obj/structure/barricade/bars, @@ -44737,28 +44697,6 @@ }, /turf/open/floor/wood_common, /area/f13/building/boat) -"pSe" = ( -/obj/effect/decal/marking{ - icon_state = "dottedhorizontalcorroded" - }, -/obj/structure/railing/wood/post{ - pixel_x = -16; - pixel_y = 6; - color = "#cc3300" - }, -/obj/structure/railing/wood/post{ - pixel_x = -16; - pixel_y = -16; - color = "#cc3300" - }, -/obj/structure/barricade/tentclothedge, -/obj/structure/barricade/tentclothcorner{ - dir = 4 - }, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "pSh" = ( /obj/effect/decal/cleanable/glass, /turf/open/floor/wood_fancy/wood_fancy_light, @@ -47107,12 +47045,6 @@ /obj/structure/timeddoor, /turf/open/floor/wood_common/wood_common_light, /area/f13/building/boat) -"qKA" = ( -/obj/structure/destructible/tribal_torch/lit, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "qKS" = ( /obj/structure/flora/roadplant{ icon_state = "grass_7d" @@ -50729,6 +50661,15 @@ }, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, /area/f13/ruins) +"rUc" = ( +/obj/effect/decal/marking{ + icon_state = "dottedhorizontalcorroded" + }, +/obj/structure/closet/crate/footchest, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "rUd" = ( /obj/structure/flora/wasteplant/wild_yucca, /turf/open/floor/plating/dirt/dirt_maryland{ @@ -51066,12 +51007,6 @@ /obj/item/chair/wood, /turf/open/floor/plating/rust, /area/f13/citycaves) -"rZy" = ( -/obj/structure/simple_door/tentflap_cloth, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "rZz" = ( /obj/structure/rack/shelf_metal, /obj/item/radio/headset, @@ -51128,6 +51063,13 @@ icon_state = "grass_2" }, /area/f13/building/center) +"sbw" = ( +/obj/mecha/working/normalvehicle/pickuptruck/mechanic, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust{ + name = "Old Docks"; + sunlight_state = 1 + }, +/area/f13/building/center) "sby" = ( /obj/machinery/chem_master/primitive, /obj/structure/legion_extractor{ @@ -51144,13 +51086,6 @@ }, /turf/open/floor/plasteel/f13/vault_floor/plating, /area/f13/ruins) -"sbK" = ( -/obj/mecha/combat/phazon/buggy/loaded, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust{ - name = "Old Docks"; - sunlight_state = 1 - }, -/area/f13/building/center) "scb" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/low_tools, @@ -51388,6 +51323,15 @@ icon_state = "grass_9" }, /area/f13/wasteland/city) +"sfR" = ( +/obj/machinery/light/small{ + light_color = "#FF0000"; + color = "#FF0000"; + name = "red light fixture"; + dir = 8 + }, +/turf/open/floor/plasteel/f13/vault_floor/plating, +/area/f13/ruins) "sfS" = ( /obj/structure/table/glass, /obj/machinery/computer/terminal{ @@ -54377,6 +54321,30 @@ sunlight_state = 1 }, /area/f13/wasteland/town) +"tih" = ( +/obj/effect/decal/marking{ + icon_state = "dottedhorizontalcorroded" + }, +/obj/structure/barricade/tentclothedge{ + dir = 1; + pixel_y = -3 + }, +/obj/structure/railing/wood{ + pixel_y = 4; + name = "wooden docks"; + color = "#cc3300"; + layer = 1 + }, +/obj/structure/railing/wood{ + pixel_y = 7; + name = "wooden docks"; + color = "#cc3300"; + layer = 1 + }, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "tii" = ( /mob/living/simple_animal/chicken, /turf/open/indestructible/ground/outside/dirt, @@ -56170,15 +56138,6 @@ icon_state = "grass_4" }, /area/f13/wasteland/city/citycenter) -"tRY" = ( -/obj/structure/table/wood/fancy, -/obj/mecha/combat/phazon/corvega{ - dir = 8 - }, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust{ - icon_state = "bluerustysolid" - }, -/area/f13/building/center) "tSn" = ( /obj/structure/railing/wood{ dir = 8; @@ -56728,14 +56687,6 @@ name = "rusted Docks" }, /area/f13/wasteland/city/citycenter) -"ucV" = ( -/obj/mecha/combat/phazon/jeep/enclave/loaded{ - dir = 8 - }, -/turf/open/floor/plating/dirt/dirt_maryland{ - icon_state = "dirt_original" - }, -/area/f13/wasteland/city) "udi" = ( /obj/structure/flora/wasteplant/fever_blossom, /turf/open/floor/plating/dirt/dirt_maryland{ @@ -58030,6 +57981,15 @@ name = "rusted Docks" }, /area/f13/wasteland/city) +"uAv" = ( +/obj/structure/table/wood/fancy/red, +/obj/mecha/working/normalvehicle/corvega{ + dir = 8 + }, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust{ + icon_state = "bluerustysolid" + }, +/area/f13/building/center) "uAw" = ( /obj/structure/fluff/rails, /obj/structure/fence{ @@ -58413,33 +58373,6 @@ icon_state = "bluerustysolid" }, /area/f13/ruins) -"uGY" = ( -/obj/effect/decal/marking{ - icon_state = "dottedhorizontalcorroded" - }, -/obj/structure/railing/wood/post{ - pixel_x = -16; - pixel_y = 6; - color = "#cc3300" - }, -/obj/structure/railing/wood/post{ - pixel_x = -16; - pixel_y = -16; - color = "#cc3300" - }, -/obj/structure/barricade/tentclothcorner{ - dir = 1 - }, -/obj/structure/railing/wood{ - pixel_y = 7; - name = "wooden docks"; - color = "#cc3300"; - layer = 1 - }, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "uHh" = ( /turf/open/indestructible/ground/outside/sidewalkdirt{ icon_state = "horizontalbottomborderbottom2left" @@ -60434,6 +60367,12 @@ icon_state = "common_light-broken6" }, /area/f13/building/center) +"vpm" = ( +/obj/structure/simple_door/tentflap_cloth, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "vpo" = ( /obj/structure/car/rubbish3, /turf/open/indestructible/ground/outside/baltimore{ @@ -60761,6 +60700,27 @@ sunlight_state = 1 }, /area/f13/building/boat) +"vtN" = ( +/obj/structure/barricade/tentclothedge{ + dir = 1; + pixel_y = -3 + }, +/obj/structure/railing/wood{ + pixel_y = 4; + name = "wooden docks"; + color = "#cc3300"; + layer = 1 + }, +/obj/structure/railing/wood{ + pixel_y = 7; + name = "wooden docks"; + color = "#cc3300"; + layer = 1 + }, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) "vtP" = ( /obj/structure/flora/junglebush/large, /turf/open/floor/plating, @@ -62880,6 +62840,31 @@ sunlight_state = 1 }, /area/f13/Ocean) +"wie" = ( +/obj/structure/railing/wood/post{ + pixel_x = -16; + pixel_y = 6; + color = "#cc3300" + }, +/obj/structure/railing/wood/post{ + pixel_x = -16; + pixel_y = -16; + color = "#cc3300" + }, +/obj/structure/barricade/tentclothedge{ + dir = 8 + }, +/turf/open/indestructible/ground/outside/baltimore{ + icon_state = "road_center" + }, +/area/f13/ruins) +"wig" = ( +/obj/mecha/working/normalvehicle/pickuptruck/blue, +/turf/open/floor/wood_common{ + name = "wooden dock"; + sunlight_state = 1 + }, +/area/f13/wasteland/town) "wil" = ( /obj/structure/barricade/tentclothedge{ dir = 8 @@ -63433,10 +63418,6 @@ "wqk" = ( /turf/closed/wall/f13/sunset/brick_small_dark, /area/f13/wasteland/city/citycenter) -"wqo" = ( -/obj/mecha/combat/phazon/buggy/flamme/loaded, -/turf/open/floor/plasteel/f13/vault_floor/plating, -/area/f13/ruins) "wqA" = ( /obj/item/storage/trash_stack{ icon_state = "trash_3" @@ -65437,12 +65418,6 @@ icon_state = "damaged" }, /area/f13/ruins) -"xek" = ( -/obj/structure/barricade/tentclothcorner, -/turf/open/indestructible/ground/outside/baltimore{ - icon_state = "road_center" - }, -/area/f13/wasteland/city) "xep" = ( /obj/structure/statue/wood/headstonewood, /turf/open/floor/plating/dirt/dirt_maryland{ @@ -78981,7 +78956,7 @@ tvB daY cOf scc -vYZ +kCn veG hNP nTk @@ -79238,7 +79213,7 @@ nTL veG bkx iot -tvB +uOA hMN hNP nTk @@ -91322,11 +91297,11 @@ oEs oEs umn jIY -uGY -cNN -iOf -cxM -pSe +kVz +muT +hFb +wie +pCm oyP wBL oMn @@ -91579,11 +91554,11 @@ oEs umn umn jIY -mpD -edW -nSA -edW -mAj +tih +fts +rUc +fts +jtI oEs sVp oEs @@ -91836,11 +91811,11 @@ oEs umn ror jIY -pvQ -qKA -xrw -oEs -rZy +vtN +dDs +eyh +tpV +vpm oEs oEs oEs @@ -92093,11 +92068,11 @@ oEs umn jzR jIY -dzR -iGi -iGi -iGi -xek +lnp +cCL +cCL +cCL +lWo oEs oEs bqv @@ -95684,9 +95659,9 @@ dbL cRl cRl cRl -cRl +jhO dbL -gzh +nuy dbL umn dbL @@ -109547,7 +109522,7 @@ crF crF crF jNH -bch +knL xcx hLh kvy @@ -110672,7 +110647,7 @@ kGw lME qcM qXy -cph +sfR wHT wHT wHT @@ -110931,7 +110906,7 @@ qcM ran wHT tHt -wqo +wHT wHT qDu fkX @@ -116257,7 +116232,7 @@ diW aas uqR jbE -iFr +eYp mdu caI ipM @@ -116302,9 +116277,9 @@ mBD mBD siv vQj -sbK +hoW uPB -fgP +hoW duO lgb lgb @@ -116559,7 +116534,7 @@ mBD kDu siv vQj -hoW +sbw hoW hoW duO @@ -117073,7 +117048,7 @@ hpn mBD rEo vQj -lAv +hoW hoW aNv vQj @@ -117474,7 +117449,7 @@ rsn rsn fLW ngb -ngb +wig bdU bdU bdU @@ -118314,7 +118289,7 @@ aas uqR oBJ qOk -oiF +mdu vPV ipF qHC @@ -118358,7 +118333,7 @@ eLJ eHb xep vQj -tRY +jzr qfZ qfZ qfZ @@ -118619,7 +118594,7 @@ xkU lFf qfZ qfZ -fEi +uAv vQj wLd dAh @@ -119129,7 +119104,7 @@ poz ohH eLJ vQj -kNW +nZD qfZ qQU qQU @@ -129158,7 +129133,7 @@ fsH ldb bWb icV -ucV +icV dti mSo rJx @@ -130177,7 +130152,7 @@ vUr vmD fbu jXT -ucV +icV icV icV icV @@ -131970,7 +131945,7 @@ bnp cvb mIJ icV -icV +fEu ret dcz dti diff --git a/_maps/map_files/Baltimore/baltimore_upperlevel.dmm b/_maps/map_files/Baltimore/baltimore_upperlevel.dmm index 259a8871812..d3423427d01 100644 --- a/_maps/map_files/Baltimore/baltimore_upperlevel.dmm +++ b/_maps/map_files/Baltimore/baltimore_upperlevel.dmm @@ -414,18 +414,6 @@ icon_state = "bluerustysolid" }, /area/f13/building/boat) -"atl" = ( -/obj/mecha/combat/phazon/vertibird/enclave/loaded, -/obj/effect/turf_decal/delivery, -/turf/open/floor/wood_common/wood_common_light, -/area/f13/wasteland/city) -"atz" = ( -/obj/mecha/combat/phazon/buggy/red/loaded, -/turf/open/floor/plating/rust{ - sunlight_state = 1; - name = "rusted Docks" - }, -/area/f13/Ocean) "auj" = ( /turf/open/floor/wood_worn/wood_worn_light, /area/f13/office) @@ -3200,6 +3188,24 @@ icon_state = "common_light1" }, /area/f13/wasteland/town) +"cUZ" = ( +/obj/structure/displaycase{ + pixel_y = 61; + layer = 20 + }, +/obj/item/gun/flintlock{ + pixel_y = 58; + layer = 1; + anchored = 1 + }, +/obj/structure/sign/poster/official/fruit_bowl{ + pixel_x = -32 + }, +/obj/machinery/computer/card/town/locust{ + dir = 4 + }, +/turf/open/floor/wood_common/wood_common_light, +/area/f13/office) "cVG" = ( /obj/structure/chair/wood{ dir = 4 @@ -6412,21 +6418,6 @@ }, /turf/open/floor/wood_fancy, /area/f13/ruins) -"fUX" = ( -/obj/structure/displaycase{ - pixel_y = 61; - layer = 20 - }, -/obj/item/gun/flintlock{ - pixel_y = 58; - layer = 1; - anchored = 1 - }, -/obj/structure/sign/poster/official/fruit_bowl{ - pixel_x = -32 - }, -/turf/open/floor/wood_common/wood_common_light, -/area/f13/office) "fVk" = ( /obj/structure/filingcabinet, /obj/structure/filingcabinet{ @@ -8708,10 +8699,6 @@ }, /turf/open/floor/plating/rust, /area/f13/outpost) -"iaa" = ( -/obj/mecha/combat/phazon/vertibird/brotherhood/loaded, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, -/area/f13/brotherhood) "iau" = ( /obj/structure/lattice/catwalk, /obj/structure/chair/stool/bronze, @@ -11454,13 +11441,6 @@ icon_state = "fancy_light-broken6" }, /area/f13/wasteland/city) -"kHu" = ( -/obj/mecha/combat/phazon/vertibird/loaded, -/turf/open/floor/plasteel/f13/vault_floor/misc/vault1{ - name = "Docks"; - sunlight_state = 1 - }, -/area/f13/building) "kIe" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/f13/vault_floor/yellow/side, @@ -16432,6 +16412,10 @@ /obj/machinery/mineral/wasteland_vendor/pipboy, /turf/open/indestructible/ground/outside/roof, /area/f13/wasteland/town) +"pnC" = ( +/obj/mecha/working/normalvehicle/vertibird/brotherhood, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/brotherhood) "pnW" = ( /obj/structure/cargocrate{ icon_state = "cargocrate3"; @@ -21243,13 +21227,6 @@ /obj/structure/simple_door/repaired, /turf/open/floor/wood_mosaic, /area/f13/building) -"tSN" = ( -/obj/mecha/combat/phazon/buggy/flamme/loaded, -/turf/open/floor/plating/rust{ - sunlight_state = 1; - name = "rusted Docks" - }, -/area/f13/Ocean) "tSR" = ( /obj/item/reagent_containers/food/snacks/f13/deathclawegg, /obj/effect/decal/cleanable/blood/gibs/human/down, @@ -24579,6 +24556,11 @@ icon_state = "housewood2" }, /area/f13/brotherhood) +"wYI" = ( +/obj/effect/turf_decal/delivery, +/obj/mecha/working/normalvehicle/vertibird/enclave/loaded, +/turf/open/floor/wood_common/wood_common_light, +/area/f13/wasteland/city) "wYO" = ( /obj/structure/table, /obj/item/clothing/head/wizard/fake, @@ -25566,6 +25548,13 @@ }, /turf/open/floor/wood_mosaic, /area/f13/building) +"xUS" = ( +/obj/mecha/working/normalvehicle/vertibird/loaded, +/turf/open/floor/plasteel/f13/vault_floor/misc/vault1{ + name = "Docks"; + sunlight_state = 1 + }, +/area/f13/building) "xVD" = ( /obj/machinery/light/small{ dir = 1; @@ -51179,7 +51168,7 @@ gqr gqr ssg bqI -iaa +pnC ssg ssg ssg @@ -58093,7 +58082,7 @@ tTD tTD tTD tTD -tSN +tTD him him ijz @@ -60144,7 +60133,7 @@ tTD qac cjM tTD -atz +tTD tTD eqV dQx @@ -73037,7 +73026,7 @@ mMI iJF qKK mXL -fUX +cUZ idm lpg rcs @@ -74538,7 +74527,7 @@ hhc pey pey pey -kHu +xUS pey pey xHm @@ -90292,7 +90281,7 @@ eiy dWw ovy qhE -atl +wYI sNI dWw hDm diff --git a/_maps/map_files/Pahrump-AB/Pahrump-AB-Upper.dmm b/_maps/map_files/Pahrump-AB/Pahrump-AB-Upper.dmm index 63d70702f4a..e71ff85e62b 100644 --- a/_maps/map_files/Pahrump-AB/Pahrump-AB-Upper.dmm +++ b/_maps/map_files/Pahrump-AB/Pahrump-AB-Upper.dmm @@ -244,6 +244,20 @@ /obj/item/bedsheet, /turf/open/floor/plasteel/f13/vault_floor/white, /area/f13/city) +"amg" = ( +/obj/structure/table/wood, +/obj/item/paper/natural, +/obj/item/paper/natural, +/obj/item/paper/natural, +/obj/item/paper/natural, +/obj/item/folder/red, +/obj/item/pen/charcoal, +/obj/item/card/id/dogtag/legrecruit, +/obj/item/card/id/dogtag/legrecruit, +/obj/item/card/id/dogtag/legrecruit, +/obj/item/card/id/dogtag/legveteran, +/turf/open/floor/wood_fancy, +/area/f13/legion) "amm" = ( /obj/effect/decal/cleanable/dirt{ color = "000000" @@ -515,12 +529,6 @@ /obj/structure/table, /turf/open/floor/f13/wood, /area/f13/radiation) -"aQo" = ( -/obj/structure/fluff/railing/corner{ - dir = 1 - }, -/turf/open/indestructible/ground/outside/roof, -/area/f13/wasteland/ncr) "aQp" = ( /obj/structure/chair/sofa/corp, /turf/open/floor/plasteel/f13/vault_floor/dark, @@ -678,10 +686,6 @@ icon_state = "housewood2" }, /area/f13/wasteland) -"aYz" = ( -/obj/structure/chair/office, -/turf/open/floor/plasteel/f13/vault_floor/misc/cmo, -/area/f13/ncr) "aZh" = ( /obj/structure/lattice/catwalk, /obj/machinery/light/small{ @@ -1079,6 +1083,17 @@ }, /turf/open/floor/wood_common, /area/f13/city) +"bAf" = ( +/obj/structure/closet/locker/oldstyle{ + anchored = 1 + }, +/obj/item/radio/headset/headset_bos, +/obj/item/radio/headset/headset_bos, +/obj/item/radio/headset/headset_bos, +/obj/item/radio/headset/headset_bos, +/obj/item/radio/headset/headset_bos, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/brotherhood/offices2nd) "bAr" = ( /turf/open/floor/wood_common/wood_common_light, /area/f13/city) @@ -1454,6 +1469,10 @@ /obj/structure/railing, /turf/open/floor/f13/wood, /area/f13/ncr) +"bZf" = ( +/obj/mecha/working/normalvehicle/vertibird/loaded, +/turf/open/floor/plasteel/airless/white, +/area/f13/wasteland) "bZG" = ( /obj/structure/chair/f13chair1{ dir = 8 @@ -1500,13 +1519,6 @@ }, /turf/open/transparent/openspace, /area/f13/ncr) -"cbU" = ( -/obj/machinery/door/poddoor/gate/preopen{ - id = "legiongate1"; - name = "outpost gate" - }, -/turf/open/indestructible/ground/inside/mountain, -/area/f13/wasteland) "ccz" = ( /turf/open/floor/f13/wood{ icon_state = "housewood2" @@ -1587,6 +1599,10 @@ icon_state = "housewood3-broken" }, /area/f13/brotherhood/leisure) +"cjS" = ( +/obj/structure/simple_door/room, +/turf/open/floor/wood_fancy, +/area/f13/ncr) "ckJ" = ( /obj/machinery/gear_painter{ pixel_y = 10; @@ -1669,10 +1685,6 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/f13/wood, /area/f13/city) -"cqG" = ( -/obj/mecha/combat/phazon/vertibird/ncr/loaded, -/turf/open/floor/f13, -/area/f13/ncr) "cqH" = ( /obj/structure/table/wood, /obj/item/folder/red{ @@ -1786,6 +1798,13 @@ }, /turf/closed/mineral/random/low_chance, /area/f13/caves) +"cxf" = ( +/obj/machinery/door/poddoor/gate/bunker{ + id = "bosfrontgate"; + name = "brotherhood blue-steel gate" + }, +/turf/open/transparent/openspace, +/area/f13/wasteland) "cxI" = ( /mob/living/simple_animal/chicken, /turf/open/floor/wood_common, @@ -2013,6 +2032,12 @@ }, /turf/open/transparent/openspace, /area/f13/wasteland/ncr) +"cRA" = ( +/obj/machinery/computer/card/bos{ + dir = 4 + }, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/brotherhood/offices2nd) "cSz" = ( /obj/structure/rack/shelf_metal, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, @@ -2195,6 +2220,17 @@ icon_state = "housewood3-broken" }, /area/f13/building) +"dcK" = ( +/obj/machinery/light{ + dir = 1; + light_color = "#e8eaff" + }, +/obj/structure/table, +/obj/machinery/computer/terminal{ + termtag = "Business" + }, +/turf/open/floor/plasteel/f13/vault_floor/misc/cmo, +/area/f13/ncr) "dcO" = ( /obj/structure/table/wood, /obj/structure/bedsheetbin, @@ -2324,6 +2360,10 @@ }, /turf/open/floor/wood_common, /area/f13/city) +"dkS" = ( +/obj/mecha/working/normalvehicle/vertibird/ncr/loaded, +/turf/open/floor/f13, +/area/f13/ncr) "dmb" = ( /obj/structure/table/wood, /obj/item/radio/tribal{ @@ -2449,6 +2489,15 @@ "dtb" = ( /turf/open/floor/f13/wood, /area/f13/wasteland) +"dux" = ( +/obj/structure/destructible/tribal_torch/lit, +/obj/structure/decoration/legion/chains2{ + pixel_y = 26 + }, +/obj/effect/turf_decal/shadow/floor, +/obj/effect/turf_decal/shadow/floor, +/turf/open/floor/wood_fancy, +/area/f13/legion) "dwf" = ( /obj/structure/filingcabinet{ density = 0; @@ -2464,6 +2513,12 @@ icon_state = "neutralrustyfull" }, /area/f13/wasteland) +"dwh" = ( +/obj/machinery/radioterminal/bos{ + dir = 8 + }, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/brotherhood/offices2nd) "dwj" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/f13{ @@ -2501,16 +2556,6 @@ "dBX" = ( /turf/open/transparent/openspace, /area/f13/brotherhood) -"dDn" = ( -/obj/structure/table/wood, -/obj/item/paper/natural, -/obj/item/paper/natural, -/obj/item/paper/natural, -/obj/item/paper/natural, -/obj/item/folder/red, -/obj/item/pen/charcoal, -/turf/open/floor/wood_fancy, -/area/f13/legion) "dDp" = ( /obj/structure/flora/grass/jungle/b, /turf/open/indestructible/ground/outside/dirt, @@ -2560,6 +2605,18 @@ }, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, /area/f13/brotherhood/operations) +"dHu" = ( +/obj/machinery/button/door{ + pixel_x = 23; + id = "legiongate2" + }, +/obj/machinery/button/door{ + pixel_x = 23; + id = "legiongate1"; + pixel_y = -10 + }, +/turf/open/indestructible/ground/inside/mountain, +/area/f13/wasteland) "dHP" = ( /obj/structure/bodycontainer/morgue, /turf/open/floor/plasteel/f13/vault_floor/white, @@ -2634,6 +2691,9 @@ /obj/structure/junk/locker, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, /area/f13/brotherhood) +"dPl" = ( +/turf/open/floor/plating/f13/outside/roof/wood/old, +/area/f13/caves) "dPm" = ( /obj/structure/barricade/wooden, /turf/open/floor/f13/wood{ @@ -3048,10 +3108,6 @@ }, /turf/open/floor/plasteel/f13/vault_floor/white, /area/f13/wasteland) -"ewP" = ( -/obj/mecha/combat/phazon/vertibird/balloon/loaded, -/turf/open/floor/wood_common, -/area/f13/wasteland) "ext" = ( /turf/open/floor/plasteel/f13/vault_floor/blue/side{ dir = 10 @@ -3442,13 +3498,6 @@ icon_state = "housewood4-broken" }, /area/f13/wasteland) -"eYc" = ( -/obj/machinery/button/door{ - pixel_x = 23; - id = "legiongate2" - }, -/turf/open/indestructible/ground/inside/mountain, -/area/f13/wasteland) "eYp" = ( /obj/effect/decal/cleanable/dirt{ color = "#363636" @@ -3819,13 +3868,6 @@ icon_state = "greenrustychess" }, /area/f13/building/massfusion) -"fAi" = ( -/obj/structure/filingcabinet{ - density = 0; - pixel_y = 16 - }, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, -/area/f13/brotherhood/offices2nd) "fAA" = ( /obj/structure/simple_door/bunker, /turf/open/floor/plasteel/f13/vault_floor/misc/vault1, @@ -3914,6 +3956,12 @@ /obj/effect/turf_decal/shadow/floor, /turf/open/floor/wood_fancy, /area/f13/legion) +"fOA" = ( +/obj/structure/chair/folding{ + dir = 4 + }, +/turf/open/floor/plasteel/f13/vault_floor/misc/cmo, +/area/f13/ncr) "fPa" = ( /obj/effect/turf_decal/stripes/red/corner, /turf/open/floor/plasteel/f13/vault_floor/misc/vault1, @@ -4445,6 +4493,11 @@ /mob/living/simple_animal/hostile/handy/protectron, /turf/open/floor/plasteel/f13/vault_floor/white, /area/f13/building/hospital) +"gGQ" = ( +/obj/structure/table, +/obj/item/megaphone, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/ncr) "gHi" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt{ @@ -4644,13 +4697,6 @@ /obj/item/paper/bitterdrink, /turf/open/floor/wood_fancy, /area/f13/legion) -"gXZ" = ( -/turf/open/floor/plating/f13/outside/roof/tent_leather, -/area/f13/wasteland) -"gYj" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/plating/f13/outside/roof/tent_leather, -/area/f13/wasteland) "gYZ" = ( /obj/structure/chair/sofa/right{ dir = 4 @@ -5279,6 +5325,14 @@ }, /turf/open/transparent/openspace, /area/f13/wasteland/ncr) +"ibt" = ( +/obj/structure/closet/crate/wooden, +/obj/item/gun/ballistic/automatic/service, +/obj/item/gun/ballistic/automatic/service, +/obj/item/stack/f13Cash/random/ncr/med, +/obj/structure/lattice/catwalk, +/turf/open/transparent/openspace, +/area/f13/wasteland) "ibG" = ( /obj/machinery/camera, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, @@ -5447,6 +5501,12 @@ }, /turf/open/floor/plasteel/f13/vault_floor/floor, /area/f13/building/hospital) +"iob" = ( +/obj/machinery/door/poddoor/gate{ + id = "legiongate1" + }, +/turf/open/indestructible/ground/inside/mountain, +/area/f13/wasteland) "ioy" = ( /obj/machinery/light{ dir = 4 @@ -5598,16 +5658,6 @@ icon_state = "floorrusty" }, /area/f13/wasteland) -"ixi" = ( -/obj/structure/sign/poster/ncr/irradiated_food{ - pixel_y = 32 - }, -/obj/machinery/light{ - dir = 1; - light_color = "#e8eaff" - }, -/turf/open/floor/plasteel/f13/vault_floor/misc/cmo, -/area/f13/ncr) "ixn" = ( /turf/closed/wall/f13/wood/house, /area/f13/brotherhood) @@ -6151,11 +6201,22 @@ }, /turf/open/transparent/openspace, /area/f13/wasteland) +"jpW" = ( +/obj/effect/turf_decal/shadow/floor, +/obj/effect/turf_decal/shadow/floor, +/turf/open/floor/wood_fancy, +/area/f13/legion) "jqW" = ( /obj/structure/lattice/catwalk, /obj/item/kirbyplants/random, /turf/open/transparent/openspace, /area/f13/wasteland) +"jrH" = ( +/obj/machinery/door/airlock/grunge{ + name = "Knight Captain's Room" + }, +/turf/open/floor/carpet/black, +/area/f13/brotherhood/dorms) "jrI" = ( /obj/structure/destructible/tribal_torch/wall/lit{ dir = 8 @@ -6195,6 +6256,12 @@ /obj/structure/table/optable, /turf/open/floor/plasteel/f13/vault_floor/white, /area/f13/building/hospital) +"jvp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/storage/box/handcuffs, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/ncr) "jvt" = ( /obj/structure/window/fulltile/store{ icon_state = "storewindowtop" @@ -6312,14 +6379,6 @@ /obj/item/toy/cards/deck, /turf/open/floor/plasteel/f13/vault_floor/dark, /area/f13/ncr) -"jDq" = ( -/obj/machinery/smartfridge/bottlerack/legion_offering, -/obj/effect/turf_decal/shadow/floor{ - dir = 1 - }, -/obj/effect/turf_decal/shadow/floor, -/turf/open/floor/wood_fancy, -/area/f13/legion) "jDW" = ( /obj/structure/decoration/rag, /obj/structure/decoration/rag{ @@ -6810,6 +6869,11 @@ icon_state = "hydrofloor" }, /area/f13/building) +"kpx" = ( +/obj/structure/table/wood, +/obj/machinery/computer/card/town/sheriff, +/turf/open/floor/carpet/red, +/area/f13/city) "kpG" = ( /obj/effect/decal/cleanable/dirt{ color = "000000" @@ -6823,13 +6887,6 @@ icon_state = "floorrusty" }, /area/f13/wasteland) -"kpM" = ( -/obj/machinery/door/airlock/grunge{ - name = "Knight Captain's Room"; - req_access_txt = "268" - }, -/turf/open/floor/carpet/black, -/area/f13/brotherhood/dorms) "kpP" = ( /obj/structure/reagent_dispensers/fueltank/vehicle_gas_station{ icon_state = "vat"; @@ -7286,6 +7343,10 @@ }, /turf/open/floor/plasteel/f13/vault_floor/white, /area/f13/building/hospital) +"kXC" = ( +/obj/mecha/working/normalvehicle/vertibird/balloon/loaded, +/turf/open/floor/wood_common, +/area/f13/wasteland) "kXI" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/meat/steak/plain/human{ @@ -7750,6 +7811,13 @@ }, /turf/open/floor/plasteel/f13/vault_floor/floor, /area/f13/city) +"lIL" = ( +/obj/structure/window/fulltile/house{ + icon_state = "storewindowbottom" + }, +/obj/structure/curtain, +/turf/open/floor/plasteel/f13/vault_floor/misc/cmo, +/area/f13/ncr) "lKV" = ( /obj/machinery/workbench/advanced, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, @@ -8753,6 +8821,11 @@ /obj/item/gun/ballistic/shotgun/hunting, /turf/open/floor/plasteel/f13/vault_floor/floor/floorsolid, /area/f13/wasteland) +"nfX" = ( +/obj/structure/table, +/obj/item/pda/heads/cmo, +/turf/open/floor/plasteel/f13/vault_floor/misc/cmo, +/area/f13/ncr) "ngm" = ( /obj/structure/table, /obj/item/storage/box/handcuffs{ @@ -8851,6 +8924,15 @@ }, /turf/open/transparent/openspace, /area/f13/wasteland) +"noD" = ( +/obj/structure/destructible/tribal_torch/wall/lit{ + dir = 8; + light_power = 0.7 + }, +/obj/effect/turf_decal/shadow/floor, +/obj/machinery/msgterminal/legion, +/turf/open/floor/wood_fancy, +/area/f13/legion) "noP" = ( /turf/closed/wall/r_wall/rust, /area/f13/ncr) @@ -9102,6 +9184,12 @@ sunlight_state = 1 }, /area/f13/wasteland) +"nCD" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/turf/open/floor/plasteel/f13/vault_floor/misc/cmo, +/area/f13/ncr) "nCS" = ( /turf/open/indestructible/ground/outside/dirt, /area/f13/building) @@ -9962,6 +10050,15 @@ /obj/item/reagent_containers/hypospray/medipen/medx, /turf/open/floor/plasteel/f13/vault_floor/white, /area/f13/building/hospital) +"oSw" = ( +/obj/structure/closet/crate/wooden, +/obj/item/gun/ballistic/automatic/service, +/obj/item/gun/ballistic/automatic/service, +/obj/item/stack/f13Cash/random/ncr/med, +/turf/open/floor/f13{ + icon_state = "floorrusty" + }, +/area/f13/city) "oSI" = ( /obj/structure/curtain{ color = "#845f58" @@ -10101,13 +10198,6 @@ /obj/structure/flora/chomp/potplant2, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, /area/f13/brotherhood) -"paU" = ( -/obj/structure/table/wood, -/obj/item/radio/intercom/retro/kebob/mayor{ - pixel_x = 31 - }, -/turf/open/floor/carpet/royalblack, -/area/f13/city) "pcx" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -10245,17 +10335,6 @@ }, /turf/open/floor/carpet/royalblack, /area/f13/city) -"plM" = ( -/obj/structure/destructible/tribal_torch/lit, -/obj/structure/decoration/legion/chains2{ - pixel_y = 26 - }, -/obj/effect/turf_decal/shadow/floor{ - dir = 1 - }, -/obj/effect/turf_decal/shadow/floor, -/turf/open/floor/wood_fancy, -/area/f13/legion) "pmg" = ( /obj/structure/closet/crate/coffin/blackcoffin, /obj/item/stake, @@ -10458,18 +10537,6 @@ icon_state = "whitegreenrustychess" }, /area/f13/wasteland) -"pEr" = ( -/obj/structure/fluff/railing/corner{ - dir = 8 - }, -/obj/structure/fluff/railing/corner{ - dir = 1 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/indestructible/ground/outside/roof, -/area/f13/wasteland/ncr) "pEx" = ( /turf/open/floor/plasteel/f13/vault_floor/floor/floorsolid, /area/f13/wasteland) @@ -10534,12 +10601,6 @@ }, /turf/open/floor/wood_fancy, /area/f13/legion) -"pHG" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/closed/wall, -/area/f13/ncr) "pHR" = ( /obj/structure/table/reinforced/brass, /obj/item/book/manual/wiki/medicine, @@ -11431,12 +11492,6 @@ icon_state = "greendirtyfull" }, /area/f13/wasteland) -"rma" = ( -/obj/structure/fluff/railing{ - dir = 8 - }, -/turf/open/indestructible/ground/outside/roof, -/area/f13/wasteland/ncr) "rmX" = ( /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, /area/f13/brotherhood/offices2nd) @@ -11450,15 +11505,6 @@ /obj/structure/simple_door/house, /turf/open/floor/plasteel/f13/vault_floor/white, /area/f13/building/hospital) -"rog" = ( -/obj/structure/fluff/railing/corner{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/indestructible/ground/outside/roof, -/area/f13/wasteland/ncr) "roJ" = ( /obj/structure/closet/crate/bin/trashbin, /obj/effect/decal/cleanable/dirt{ @@ -11902,6 +11948,16 @@ }, /turf/open/floor/plasteel/f13/vault_floor/misc/cmo, /area/f13/ncr) +"rYk" = ( +/obj/structure/table/wood, +/obj/item/radio/intercom/retro/kebob/mayor{ + pixel_x = 31 + }, +/obj/machinery/computer/card/town{ + dir = 8 + }, +/turf/open/floor/carpet/royalblack, +/area/f13/city) "rYQ" = ( /obj/structure/closet/cabinet, /turf/open/floor/carpet/red, @@ -12253,6 +12309,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/f13/wood, /area/f13/wasteland) +"svo" = ( +/obj/machinery/msgterminal/brotherhood{ + dir = 4 + }, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/brotherhood/offices2nd) "svq" = ( /obj/structure/fluff/railing/corner{ dir = 8 @@ -12844,6 +12906,10 @@ icon_state = "whitedirtysolid" }, /area/f13/building/hospital) +"tfP" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating/f13/outside/roof/wood/old, +/area/f13/wasteland) "tge" = ( /obj/structure/barricade/wooden{ layer = 3.5 @@ -13068,12 +13134,6 @@ }, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, /area/f13/brotherhood) -"tvA" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/turf/open/floor/plasteel/f13/vault_floor/misc/cmo, -/area/f13/ncr) "twu" = ( /obj/machinery/door/unpowered/securedoor/legion/centurion, /turf/open/floor/wood_fancy, @@ -13524,6 +13584,10 @@ }, /turf/open/indestructible/ground/inside/mountain, /area/f13/wasteland) +"uhi" = ( +/obj/mecha/working/normalvehicle/vertibird/brotherhood/loaded, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/brotherhood/rnd) "uhq" = ( /obj/effect/decal/cleanable/dirt{ color = "#363636" @@ -13822,6 +13886,12 @@ }, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, /area/f13/ncr) +"uFS" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/indestructible/ground/outside/roof, +/area/f13/wasteland/ncr) "uFT" = ( /obj/structure/decoration/rag, /obj/structure/fence/wooden{ @@ -14533,6 +14603,17 @@ }, /turf/open/transparent/openspace, /area/f13/wasteland) +"vOt" = ( +/obj/structure/sign/poster/ncr/irradiated_food{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1; + light_color = "#e8eaff" + }, +/obj/structure/rack/shelf_metal, +/turf/open/floor/plasteel/f13/vault_floor/misc/cmo, +/area/f13/ncr) "vPb" = ( /obj/structure/chair/f13chair1{ dir = 4 @@ -14632,14 +14713,6 @@ /obj/structure/closet/crate/footlocker, /turf/open/floor/f13/wood, /area/f13/radiation) -"wbt" = ( -/obj/structure/destructible/tribal_torch/wall/lit{ - dir = 8; - light_power = 0.7 - }, -/obj/effect/turf_decal/shadow/floor, -/turf/open/floor/wood_fancy, -/area/f13/legion) "wbR" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light{ @@ -15177,17 +15250,6 @@ /obj/structure/barricade/wooden, /turf/open/floor/f13/wood, /area/f13/wasteland) -"wUj" = ( -/obj/effect/turf_decal/shadow/floor{ - dir = 1 - }, -/obj/effect/turf_decal/shadow/floor, -/turf/open/floor/wood_fancy, -/area/f13/legion) -"wUp" = ( -/obj/mecha/combat/phazon/vertibird/loaded, -/turf/open/floor/plasteel/airless/white, -/area/f13/wasteland) "wUx" = ( /obj/structure/window/fulltile/house, /turf/open/floor/f13{ @@ -15592,6 +15654,12 @@ /obj/effect/decal/cleanable/blood/bubblegum, /turf/open/floor/f13/wood, /area/f13/city) +"xFh" = ( +/obj/machinery/smartfridge/bottlerack/legion_offering, +/obj/effect/turf_decal/shadow/floor, +/obj/effect/turf_decal/shadow/floor, +/turf/open/floor/wood_fancy, +/area/f13/legion) "xFD" = ( /obj/structure/railing{ dir = 4 @@ -15621,10 +15689,6 @@ icon_state = "reddirtyfull" }, /area/f13/city) -"xHY" = ( -/obj/mecha/combat/phazon/vertibird/brotherhood/loaded, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, -/area/f13/brotherhood/rnd) "xIn" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/holosign/barrier, @@ -18331,10 +18395,10 @@ noP cqK mYO hqA -wjd +gGQ mYO uFd -aAo +jvp cqK cqK oiW @@ -18844,13 +18908,13 @@ pfO noP cqK dTc -rog -rma -rma -pEr -rma -rma -aQo +uFS +hHO +hHO +uFS +hHO +hHO +hHO noP eHj rRp @@ -20393,12 +20457,12 @@ rLB rLB rLB rLB -xSN -xSN -xSN -xSN -xSN -xSN +rLB +rLB +rLB +rLB +rLB +rLB xSN oez oez @@ -20651,12 +20715,12 @@ rLB rLB rLB xSN -rLB -rLB -rLB -rLB -rLB -rLB +xSN +xSN +xSN +xSN +xSN +xSN oez oez oez @@ -21929,12 +21993,12 @@ rLB rLB rLB rLB -xSN -xSN -xSN -xSN -xSN -xSN +rLB +rLB +rLB +rLB +rLB +rLB xSN rLB rLB @@ -22187,12 +22251,12 @@ rLB rLB rLB xSN -rLB -rLB -rLB -rLB -rLB -rLB +xSN +xSN +xSN +xSN +xSN +xSN rLB rLB rLB @@ -23714,7 +23778,7 @@ ssV ssV cBM cBM -cqG +dkS cBM cBM ssV @@ -24203,14 +24267,14 @@ gkT gkT gkT gkT -kur +kUW +lIL tSo kur kur +cjS kur kur -tSo -kur eNH rLB rLB @@ -24458,14 +24522,14 @@ hHO hHO hHO hHO -hHO -kur -ixi +kst +vOt +fOA dDq dDq kur oXG -tiP +kWe rOR wse iqu @@ -24715,14 +24779,14 @@ rLB rLB rLB rLB -rLB -kur -aYz +kst +nfX +dcQ dcQ -tvA +dDq kur uOS -kWe +tiP tiP wse iqu @@ -24972,12 +25036,12 @@ rLB rLB rLB rLB -rLB -kur -nft -kUW +kst +dcK +nCD +dDq +dDq kur -pHG pIh tiP jbS @@ -25229,10 +25293,10 @@ rLB rLB rLB rLB -rLB -ggY -ntT -ntT +kst +kur +kUW +kUW kur kur nft @@ -28577,7 +28641,7 @@ tiP rOR ixY oXG -suj +tiP rOR ixY ixY @@ -28826,16 +28890,16 @@ vLb vLb ixY uOS -rpR tiP +rpR ixY uOS -kWe tiP +kWe ixY uOS tiP -tiP +suj ixY oeO eIR @@ -36448,11 +36512,11 @@ oez oez oez oez -oez -oez -oez -oez -oez +hMq +hMq +hMq +hMq +hMq oez oez oez @@ -36705,11 +36769,11 @@ oez oez oez oez -oez hMq hMq hMq -oez +hMq +hMq oez oez oez @@ -36962,11 +37026,11 @@ oez oez oez oez -oez hMq hMq hMq -oez +hMq +hMq oez oez oez @@ -37219,11 +37283,11 @@ oez oez oez oez -oez hMq hMq hMq -oez +hMq +hMq oez oez oez @@ -37476,11 +37540,11 @@ oez oez oez oez -oez hMq hMq hMq -oez +hMq +hMq hMq hMq hMq @@ -37709,7 +37773,7 @@ vLw qOr nIv cqH -paU +rYk qMI dYT oez @@ -37733,11 +37797,11 @@ oez oez oez oez -oez hMq hMq hMq -oez +hMq +hMq hMq hMq hMq @@ -37990,11 +38054,11 @@ oez oez oez oez -oez hMq hMq hMq -oez +hMq +hMq hMq hMq hMq @@ -38214,7 +38278,7 @@ oez oez tAz uKh -uKh +ibt kvJ mck hYA @@ -38247,7 +38311,7 @@ oez oez oez oez -oez +hMq hMq hMq hMq @@ -38504,7 +38568,7 @@ oez oez oez oez -oez +hMq hMq hMq hMq @@ -38761,7 +38825,7 @@ oez oez oez oez -oez +hMq hMq hMq hMq @@ -39018,7 +39082,7 @@ oez oez oez oez -oez +hMq hMq hMq hMq @@ -39250,7 +39314,7 @@ miU bgI nnw vLw -oGD +kpx pIy wvW dYT @@ -39275,7 +39339,7 @@ oez oez oez oez -oez +hMq hMq hMq hMq @@ -39532,7 +39596,7 @@ oez oez oez oez -oez +hMq hMq hMq hMq @@ -42106,16 +42170,16 @@ oez oez oez oez +orG +orG +orG +orG oez -oez -oez -oez -oez -oez -oez -oez -oez -oez +orG +orG +orG +orG +orG oez oez oez @@ -42363,20 +42427,20 @@ oez oez oez oez -oez +orG +orG orG orG oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez +orG +orG +orG +orG +orG +orG +orG +orG +orG oez oez oez @@ -42620,7 +42684,6 @@ oez oez oez oez -oez orG orG orG @@ -42633,7 +42696,8 @@ orG orG orG orG -oez +orG +orG oez oez oez @@ -42876,8 +42940,6 @@ oez oez oez oez -oez -oez orG orG orG @@ -42890,7 +42952,9 @@ orG orG orG orG -oez +orG +orG +orG oez oez oez @@ -43133,7 +43197,6 @@ oez oez oez oez -oez orG orG orG @@ -43147,7 +43210,8 @@ orG orG orG orG -oez +orG +orG oez oez oez @@ -43332,7 +43396,7 @@ ioD rOF rOF rOF -wUp +bZf rOF rOF ymf @@ -43390,7 +43454,6 @@ oez oez oez oez -oez orG orG orG @@ -43404,7 +43467,8 @@ orG orG orG orG -oez +orG +orG oez oez oez @@ -43646,8 +43710,6 @@ oez oez oez oez -oez -oez orG orG orG @@ -43659,9 +43721,11 @@ orG orG orG orG -oez -oez -oez +orG +orG +orG +orG +orG oez oez oez @@ -43797,7 +43861,7 @@ oez oez oez oez -oez +cxf oez oez oez @@ -43903,7 +43967,6 @@ oez oez oez oez -oez orG orG orG @@ -43916,7 +43979,8 @@ orG orG orG orG -oez +orG +orG oez oez oez @@ -44160,7 +44224,6 @@ oez oez oez oez -oez orG orG orG @@ -44173,7 +44236,8 @@ orG orG orG orG -oez +orG +orG oez oez oez @@ -44417,16 +44481,17 @@ oez oez oez oez -oez orG orG orG orG orG orG -oez -oez -oez +orG +orG +orG +orG +orG orG orG orG @@ -44459,7 +44524,6 @@ oez oez oez oez -oez dtb dtb dtb @@ -44674,20 +44738,20 @@ oez oez oez oez -oez orG orG orG orG orG orG -oez -oez +orG +orG oez orG orG orG -oez +orG +orG oez oez oez @@ -44931,20 +44995,20 @@ oez oez oez oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez +orG +orG +orG +orG +orG orG orG orG oez +orG +orG +orG +orG +orG oez oez oez @@ -45197,11 +45261,11 @@ oez oez oez oez -oez -oez -oez -oez -oez +orG +orG +orG +orG +orG oez oez oez @@ -46556,8 +46620,8 @@ vLb vLb vLb gjI -fAi -rmX +cRA +svo rmX uiB rkY @@ -47840,10 +47904,10 @@ vtr lxd rkY rkY -kpM -rmX +jrH rmX rmX +bAf gjI oJA hCz @@ -48099,7 +48163,7 @@ rkY qkU vtr rAC -rmX +dwh gjI gjI uno @@ -52365,7 +52429,7 @@ anv xnG dhi vmV -wxo +oSw xVl nSB wxo @@ -57349,7 +57413,7 @@ igk ciQ ciQ ciQ -xHY +uhi ciQ ciQ ciQ @@ -58891,7 +58955,7 @@ igk ciQ ciQ ciQ -xHY +uhi ciQ igk igk @@ -67787,7 +67851,7 @@ vLb vLb vLb vLb -oez +gKe oez oez oez @@ -68044,7 +68108,7 @@ vLb vLb vLb vLb -oez +gKe oez oez oez @@ -68301,7 +68365,7 @@ vLb vLb vLb vLb -oez +gKe oez oez oez @@ -68558,7 +68622,7 @@ vLb vLb vLb vLb -oez +gKe oez oez oez @@ -68815,9 +68879,9 @@ vLb vLb vLb vLb -oez -oez -oez +gKe +gKe +gKe oez oez oez @@ -69066,15 +69130,15 @@ vLb vLb vLb vLb -oez -oez +gKe +gKe vLb vLb vLb vLb sdE -oez -oez +gKe +gKe oez oez oez @@ -69323,7 +69387,6 @@ vLb vLb vqz oez -oez gKe gKe gKe @@ -69331,7 +69394,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -69580,7 +69644,6 @@ vqz vqz vqz oez -oez gKe gKe gKe @@ -69588,7 +69651,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -69837,18 +69901,18 @@ dtb dtb vqz oez -oez -oez -oez -oez gKe gKe gKe gKe -oez -oez -oez -oez +gKe +gKe +gKe +gKe +gKe +gKe +gKe +gKe oez oez oez @@ -70097,7 +70161,6 @@ oez oez oez oez -oez gKe gKe gKe @@ -70105,7 +70168,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -70354,7 +70418,6 @@ oez oez oez oez -oez gKe gKe gKe @@ -70362,7 +70425,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -70611,7 +70675,6 @@ oez oez oez oez -oez gKe gKe gKe @@ -70619,7 +70682,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -70868,7 +70932,6 @@ oez oez oez oez -oez gKe gKe gKe @@ -70876,7 +70939,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -70908,7 +70972,7 @@ vqz vqz vqz vqz -cbU +iob xJg xJg vXJ @@ -70933,7 +70997,7 @@ xJg xJg xJg spS -ewP +kXC spS oez oez @@ -71125,7 +71189,6 @@ oez oez oez oez -oez gKe gKe gKe @@ -71133,7 +71196,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -71382,7 +71446,6 @@ oez oez oez oez -oez gKe gKe gKe @@ -71390,7 +71453,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -71442,7 +71506,7 @@ xJg xJg xJg xJg -eYc +dHu xJg fNW xJg @@ -71639,7 +71703,7 @@ oez oez oez oez -oez +gKe gKe gKe acr @@ -71647,7 +71711,7 @@ gKe gKe gKe gKe -oez +gKe oez oez oez @@ -71712,13 +71776,13 @@ oez oez oez oez -oez -oez -oez -oez -oez -oez -oez +mbu +mbu +mbu +uuO +mbu +mbu +mbu oez oez oez @@ -71896,7 +71960,6 @@ oez oez oez oez -oez gKe gKe gKe @@ -71904,7 +71967,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -71967,17 +72031,17 @@ oez oez oez oez -oez -oez +uuO mbu mbu mbu -uuO mbu mbu mbu -oez -oez +mbu +mbu +mbu +uuO oez oez oez @@ -72153,7 +72217,6 @@ oez oez oez oez -oez gKe gKe gKe @@ -72161,7 +72224,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -72224,7 +72288,6 @@ oez oez oez oez -uuO mbu mbu mbu @@ -72234,7 +72297,8 @@ mbu mbu mbu mbu -uuO +mbu +mbu oez oez oez @@ -72410,7 +72474,6 @@ oez oez oez oez -oez gKe gKe gKe @@ -72418,7 +72481,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -72667,7 +72731,6 @@ oez oez oez oez -oez gKe gKe gKe @@ -72675,7 +72738,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -72713,13 +72777,13 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW shW shW shW @@ -72745,7 +72809,7 @@ mbu mbu mbu mbu -mbu +oez mbu mbu mbu @@ -72924,7 +72988,6 @@ dtb oez oez oez -oez gKe gKe gKe @@ -72932,7 +72995,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -72970,13 +73034,13 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW shW shW shW @@ -73180,8 +73244,6 @@ dtb dtb oez oez -oez -oez gKe gKe gKe @@ -73189,7 +73251,9 @@ gKe gKe gKe gKe -oez +gKe +gKe +gKe oez oez oez @@ -73227,13 +73291,13 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW shW shW shW @@ -73259,7 +73323,7 @@ mbu mbu mbu mbu -oez +mbu mbu mbu mbu @@ -73437,7 +73501,6 @@ dtb dtb oez oez -oez gKe gKe gKe @@ -73446,7 +73509,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -73484,20 +73548,20 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ +svW +svW +svW +svW +svW +svW +svW +oez +oez +oez +oez +oez +oez oez -shW -shW -shW -shW -shW -shW -shW oez oez oez @@ -73694,7 +73758,6 @@ dtb dtb oez oez -oez gKe gKe gKe @@ -73703,7 +73766,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -73766,6 +73830,7 @@ oez oez oez oez +uuO mbu mbu mbu @@ -73775,8 +73840,7 @@ mbu mbu mbu mbu -mbu -mbu +uuO oez oez oez @@ -73951,7 +74015,6 @@ xbE dtb oez oez -oez gKe gKe gKe @@ -73960,7 +74023,8 @@ gKe gKe gKe gKe -oez +gKe +gKe oez oez oez @@ -74023,17 +74087,17 @@ oez oez oez oez -uuO -mbu -mbu -mbu +oez +oez mbu mbu mbu +uuO mbu mbu mbu -uuO +oez +oez oez oez oez @@ -74208,16 +74272,16 @@ dtb dtb oez oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez +gKe +gKe +gKe +gKe +gKe +gKe +gKe +gKe +gKe +gKe oez oez oez @@ -74282,13 +74346,13 @@ oez oez oez oez -mbu -mbu -mbu -uuO -mbu -mbu -mbu +oez +oez +oez +oez +oez +oez +oez oez oez oez @@ -74782,34 +74846,34 @@ oez oez oez oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez +xZD +xZD +odq +odq +odq +xZD +xZD +xZD +wEE +wEE +xZD +xZD +xZD +xZD +wEE +wEE +xZD +xZD +xZD +fZB +xZD +fhd +iEW +xkk +nrD +nrD +nrD +irD oez oez vLb @@ -75023,6 +75087,12 @@ vLb vLb vLb vLb +svW +svW +svW +svW +svW +tfP oez oez oez @@ -75033,40 +75103,34 @@ oez oez oez oez -oez -oez -oez -oez -oez -oez -xZD -xZD -odq -odq -odq -xZD -xZD -xZD -wEE -wEE xZD +cMC +mXM +sXq +mXM +mov xZD +bmk +gJO +gJO +gJO +peq xZD +qfU +bPf +wtb +eeW xZD -wEE -wEE -xZD -xZD -xZD -fZB +noD +kEi xZD -fhd -iEW -xkk -nrD -nrD -nrD -irD +fOl +gIm +gmh +gIm +hJA +gIm +wqp oez oez vLb @@ -75280,48 +75344,48 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gYj -oez -oez -oez -oez -oez -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez +jZB +qzB +tQD +gIm +gIm +mfG xZD -cMC -mXM -sXq -mXM -mov -xZD -bmk -gJO -gJO -gJO -peq +aSy +dmb +pGD +fvm +uWk xZD -qfU -bPf -wtb -eeW +aem +hDb +fVt +wOD xZD -wbt -kEi +cvn +gIm xZD fOl gIm gmh gIm -hJA +gIm gIm wqp oez @@ -75537,41 +75601,41 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez -jZB -qzB +aix +cWQ tQD gIm gIm -mfG +tlD xZD -aSy -dmb -pGD +nWd +fvm +uGJ fvm uWk xZD -aem +bfa +odS +uxa hDb -fVt -wOD xZD -cvn +ebv gIm xZD fOl @@ -75794,46 +75858,46 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez -aix -cWQ -tQD +xZD +dba gIm gIm -tlD +jfG +jfG xZD -nWd +aSy +fvm fvm -uGJ fvm uWk xZD -bfa -odS -uxa -hDb xZD -ebv -gIm xZD -fOl +xZD +twu +xZD +mDG +bSK +xZD +bnB gIm -gmh +gXb gIm gIm gIm @@ -76051,46 +76115,46 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez -xZD -dba +uUB +qSt gIm gIm -jfG -jfG +uJO +uJO xZD -aSy -fvm -fvm -fvm +bma +eJq +eJq +eJq uWk xZD -xZD -xZD -xZD -twu -xZD -mDG -bSK -xZD -bnB +sua +kem +gDE +gIm gIm -gXb +gIm +gIm +gIm +gIm +gIm +gNc gIm gIm gIm @@ -76308,46 +76372,46 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez -uUB -qSt +myX +qGO gIm gIm -uJO -uJO +jfG +jfG xZD -bma -eJq -eJq -eJq -uWk xZD -sua -kem -gDE -gIm +xZD +oTw +xZD +xZD +gvs +hQv +mna +jYD +hyq gIm gIm gIm gIm gIm gIm -gNc +mRG gIm gIm gIm @@ -76565,46 +76629,46 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez -myX -qGO -gIm +wEE +lOY +tQD gIm -jfG -jfG -xZD -xZD -xZD -oTw -xZD -xZD -gvs -hQv -mna -jYD -hyq gIm +tlD +uts +bnz +gLa gIm +jNW +mXM +mXM +mXM +mXM +mXM gIm gIm gIm +nKq +xZD +edU gIm -mRG +gmh gIm gIm gIm @@ -76822,44 +76886,44 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez -wEE -lOY +jZB +dcO tQD gIm gIm -tlD -uts -bnz -gLa gIm -jNW -mXM -mXM -mXM -mXM -mXM +mDG gIm gIm gIm -nKq +gIm +qTd +qTd +qTd +qTd +qTd +gIm +xpo +kYf +tQD xZD -edU +fOl gIm gmh gIm @@ -77079,49 +77143,49 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez -jZB -dcO -tQD -gIm -gIm -gIm -mDG -gIm +xZD +haw gIm gIm gIm +kzV +xZD +vas +mDE +mDE +mDE qTd qTd +gIm qTd qTd -qTd -gIm -xpo -kYf -tQD +mDE +vAw +fSI +aew xZD fOl gIm gmh gIm gIm -gIm +hJA wqp oez oez @@ -77336,50 +77400,50 @@ vLb vLb vLb vLb -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez xZD -haw -gIm -gIm -gIm -kzV xZD -vas -mDE -mDE -mDE -qTd -qTd -gIm -qTd -qTd -mDE -vAw -fSI -aew xZD -fOl -gIm -gmh -gIm -gIm -hJA -wqp +xZD +xZD +xZD +xZD +xZD +fZB +fZB +fZB +myX +xZD +myX +myX +myX +xZD +fZB +fZB +fZB +xZD +aya +aiY +iey +quy +quy +quy +bFu oez oez vLb @@ -77609,34 +77673,34 @@ oez oez oez oez -xZD -xZD -xZD -xZD -xZD -xZD -xZD -xZD -fZB -fZB -fZB -myX -xZD -myX -myX -myX -xZD -fZB -fZB -fZB -xZD -aya -aiY -iey -quy -quy -quy -bFu +oez +ahs +rLM +rLM +fra +oez +ahs +rLM +fra +oez +oez +oez +oez +oez +oez +oez +oez +oez +oez +oez +oez +oez +oez +oez +oez +oez +oez +oez oez oez vLb @@ -77852,30 +77916,30 @@ vLb vLb vLb laB +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -ahs -rLM -rLM -fra -oez -ahs -rLM -fra -oez +fxn +fxn +xWX +xWX +fxn +fxn +fxn +xWX +fxn +fxn oez oez oez @@ -78109,31 +78173,31 @@ vLb vLb vLb laB +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -oez -fxn -fxn -xWX -xWX -fxn -fxn +ahs fxn -xWX +dux +dkh +dkh +dhN fxn +kMC +kYf +pGZ fxn -oez +fra oez oez oez @@ -78366,31 +78430,31 @@ vLb vLb vLb laB -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez -ahs -fxn -plM -dkh -dkh -dhN -fxn -kMC -kYf -pGZ -fxn -fra +ioD +lXs +jpW +gIm +gIm +gIm +mru +gIm +qTd +qTd +rDL +jxl oez oez oez @@ -78623,27 +78687,27 @@ vLb vLb vLb laB -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez ioD -lXs -wUj -gIm -gIm -gIm -mru +rCg +jpW gIm +eJq +xqz +fPb +gXw qTd qTd rDL @@ -78880,30 +78944,30 @@ vLb vLb vLb laB -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez ioD -rCg -wUj +bkC +xFh gIm eJq -xqz -fPb -gXw +oQP +fxn +qnx qTd qTd -rDL +rCg jxl oez oez @@ -79137,31 +79201,31 @@ vLb vLb vLb laB -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez -ioD +aQK bkC -jDq +jpW gIm eJq -oQP +hAa fxn -qnx -qTd -qTd -rCg -jxl +hUq +fgi +amg +lXs +hzU oez oez oez @@ -79394,31 +79458,31 @@ vLb vLb vLb laB -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez oez -aQK -bkC -wUj +lXs +ebv gIm -eJq -hAa +gIm +gBx +fxn +tpM +rhW +fxn fxn -hUq -fgi -dDn -lXs -hzU +oez oez oez oez @@ -79651,30 +79715,30 @@ vLb vLb vLb laB -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez -oez +svW +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez -lXs -wUj -gIm -gIm -gBx +ahs +fxn +fxn +jFy fxn -tpM -rhW fxn fxn +fxn +fxn +fxn +oez oez oez oez @@ -79908,31 +79972,31 @@ vLb vLb vLb laB -laB -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -gXZ -oez +dPl +svW +svW +svW +svW +svW +svW +svW +svW oez oez oez oez -ahs -fxn -fxn -jFy -fxn -fxn -fxn -fxn +ioD fxn +sYM +gIm +kYf +gtc fxn -oez -oez +mbu +mbu +mbu +uuO +mbu oez oez oez @@ -80178,20 +80242,20 @@ oez oez oez oez -ioD -fxn -sYM +aQK +rCg +ecs gIm kYf -gtc +gDE fxn mbu mbu mbu -uuO mbu -oez -oez +mbu +mbu +vLb oez oez vLb @@ -80426,21 +80490,21 @@ vLb vLb vLb laB +svW +svW +svW oez oez oez oez oez oez -oez -oez -oez -aQK -rCg -ecs +vLb +fxn +iAl +gJH +gIm gIm -kYf -gDE fxn mbu mbu @@ -80683,21 +80747,21 @@ vLb vLb vLb laB -gXZ -gXZ -gXZ -oez -oez -oez +svW +svW +svW oez oez oez +svW +svW +svW vLb fxn -iAl -gJH -gIm -gIm +fxn +fxn +fxn +fxn fxn mbu mbu @@ -80940,28 +81004,28 @@ vLb vLb vLb laB -gXZ -gXZ -gXZ +svW +svW +svW oez oez oez -gXZ -gXZ -gXZ +svW +svW +svW +vLb +vLb +vLb +vLb +vLb +lRr vLb -fxn -fxn -fxn -fxn -fxn -fxn -mbu mbu mbu mbu mbu mbu +uuO vLb vLb vLb @@ -81203,22 +81267,22 @@ laB laB oez oez -gXZ -gXZ -gXZ +svW +svW +svW +vLb +vLb +vLb +vLb +vLb +vLb +vLb vLb vLb vLb vLb vLb -lRr vLb -mbu -mbu -mbu -mbu -mbu -uuO vLb vLb vLb @@ -81462,13 +81526,13 @@ laB laB laB laB -vLb -vLb -vLb -vLb -vLb -vLb -vLb +laB +laB +laB +laB +laB +laB +laB laB laB laB diff --git a/_maps/map_files/Pahrump-AB/Pahrump-AB.dmm b/_maps/map_files/Pahrump-AB/Pahrump-AB.dmm index 455efff46eb..80a19b53d8a 100644 --- a/_maps/map_files/Pahrump-AB/Pahrump-AB.dmm +++ b/_maps/map_files/Pahrump-AB/Pahrump-AB.dmm @@ -6792,14 +6792,6 @@ }, /turf/open/floor/plasteel/f13/vault_floor/red/white, /area/f13/building/mall) -"aBG" = ( -/obj/mecha/combat/phazon/ambulance{ - dir = 1 - }, -/turf/open/indestructible/ground/outside/road{ - icon_state = "horizontalbottombordertop0" - }, -/area/f13/building/hospital) "aBH" = ( /obj/structure/barricade/wooden, /obj/structure/barricade/wooden/planks/pregame, @@ -8732,6 +8724,21 @@ /obj/structure/barricade/wooden, /turf/open/indestructible/ground/outside/dirt, /area/f13/village) +"aId" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/light/lamp_post/doubles/bent{ + dir = 8 + }, +/obj/structure/railing{ + color = "#A47449"; + dir = 4 + }, +/turf/open/indestructible/ground/outside/sidewalk{ + icon_state = "verticalrightborderright3" + }, +/area/f13/wasteland) "aIe" = ( /obj/effect/spawner/lootdrop/f13/junkspawners, /obj/machinery/light/small/broken{ @@ -12806,6 +12813,23 @@ /obj/structure/legion_extractor, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) +"aXn" = ( +/obj/item/clothing/accessory/medal/silver/valor, +/obj/item/clothing/accessory/medal/silver/valor, +/obj/item/clothing/accessory/medal/silver/valor, +/obj/item/clothing/accessory/medal/silver/valor, +/obj/item/clothing/accessory/medal/gold/captain, +/obj/item/clothing/accessory/medal/gold/captain, +/obj/item/clothing/accessory/medal/gold/heroism, +/obj/item/clothing/accessory/medal/gold/heroism, +/obj/item/clothing/accessory/medal/bronze_heart, +/obj/item/clothing/accessory/medal/bronze_heart, +/obj/item/clothing/accessory/medal/bronze_heart, +/obj/structure/closet/locker/oldstyle{ + anchored = 1 + }, +/turf/open/floor/plasteel/vault, +/area/f13/ncr) "aXo" = ( /obj/structure/rack, /obj/item/clothing/suit/beekeeper_suit, @@ -15605,15 +15629,6 @@ icon_state = "verticalinnermain0" }, /area/f13/wasteland) -"blX" = ( -/obj/effect/decal/marking{ - icon_state = "dottedverticalcorroded" - }, -/obj/mecha/combat/phazon/buggy/rangerarmed/loaded, -/turf/open/indestructible/ground/outside/road{ - icon_state = "horizontalbottombordertop0" - }, -/area/f13/wasteland) "blZ" = ( /obj/machinery/vending/cola/random, /turf/open/floor/plasteel/f13/vault_floor/dark, @@ -15833,14 +15848,6 @@ }, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, /area/f13/caves) -"bnv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, -/area/f13/ncr) "bnz" = ( /obj/structure/table/wood, /obj/machinery/processor/chopping_block, @@ -16504,17 +16511,6 @@ /obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/f13/wood, /area/f13/caves) -"btZ" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/light/lamp_post/doubles/bent{ - dir = 8 - }, -/turf/open/indestructible/ground/outside/sidewalk{ - icon_state = "verticalrightborderright3" - }, -/area/f13/wasteland) "bub" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/f13{ @@ -17661,6 +17657,15 @@ icon_state = "darkrusty" }, /area/f13/radiation) +"bKT" = ( +/obj/machinery/autolathe, +/obj/structure/railing{ + color = "#A47449" + }, +/turf/open/indestructible/ground/outside/sidewalk{ + icon_state = "horizontalbottomborderbottom0" + }, +/area/f13/wasteland) "bLe" = ( /obj/structure/closet/fridge, /obj/effect/spawner/lootdrop/f13/foodspawner, @@ -19590,19 +19595,6 @@ icon_state = "floorrusty" }, /area/f13/city) -"cnH" = ( -/obj/effect/decal/cleanable/dirt{ - color = "#363636" - }, -/obj/effect/decal/cleanable/generic, -/obj/effect/decal/cleanable/dirt, -/obj/mecha/combat/phazon/pickuptruck/mechanic{ - dir = 4 - }, -/turf/open/floor/f13{ - icon_state = "floorrusty" - }, -/area/f13/city) "cnJ" = ( /turf/closed/wall/f13/store{ desc = "A pre-War wall made of solid concrete."; @@ -19780,10 +19772,6 @@ /obj/structure/flora/tree/cactus, /turf/open/indestructible/ground/outside/desert, /area/f13/building) -"cpr" = ( -/obj/mecha/combat/phazon/pickuptruck/bos/armed, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, -/area/f13/brotherhood) "cpy" = ( /obj/item/target, /turf/open/indestructible/ground/inside/mountain, @@ -19964,12 +19952,6 @@ icon_state = "dirt" }, /area/f13/wasteland) -"cqZ" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/indestructible/ground/outside/sidewalk, -/area/f13/wasteland) "cra" = ( /obj/structure/destructible/tribal_torch/wall/lit, /turf/open/indestructible/ground/outside/sidewalk{ @@ -20251,15 +20233,6 @@ icon_state = "verticalrightborderright0" }, /area/f13/wasteland) -"ctm" = ( -/obj/mecha/combat/phazon/jeep/loaded{ - dir = 8 - }, -/turf/open/indestructible/ground/outside/dirt{ - dir = 8; - icon_state = "dirtcorner" - }, -/area/f13/radiation) "ctn" = ( /obj/machinery/vending/cola/random, /turf/open/indestructible/ground/outside/sidewalk{ @@ -20666,12 +20639,6 @@ icon_state = "horizontalinnermain0" }, /area/f13/wasteland) -"czx" = ( -/obj/structure/table/wood/fancy/black, -/obj/structure/table/wood/fancy/black, -/obj/machinery/radio_station, -/turf/open/floor/carpet, -/area/f13/city) "czz" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/chem_master/primitive, @@ -21322,6 +21289,12 @@ /obj/item/crafting/lunchbox, /turf/open/floor/f13, /area/f13/building) +"cPA" = ( +/obj/mecha/working/normalvehicle/ncrtruck/mp/loaded, +/turf/open/indestructible/ground/outside/road{ + icon_state = "verticalleftborderright0" + }, +/area/f13/wasteland) "cPB" = ( /obj/structure/chair/stool/bar, /turf/open/floor/carpet/red, @@ -22204,6 +22177,15 @@ icon_state = "dirt" }, /area/f13/wasteland) +"dkg" = ( +/obj/structure/railing{ + color = "#A47449"; + dir = 4 + }, +/turf/open/indestructible/ground/outside/sidewalk{ + icon_state = "verticalrightborderright0" + }, +/area/f13/wasteland) "dkm" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -22648,6 +22630,17 @@ icon_state = "verticalrightborderright2bottom" }, /area/f13/wasteland) +"dtZ" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/structure/railing{ + color = "#A47449" + }, +/turf/open/indestructible/ground/outside/sidewalk{ + icon_state = "horizontalbottomborderbottom0" + }, +/area/f13/wasteland) "duh" = ( /obj/effect/decal/cleanable/dirt, /turf/open/indestructible/ground/outside/ruins{ @@ -23452,6 +23445,16 @@ icon_state = "verticalleftborderleft0" }, /area/f13/wasteland) +"dJS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/mecha_parts/mecha_equipment/trunk, +/obj/item/mecha_parts/mecha_equipment/trunk, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/ncr) "dJV" = ( /obj/effect/turf_decal/weather/dirt{ dir = 5 @@ -23741,6 +23744,15 @@ icon_state = "bluedirtychess2" }, /area/f13/village) +"dQX" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/decal/cleanable/dirt, +/obj/item/kirbyplants{ + icon_state = "plant-17"; + pixel_y = 20 + }, +/turf/open/floor/plasteel/vault, +/area/f13/ncr) "dQY" = ( /obj/structure/barricade/wooden, /turf/open/indestructible/ground/outside/desert, @@ -24236,9 +24248,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/f13/vault_floor/floor, /area/f13/building) -"ebK" = ( -/turf/open/floor/light/colour_cycle/dancefloor_b, -/area/f13/city) "ebN" = ( /obj/structure/flora/grass/wasteland{ icon_state = "tall_grass_4" @@ -24936,11 +24945,6 @@ icon_state = "outerpavementdirt" }, /area/f13/wasteland) -"epN" = ( -/obj/effect/decal/cleanable/oil, -/obj/mecha/combat/phazon/jeep/bos, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, -/area/f13/brotherhood) "epV" = ( /obj/structure/barricade/wooden/strong, /turf/closed/wall/r_wall, @@ -26321,13 +26325,6 @@ }, /turf/open/floor/f13, /area/f13/building) -"eQY" = ( -/obj/machinery/autolathe, -/turf/closed/wall/f13/store{ - desc = "A pre-War wall made of solid concrete."; - name = "concrete wall" - }, -/area/f13/city) "eRa" = ( /obj/machinery/light{ dir = 8 @@ -26913,13 +26910,6 @@ icon_state = "outerborder" }, /area/f13/wasteland) -"fbd" = ( -/obj/structure/window/fulltile/house{ - dir = 2; - icon_state = "storewindowtop" - }, -/turf/open/floor/carpet, -/area/f13/city) "fbf" = ( /obj/structure/fence/cut/medium{ dir = 4 @@ -27070,6 +27060,12 @@ }, /turf/open/floor/f13/wood, /area/f13/building) +"fdT" = ( +/obj/mecha/working/normalvehicle/buggy/ranger/loaded, +/turf/open/indestructible/ground/outside/road{ + icon_state = "verticalinnermain1" + }, +/area/f13/wasteland) "fdY" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/barricade/wooden, @@ -27142,6 +27138,12 @@ /obj/structure/flora/wasteplant/wild_pinyon, /turf/open/indestructible/ground/outside/desert, /area/f13/wasteland) +"fgh" = ( +/obj/machinery/photocopier, +/turf/open/floor/f13{ + icon_state = "floorrusty" + }, +/area/f13/ncr) "fgQ" = ( /obj/structure/barricade/tentclothedge{ dir = 8 @@ -28231,6 +28233,13 @@ /mob/living/simple_animal/chicken, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) +"fDk" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/ground/outside/road{ + icon_state = "verticalinnermain0" + }, +/area/f13/building) "fDm" = ( /obj/structure/flora/grass/wasteland{ icon_state = "tall_grass_4"; @@ -29705,6 +29714,15 @@ /obj/structure/wreck/trash/machinepile, /turf/open/floor/f13/wood, /area/f13/building) +"glU" = ( +/obj/machinery/light, +/obj/structure/chair/folding{ + dir = 1 + }, +/turf/open/floor/f13{ + icon_state = "floorrusty" + }, +/area/f13/ncr) "gmi" = ( /obj/structure/window/reinforced/fulltile, /obj/structure/grille, @@ -29713,13 +29731,6 @@ }, /turf/open/floor/plasteel/f13/vault_floor/floor, /area/f13/building) -"gmA" = ( -/obj/structure/flora/grass/coyote/one, -/obj/mecha/combat/phazon/buggy/flamme/loaded{ - dir = 8 - }, -/turf/open/indestructible/ground/inside/mountain, -/area/f13/caves) "gmB" = ( /obj/machinery/light/small{ dir = 8 @@ -29905,13 +29916,6 @@ }, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) -"gpM" = ( -/obj/structure/table, -/obj/machinery/light, -/turf/open/floor/f13{ - icon_state = "floorrusty" - }, -/area/f13/ncr) "gqe" = ( /obj/effect/turf_decal/weather/dirt{ dir = 8 @@ -30433,6 +30437,16 @@ /obj/structure/simple_door/house, /turf/open/floor/plasteel/f13/vault_floor/neutral/white, /area/f13/building/mall) +"gAk" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/mecha/working/normalvehicle/buggy/legion/loaded, +/turf/open/indestructible/ground/outside/dirt{ + dir = 8; + icon_state = "dirt" + }, +/area/f13/wasteland) "gAn" = ( /mob/living/simple_animal/hostile/mirelurk/baby, /turf/open/indestructible/ground/inside/mountain, @@ -30465,13 +30479,6 @@ }, /turf/open/indestructible/ground/outside/desert, /area/f13/legion) -"gBa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/mecha/combat/phazon/buggy, -/turf/open/indestructible/ground/outside/road{ - icon_state = "verticalinnermain1" - }, -/area/f13/wasteland) "gBf" = ( /obj/structure/flora/grass/wasteland{ icon_state = "tall_grass_3" @@ -31025,6 +31032,12 @@ icon_state = "dirtcorner" }, /area/f13/radiation) +"gKC" = ( +/obj/structure/chair/folding, +/turf/open/floor/f13{ + icon_state = "floorrusty" + }, +/area/f13/ncr) "gKD" = ( /obj/effect/decal/cleanable/dirt, /turf/open/indestructible/ground/outside/sidewalk{ @@ -31201,6 +31214,10 @@ icon_state = "outerborder" }, /area/f13/wasteland) +"gNl" = ( +/obj/structure/chair/comfy/beige, +/turf/open/floor/carpet/royalblack, +/area/f13/city) "gNw" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/f13{ @@ -31213,6 +31230,12 @@ }, /turf/closed/wall/f13/wood, /area/f13/wasteland) +"gNA" = ( +/obj/machinery/door/unpowered/secure_steeldoor{ + req_access_txt = "284" + }, +/turf/open/indestructible/ground/outside/desert, +/area/f13/city) "gND" = ( /obj/structure/fluff/fokoff_sign, /turf/open/indestructible/ground/outside/dirt{ @@ -32694,6 +32717,17 @@ icon_state = "dirt" }, /area/f13/wasteland) +"hvA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + color = "#A47449"; + dir = 4 + }, +/turf/open/indestructible/ground/outside/sidewalk{ + icon_state = "verticalrightborderright0" + }, +/area/f13/wasteland) "hvJ" = ( /obj/structure/barricade/sandbags, /turf/open/indestructible/ground/outside/road, @@ -32742,14 +32776,6 @@ /obj/structure/flora/wasteplant/wild_datura, /turf/open/indestructible/ground/outside/desert, /area/f13/wasteland) -"hwV" = ( -/obj/structure/chair/f13foldupchair{ - dir = 1 - }, -/turf/open/floor/f13{ - icon_state = "floorrusty" - }, -/area/f13/ncr) "hxf" = ( /obj/structure/simple_door/interior, /obj/effect/decal/cleanable/dirt, @@ -33982,12 +34008,6 @@ icon_state = "greenrustychess" }, /area/f13/building/massfusion) -"hYW" = ( -/obj/mecha/combat/phazon/buggy/ranger/loaded, -/turf/open/indestructible/ground/outside/road{ - icon_state = "verticalinnermain1" - }, -/area/f13/wasteland) "hZy" = ( /obj/structure/railing{ color = "#A47449"; @@ -34115,6 +34135,15 @@ /obj/item/trash/f13/c_ration_3, /turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, /area/f13/caves) +"icv" = ( +/obj/structure/railing{ + color = "#A47449"; + dir = 4 + }, +/turf/open/indestructible/ground/outside/sidewalk{ + icon_state = "verticalrightborderright2" + }, +/area/f13/wasteland) "icy" = ( /obj/structure/table/reinforced, /obj/structure/railing/corner, @@ -34485,6 +34514,10 @@ icon_state = "floorrusty" }, /area/f13/building) +"ijA" = ( +/obj/structure/stairs/south, +/turf/open/floor/f13/wood, +/area/f13/city) "ijL" = ( /obj/structure/chair/f13chair1{ dir = 4 @@ -34816,6 +34849,16 @@ icon_state = "horizontalbottomborderbottom0" }, /area/f13/wasteland) +"iry" = ( +/obj/structure/table, +/obj/item/mecha_parts/mecha_equipment/trunk, +/obj/item/mecha_parts/mecha_equipment/trunk, +/obj/item/mecha_parts/mecha_equipment/trunk, +/obj/item/mecha_parts/mecha_equipment/trunk, +/turf/open/floor/f13{ + icon_state = "floorrusty" + }, +/area/f13/city) "irB" = ( /obj/structure/flora/grass/wasteland{ icon_state = "tall_grass_2" @@ -35652,6 +35695,14 @@ /obj/structure/flora/grass/wasteland, /turf/open/indestructible/ground/inside/dirt, /area/f13/building) +"iFh" = ( +/obj/structure/railing{ + color = "#A47449" + }, +/turf/open/indestructible/ground/outside/sidewalk{ + icon_state = "horizontalbottomborderbottom0" + }, +/area/f13/wasteland) "iFj" = ( /obj/effect/turf_decal/weather/dirt{ dir = 1 @@ -35794,13 +35845,6 @@ }, /turf/open/indestructible/ground/outside/dirt, /area/f13/radiation) -"iGU" = ( -/obj/structure/window/fulltile/house{ - icon_state = "storewindowright" - }, -/obj/structure/barricade/wooden/planks/pregame, -/turf/open/floor/carpet, -/area/f13/city) "iHn" = ( /obj/effect/turf_decal/shadow/floor, /obj/effect/landmark/start/f13/campfollower, @@ -36228,16 +36272,6 @@ /obj/structure/destructible/tribal_torch/lit, /turf/open/indestructible/ground/outside/desert, /area/f13/radiation) -"iQg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/f13foldupchair{ - pixel_y = 14 - }, -/turf/open/floor/f13{ - icon_state = "floorrusty" - }, -/area/f13/ncr) "iQD" = ( /obj/structure/simple_door/house, /obj/effect/decal/cleanable/dirt, @@ -36988,6 +37022,12 @@ }, /turf/open/indestructible/ground/outside/river, /area/f13/wasteland) +"jfF" = ( +/obj/machinery/msgterminal/ncr{ + dir = 1 + }, +/turf/open/floor/plasteel/vault, +/area/f13/ncr) "jfW" = ( /turf/open/indestructible/ground/outside/sidewalk{ icon_state = "horizontaltopbordertop0" @@ -37187,6 +37227,13 @@ }, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) +"jjD" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/obj/effect/landmark/start/f13/radio_host, +/turf/open/floor/carpet/royalblack, +/area/f13/city) "jjJ" = ( /obj/effect/decal/cleanable/dirt{ color = "#363636" @@ -37333,6 +37380,22 @@ /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/f13/wood, /area/f13/village) +"jmr" = ( +/obj/structure/closet/locker/oldstyle{ + anchored = 1 + }, +/obj/item/card/id/dogtag/town/ncr, +/obj/item/card/id/dogtag/town/ncr, +/obj/item/card/id/dogtag/town/ncr, +/obj/item/card/id/dogtag/town/ncr, +/obj/item/card/id/dogtag/ncrtrooper, +/obj/item/card/id/dogtag/ncrtrooper, +/obj/item/card/id/dogtag/ncrtrooper, +/obj/item/card/id/dogtag/ncrtrooper, +/obj/item/card/id/dogtag/ncrsergeant, +/obj/item/card/id/dogtag/ncrsergeant, +/turf/open/floor/plasteel/vault, +/area/f13/ncr) "jmD" = ( /obj/effect/spawner/lootdrop/f13/junkspawners, /obj/effect/decal/cleanable/dirt, @@ -38420,6 +38483,16 @@ icon_state = "bluedirtychess2" }, /area/f13/village) +"jMu" = ( +/obj/structure/window/fulltile/house{ + dir = 2; + icon_state = "storewindowtop" + }, +/obj/structure/curtain{ + color = "#363636" + }, +/turf/open/floor/carpet, +/area/f13/city) "jMw" = ( /obj/structure/simple_door/metal/dirtystore, /obj/effect/decal/cleanable/dirt{ @@ -38441,6 +38514,16 @@ icon_state = "floorrusty" }, /area/f13/building/mall) +"jMF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + color = "#A47449"; + dir = 4 + }, +/turf/open/indestructible/ground/outside/sidewalk{ + icon_state = "verticalrightborderright0" + }, +/area/f13/wasteland) "jMH" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/sparsegrass, @@ -39330,15 +39413,6 @@ icon_state = "greenrustychess" }, /area/f13/building/massfusion) -"kjE" = ( -/obj/machinery/light, -/obj/structure/chair/f13foldupchair{ - dir = 1 - }, -/turf/open/floor/f13{ - icon_state = "floorrusty" - }, -/area/f13/ncr) "kjF" = ( /obj/structure/barricade/wooden, /turf/open/indestructible/ground/outside/sidewalk{ @@ -39797,15 +39871,6 @@ /obj/machinery/mineral/wasteland_vendor/general, /turf/open/floor/plating/f13/inside, /area/f13/caves) -"ksL" = ( -/obj/mecha/combat/phazon/buggy/red/loaded{ - dir = 4 - }, -/turf/open/indestructible/ground/outside/desert/sonora{ - dir = 4; - icon_state = "desertsmooth4" - }, -/area/f13/wasteland) "ksO" = ( /turf/open/indestructible/ground/outside/sidewalk{ dir = 5; @@ -39912,12 +39977,6 @@ /obj/effect/decal/cleanable/blood/gibs/down, /turf/open/indestructible/ground/outside/dirt, /area/f13/building) -"kuR" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty, -/turf/open/floor/carpet, -/area/f13/city) "kva" = ( /obj/item/trash/can, /mob/living/simple_animal/hostile/bloatfly, @@ -39928,12 +39987,6 @@ /obj/machinery/reagentgrinder, /turf/open/indestructible/ground/outside/dirt, /area/f13/radiation) -"kvn" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/indestructible/ground/outside/sidewalk, -/area/f13/wasteland) "kvs" = ( /obj/structure/barricade/wooden, /obj/structure/barricade/wooden/planks/pregame, @@ -40438,6 +40491,14 @@ /obj/structure/flora/grass/coyote/three, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) +"kGF" = ( +/obj/structure/chair/folding{ + dir = 1 + }, +/turf/open/floor/f13{ + icon_state = "darkdirtysolid" + }, +/area/f13/ncr) "kGL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -40479,6 +40540,15 @@ "kIz" = ( /turf/closed/indestructible/f13/matrix, /area/f13/ncr) +"kID" = ( +/obj/effect/decal/marking{ + icon_state = "dottedverticalcorroded" + }, +/obj/mecha/combat/combatvehicle/buggy/rangerarmed/loaded, +/turf/open/indestructible/ground/outside/road{ + icon_state = "horizontalbottombordertop0" + }, +/area/f13/wasteland) "kIJ" = ( /obj/structure/campfire/barrel, /turf/open/indestructible/ground/outside/sidewalk{ @@ -41085,10 +41155,6 @@ icon_state = "floorrusty" }, /area/f13/ncr) -"kSe" = ( -/obj/structure/stairs/south, -/turf/open/floor/carpet, -/area/f13/city) "kSi" = ( /obj/structure/table/booth, /obj/effect/decal/cleanable/dirt, @@ -43093,6 +43159,12 @@ /obj/effect/decal/remains/human, /turf/open/floor/f13/wood, /area/f13/building/museum) +"lKT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/shadow/floor, +/obj/item/storage/money_stack/legion, +/turf/open/floor/wood_fancy, +/area/f13/legion) "lLo" = ( /obj/effect/decal/cleanable/oil, /turf/open/indestructible/ground/outside/road{ @@ -43939,12 +44011,6 @@ }, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) -"maO" = ( -/obj/structure/chair/f13foldupchair, -/turf/open/floor/f13{ - icon_state = "floorrusty" - }, -/area/f13/ncr) "mbr" = ( /obj/structure/lattice{ density = 1 @@ -44201,13 +44267,6 @@ /obj/item/ammo_box/magazine/zipgun, /turf/open/indestructible/ground/outside/sidewalk, /area/f13/wasteland) -"mfI" = ( -/obj/structure/chair/comfy/beige{ - dir = 1 - }, -/obj/effect/landmark/start/f13/radio_host, -/turf/open/floor/carpet, -/area/f13/city) "mfL" = ( /obj/structure/flora/grass/wasteland{ icon_state = "tall_grass_6" @@ -45207,6 +45266,23 @@ icon_state = "whitegreenrustychess" }, /area/f13/building/hospital) +"myM" = ( +/obj/structure/chair/folding{ + dir = 1 + }, +/turf/open/floor/f13{ + icon_state = "floorrusty" + }, +/area/f13/ncr) +"myO" = ( +/obj/effect/decal/cleanable/dirt{ + color = "#363636" + }, +/obj/mecha/working/normalvehicle/pickuptruck/mechanic/loaded, +/turf/open/floor/f13{ + icon_state = "floorrusty" + }, +/area/f13/city) "myT" = ( /obj/structure/fence/door{ max_integrity = 500; @@ -45410,6 +45486,15 @@ /obj/machinery/mineral/wasteland_vendor/clothing, /turf/open/floor/plating/f13/inside, /area/f13/wasteland) +"mDZ" = ( +/obj/item/record_disk, +/obj/item/record_disk, +/obj/item/record_disk, +/obj/item/record_disk, +/obj/item/record_disk, +/obj/structure/table/reinforced, +/turf/open/floor/f13/wood, +/area/f13/city) "mEp" = ( /obj/structure/fence/corner{ dir = 4 @@ -45589,6 +45674,13 @@ icon_state = "horizontaltopborderbottom0" }, /area/f13/wasteland) +"mHq" = ( +/obj/structure/railing{ + color = "#A47449"; + dir = 8 + }, +/turf/open/indestructible/ground/outside/sidewalk, +/area/f13/wasteland) "mHG" = ( /obj/effect/decal/waste{ icon_state = "goo8" @@ -46617,6 +46709,13 @@ /obj/structure/flora/ausbushes/reedbush, /turf/open/indestructible/ground/outside/water, /area/f13/wasteland) +"ndf" = ( +/obj/mecha/working/normalvehicle/truckcaravan/loaded, +/turf/open/indestructible/ground/outside/desert/sonora{ + dir = 4; + icon_state = "desertsmooth1" + }, +/area/f13/wasteland) "ndj" = ( /obj/effect/turf_decal/weather/dirt, /obj/effect/turf_decal/weather/dirt{ @@ -47310,6 +47409,11 @@ }, /turf/open/floor/plasteel/f13/vault_floor/misc/cafeteria, /area/f13/building/hospital) +"nrf" = ( +/obj/structure/table/reinforced, +/obj/item/pda/neko, +/turf/open/floor/f13/wood, +/area/f13/city) "nri" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -48107,6 +48211,14 @@ /obj/structure/barricade/wooden, /turf/closed/mineral/random/high_chance, /area/f13/caves) +"nJH" = ( +/obj/structure/rack, +/obj/item/mecha_parts/mecha_equipment/trunk, +/turf/open/floor/f13{ + dir = 10; + icon_state = "redmark" + }, +/area/f13/city) "nJI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/weather/dirt{ @@ -48320,9 +48432,6 @@ icon_state = "floorrusty" }, /area/f13/building/mall) -"nPu" = ( -/turf/open/floor/carpet, -/area/f13/city) "nPy" = ( /obj/machinery/door/poddoor/shutters/old{ id = "factorygate"; @@ -48724,6 +48833,10 @@ icon_state = "innermaincornerinner - W" }, /area/f13/wasteland) +"nXq" = ( +/obj/mecha/combat/combatvehicle/pickuptruck/bos/armed, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/brotherhood) "nXv" = ( /obj/effect/decal/cleanable/dirt, /turf/open/indestructible/ground/outside/sidewalk{ @@ -49461,6 +49574,15 @@ }, /turf/open/indestructible/ground/outside/graveldirt, /area/f13/caves) +"ont" = ( +/obj/structure/railing{ + color = "#A47449"; + dir = 4 + }, +/turf/open/indestructible/ground/outside/sidewalk{ + icon_state = "verticalrightborderright1" + }, +/area/f13/wasteland) "onv" = ( /obj/item/ammo_casing/c9mm, /turf/open/indestructible/ground/outside/road{ @@ -49664,6 +49786,12 @@ /obj/structure/flora/tree/cactus, /turf/open/indestructible/ground/outside/desert, /area/f13/wasteland) +"orG" = ( +/obj/mecha/working/normalvehicle/buggy/loaded, +/turf/open/indestructible/ground/outside/road{ + icon_state = "verticalleftborderright0" + }, +/area/f13/wasteland) "orI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -49675,46 +49803,6 @@ /obj/structure/obstacle/barbedwire/end, /turf/open/indestructible/ground/inside/mountain, /area/f13/legion) -"ose" = ( -/obj/structure/closet/locker/oldstyle{ - anchored = 1 - }, -/obj/item/clothing/accessory/ncr/TPR, -/obj/item/clothing/accessory/ncr/TPR, -/obj/item/clothing/accessory/ncr/TPR, -/obj/item/clothing/accessory/ncr/TPR, -/obj/item/clothing/accessory/ncr/SPC, -/obj/item/clothing/accessory/ncr/SPC, -/obj/item/clothing/accessory/ncr/SPC, -/obj/item/clothing/accessory/ncr/SGT, -/obj/item/clothing/accessory/ncr/SGT, -/obj/item/clothing/accessory/ncr/REC, -/obj/item/clothing/accessory/ncr/REC, -/obj/item/clothing/accessory/ncr/REC, -/obj/item/clothing/accessory/ncr/REC, -/obj/item/clothing/accessory/ncr/REC, -/obj/item/clothing/accessory/ncr/MCPL, -/obj/item/clothing/accessory/ncr/MCPL, -/obj/item/clothing/accessory/ncr/MCPL, -/obj/item/clothing/accessory/ncr/SSGT, -/obj/item/clothing/accessory/ncr/SSGT, -/obj/item/clothing/accessory/ncr/FSGT, -/obj/item/clothing/accessory/ncr/CPL, -/obj/item/clothing/accessory/ncr/CPL, -/obj/item/clothing/accessory/ncr/CPL, -/obj/item/clothing/accessory/medal/silver/valor, -/obj/item/clothing/accessory/medal/silver/valor, -/obj/item/clothing/accessory/medal/silver/valor, -/obj/item/clothing/accessory/medal/silver/valor, -/obj/item/clothing/accessory/medal/gold/captain, -/obj/item/clothing/accessory/medal/gold/captain, -/obj/item/clothing/accessory/medal/gold/heroism, -/obj/item/clothing/accessory/medal/gold/heroism, -/obj/item/clothing/accessory/medal/bronze_heart, -/obj/item/clothing/accessory/medal/bronze_heart, -/obj/item/clothing/accessory/medal/bronze_heart, -/turf/open/floor/plasteel/vault, -/area/f13/ncr) "oso" = ( /obj/effect/decal/cleanable/dirt{ color = "#363636" @@ -49782,16 +49870,6 @@ /obj/machinery/workbench, /turf/open/floor/wood_fancy/wood_fancy_dark, /area/f13/village) -"osV" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/record_disk, -/obj/item/record_disk, -/obj/item/record_disk, -/obj/item/record_disk, -/obj/item/record_disk, -/obj/item/record_disk, -/turf/open/floor/light/colour_cycle/dancefloor_b, -/area/f13/city) "osY" = ( /obj/effect/turf_decal/weather/dirt, /obj/effect/turf_decal/weather/dirt{ @@ -50287,9 +50365,6 @@ icon_state = "horizontaltopbordertop0" }, /area/f13/wasteland) -"oCs" = ( -/turf/open/floor/light/colour_cycle/dancefloor_a, -/area/f13/city) "oCA" = ( /obj/effect/decal/cleanable/oil/slippery, /turf/open/floor/f13{ @@ -51563,15 +51638,6 @@ icon_state = "bluerustysolid" }, /area/f13/building/museum) -"pcb" = ( -/obj/effect/turf_decal/trimline/white/line, -/obj/mecha/combat/phazon/highwayman/loaded{ - dir = 4 - }, -/turf/open/indestructible/ground/outside/road{ - icon_state = "verticalleftborderright0" - }, -/area/f13/wasteland) "pce" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -52001,13 +52067,6 @@ }, /turf/open/indestructible/ground/outside/water, /area/f13/wasteland) -"plQ" = ( -/obj/mecha/combat/phazon/buggy/legion/loaded, -/turf/open/indestructible/ground/outside/desert/sonora{ - dir = 4; - icon_state = "desertsmooth4" - }, -/area/f13/wasteland) "pma" = ( /obj/structure/flora/grass/jungle, /turf/open/indestructible/ground/outside/dirt{ @@ -53496,11 +53555,6 @@ icon_state = "desertsmooth1" }, /area/f13/wasteland) -"pNl" = ( -/obj/structure/table/reinforced, -/obj/item/pda/neko, -/turf/open/floor/carpet, -/area/f13/city) "pNn" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil/streak{ @@ -53628,15 +53682,6 @@ icon_state = "horizontalbottombordertop2" }, /area/f13/building/hospital) -"pQI" = ( -/obj/effect/turf_decal/trimline/white/line, -/obj/mecha/combat/phazon/buggy/dune{ - dir = 4 - }, -/turf/open/indestructible/ground/outside/road{ - icon_state = "verticalleftborderright0" - }, -/area/f13/wasteland) "pQQ" = ( /obj/machinery/light/lamp_post/doubles/bent{ dir = 8 @@ -53964,13 +54009,6 @@ icon_state = "yellowrustysolid" }, /area/f13/building/massfusion) -"pXF" = ( -/obj/structure/table/wood/bar, -/turf/open/indestructible/ground/outside/desert/sonora{ - dir = 4; - icon_state = "desertsmooth4" - }, -/area/f13/wasteland) "pXX" = ( /obj/structure/flora/grass/wasteland{ icon_state = "tall_grass_3" @@ -53994,6 +54032,13 @@ dir = 1 }, /area/f13/building/museum) +"pYw" = ( +/obj/structure/flora/ausbushes/fullgrass{ + pixel_x = -6 + }, +/mob/living/simple_animal/cow/brahmin/horse, +/turf/open/indestructible/ground/outside/dirt, +/area/f13/wasteland) "pYA" = ( /obj/machinery/hydroponics/soil/pot, /obj/structure/flora/wasteplant/wild_xander{ @@ -54718,6 +54763,13 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/f13/wood, /area/f13/radiation) +"qpm" = ( +/mob/living/simple_animal/cow/brahmin/horse, +/turf/open/indestructible/ground/outside/desert/sonora{ + dir = 4; + icon_state = "desertsmooth5" + }, +/area/f13/wasteland) "qpv" = ( /obj/structure/spacevine, /obj/effect/decal/cleanable/dirt, @@ -56271,14 +56323,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) -"qZj" = ( -/obj/structure/flora/branch, -/obj/mecha/combat/phazon/buggy/legionarmed/loaded, -/turf/open/indestructible/ground/outside/dirt{ - dir = 8; - icon_state = "dirtcorner" - }, -/area/f13/wasteland) "qZt" = ( /obj/structure/simple_door/tentflap_leather, /turf/open/indestructible/ground/outside/dirt{ @@ -56342,6 +56386,10 @@ icon_state = "dirt" }, /area/f13/radiation) +"rad" = ( +/obj/mecha/working/normalvehicle/corvega/police/loaded, +/turf/open/indestructible/ground/outside/sidewalk, +/area/f13/city) "ral" = ( /obj/structure/window/fulltile/house, /obj/structure/decoration/rag, @@ -56731,6 +56779,16 @@ icon_state = "horizontalbottomborderbottom0" }, /area/f13/wasteland) +"rjV" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/railing{ + color = "#A47449"; + dir = 8 + }, +/turf/open/indestructible/ground/outside/sidewalk, +/area/f13/wasteland) "rkf" = ( /obj/item/storage/trash_stack, /turf/open/floor/plasteel/f13{ @@ -56896,6 +56954,13 @@ icon_state = "darkrusty" }, /area/f13/building/museum) +"rnU" = ( +/mob/living/simple_animal/cow/brahmin/horse, +/turf/open/indestructible/ground/outside/desert/sonora{ + dir = 4; + icon_state = "desertsmooth1" + }, +/area/f13/wasteland) "rnX" = ( /obj/machinery/light/floor, /turf/open/indestructible/ground/outside/sidewalk{ @@ -57044,6 +57109,17 @@ icon_state = "verticaloutermain1" }, /area/f13/wasteland) +"rrZ" = ( +/obj/structure/window/fulltile/house{ + dir = 2; + icon_state = "storewindowtop" + }, +/obj/structure/barricade/wooden/planks/pregame, +/obj/structure/curtain{ + color = "#363636" + }, +/turf/open/floor/carpet, +/area/f13/city) "rsy" = ( /obj/structure/flora/tree/joshua, /obj/effect/decal/cleanable/dirt, @@ -57209,6 +57285,15 @@ icon_state = "verticalinnermainbottom" }, /area/f13/wasteland) +"ryt" = ( +/obj/structure/railing{ + color = "#A47449"; + dir = 4 + }, +/turf/open/indestructible/ground/outside/sidewalk{ + icon_state = "verticalrightborderright3" + }, +/area/f13/wasteland) "ryw" = ( /obj/structure/rack, /obj/item/clothing/glasses/regular, @@ -57436,14 +57521,6 @@ dir = 6 }, /area/f13/legion) -"rDZ" = ( -/obj/structure/window/fulltile/house{ - dir = 2; - icon_state = "storewindowtop" - }, -/obj/structure/barricade/wooden/planks/pregame, -/turf/open/floor/carpet, -/area/f13/city) "rEa" = ( /obj/structure/flora/grass/wasteland{ icon_state = "tall_grass_4" @@ -58878,6 +58955,12 @@ icon_state = "dirt" }, /area/f13/wasteland) +"siH" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/effect/landmark/start/f13/ncrdrillsergeant, +/turf/open/floor/wood_fancy, +/area/f13/ncr) "siL" = ( /turf/open/indestructible/ground/outside/road{ icon_state = "verticalleftborderright2bottom" @@ -60007,10 +60090,6 @@ icon_state = "dirt" }, /area/f13/legion) -"sIS" = ( -/obj/mecha/combat/phazon/corvega/police/loaded, -/turf/open/indestructible/ground/outside/sidewalk, -/area/f13/city) "sJn" = ( /obj/structure/flora/grass/wasteland{ icon_state = "tall_grass_2"; @@ -60315,6 +60394,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) +"sRQ" = ( +/obj/mecha/working/normalvehicle/jeep/loaded, +/turf/open/indestructible/ground/outside/dirt{ + dir = 9; + icon_state = "dirt" + }, +/area/f13/radiation) "sRZ" = ( /obj/structure/chair/wood, /turf/open/floor/wood_fancy/wood_fancy_dark, @@ -60603,12 +60689,6 @@ icon_state = "verticalrightborderleft1" }, /area/f13/building/hospital) -"sYu" = ( -/obj/structure/table, -/turf/open/floor/f13{ - icon_state = "floorrusty" - }, -/area/f13/city) "sYy" = ( /obj/structure/flora/grass/wasteland{ icon_state = "tall_grass_3" @@ -60773,6 +60853,16 @@ icon_state = "dirt" }, /area/f13/wasteland) +"tbP" = ( +/obj/effect/decal/cleanable/dirt{ + color = "#363636" + }, +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/f13{ + icon_state = "floorrusty" + }, +/area/f13/city) "tbW" = ( /turf/closed/wall/rust, /area/f13/legion) @@ -61068,6 +61158,15 @@ icon_state = "reddirtyfull" }, /area/f13/building/museum) +"til" = ( +/obj/mecha/working/normalvehicle/ambulance{ + dir = 4 + }, +/turf/open/indestructible/ground/outside/sidewalk{ + dir = 1; + icon_state = "outerpavementdirt" + }, +/area/f13/wasteland) "tir" = ( /obj/machinery/light/small, /turf/open/indestructible/ground/outside/road{ @@ -61827,6 +61926,16 @@ icon_state = "floorrustysolid" }, /area/f13/building/museum) +"tyY" = ( +/obj/machinery/light{ + dir = 1; + light_color = "#e8eaff" + }, +/obj/structure/chair/folding, +/turf/open/floor/f13{ + icon_state = "floorrusty" + }, +/area/f13/ncr) "tzb" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/folding{ @@ -61864,6 +61973,14 @@ icon_state = "horizontaloutermain2right" }, /area/f13/city) +"tzu" = ( +/obj/structure/flora/branch, +/obj/mecha/combat/combatvehicle/buggy/legionarmed/loaded, +/turf/open/indestructible/ground/outside/dirt{ + dir = 8; + icon_state = "dirtcorner" + }, +/area/f13/wasteland) "tzz" = ( /obj/structure/decoration/legion/tentpole/rope{ dir = 8 @@ -61940,16 +62057,14 @@ /obj/effect/turf_decal/gravel_edge/corner, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) -"tAN" = ( -/obj/structure/window/fulltile/house{ - icon_state = "storewindowright" +"tAK" = ( +/obj/mecha/working/normalvehicle/ambulance{ + dir = 1 }, -/obj/structure/barricade/wooden/planks/pregame, -/turf/closed/wall/f13/store{ - desc = "A pre-War wall made of solid concrete."; - name = "concrete wall" +/turf/open/indestructible/ground/outside/road{ + icon_state = "horizontalbottombordertop0" }, -/area/f13/city) +/area/f13/building/hospital) "tAP" = ( /obj/structure/flora/grass/wasteland{ icon_state = "tall_grass_2"; @@ -62693,10 +62808,6 @@ }, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) -"tNK" = ( -/obj/effect/landmark/start/f13/radio_host, -/turf/open/floor/carpet, -/area/f13/city) "tNN" = ( /obj/structure/chair/sofa/right{ dir = 8 @@ -62923,16 +63034,6 @@ icon_state = "verticalrightborderright1" }, /area/f13/wasteland) -"tTf" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/obj/mecha/combat/phazon/jeep/loaded{ - dir = 8 - }, -/turf/open/indestructible/ground/outside/road{ - icon_state = "verticalinnermain0" - }, -/area/f13/building) "tTk" = ( /obj/machinery/light/broken{ dir = 4 @@ -63052,13 +63153,6 @@ /obj/structure/barricade/wooden, /turf/closed/wall/r_wall, /area/f13/brotherhood) -"tVA" = ( -/obj/structure/simple_door/metal/store{ - name = "Radio Host"; - req_access = 274 - }, -/turf/open/indestructible/ground/outside/desert, -/area/f13/city) "tVG" = ( /obj/effect/decal/cleanable/dirt{ color = "000000" @@ -63073,13 +63167,6 @@ /obj/structure/obstacle/barbedwire, /turf/open/indestructible/ground/inside/mountain, /area/f13/caves) -"tVM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/mecha/combat/phazon/ncrtruck/mp/loaded, -/turf/open/indestructible/ground/outside/road{ - icon_state = "topshadowleft" - }, -/area/f13/wasteland) "tVN" = ( /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, @@ -64090,6 +64177,19 @@ /obj/effect/decal/remains/human, /turf/open/indestructible/ground/outside/dirt, /area/f13/radiation) +"utv" = ( +/obj/structure/closet/locker, +/obj/item/megaphone, +/obj/item/flashlight/glowstick/blue, +/obj/item/flashlight/glowstick/cyan, +/obj/item/flashlight/glowstick/orange, +/obj/item/flashlight/glowstick/pink, +/obj/item/flashlight/glowstick/red, +/obj/item/flashlight/glowstick/yellow, +/obj/item/grenade/flashbang, +/obj/item/grenade/flashbang, +/turf/open/floor/f13/wood, +/area/f13/city) "utz" = ( /obj/structure/curtain{ color = "#5c131b" @@ -64652,15 +64752,6 @@ /obj/effect/decal/cleanable/dirt, /turf/closed/wall/f13/wood/house, /area/f13/brotherhood) -"uFF" = ( -/obj/mecha/combat/phazon/ambulance{ - dir = 4 - }, -/turf/open/indestructible/ground/outside/sidewalk{ - dir = 1; - icon_state = "outerpavementdirt" - }, -/area/f13/wasteland) "uFP" = ( /obj/effect/decal/cleanable/dirt{ color = "#363636" @@ -64739,6 +64830,14 @@ /obj/structure/reagent_dispensers/barrel/dangerous, /turf/open/indestructible/ground/outside/desert, /area/f13/radiation) +"uHe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/folding, +/turf/open/floor/f13{ + icon_state = "floorrusty" + }, +/area/f13/ncr) "uHl" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -65086,6 +65185,22 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/f13/vault_floor/dark/darksolid, /area/f13/building) +"uNl" = ( +/obj/effect/landmark/start/f13/prospector, +/obj/structure/chair/folding{ + dir = 1 + }, +/obj/machinery/light{ + bulb_colour = "#BC8F8F"; + dir = 4; + icon_state = "tube-burned"; + light_color = "#BC8F8F"; + name = "bar light" + }, +/turf/open/floor/f13{ + icon_state = "floorrusty" + }, +/area/f13/city) "uNy" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -65306,6 +65421,12 @@ dir = 8 }, /area/f13/wasteland) +"uSz" = ( +/obj/structure/table/wood/fancy/black, +/obj/structure/table/wood/fancy/black, +/obj/machinery/radio_station, +/turf/open/floor/carpet/royalblack, +/area/f13/city) "uSY" = ( /obj/effect/decal/cleanable/dirt, /obj/item/target/communist, @@ -66048,6 +66169,15 @@ }, /turf/open/floor/plasteel/f13/vault_floor/red/white, /area/f13/building/mall) +"viO" = ( +/obj/structure/table/wood/bar, +/obj/item/mecha_parts/mecha_equipment/trunk, +/obj/item/mecha_parts/mecha_equipment/trunk, +/turf/open/indestructible/ground/outside/desert/sonora{ + dir = 4; + icon_state = "desertsmooth4" + }, +/area/f13/wasteland) "viQ" = ( /obj/structure/chair/pew/left{ dir = 8 @@ -66136,14 +66266,6 @@ }, /turf/open/floor/plasteel/f13/vault_floor/red/white, /area/f13/building/mall) -"vkN" = ( -/obj/structure/chair/f13foldupchair{ - dir = 1 - }, -/turf/open/floor/f13{ - icon_state = "darkdirtysolid" - }, -/area/f13/ncr) "vlm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/ladder/unbreakable{ @@ -66390,16 +66512,6 @@ /obj/structure/tires/five, /turf/open/indestructible/ground/outside/road, /area/f13/building) -"voS" = ( -/obj/machinery/light{ - dir = 1; - light_color = "#e8eaff" - }, -/obj/structure/chair/f13foldupchair, -/turf/open/floor/f13{ - icon_state = "floorrusty" - }, -/area/f13/ncr) "vph" = ( /obj/structure/chair{ dir = 1 @@ -66848,17 +66960,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) -"vyI" = ( -/obj/effect/decal/cleanable/dirt{ - color = "#363636" - }, -/obj/mecha/combat/phazon/pickuptruck/mechanic{ - dir = 4 - }, -/turf/open/floor/f13{ - icon_state = "floorrusty" - }, -/area/f13/city) "vzm" = ( /obj/effect/decal/riverbank, /obj/effect/turf_decal/weather/dirt{ @@ -67025,11 +67126,6 @@ "vDs" = ( /turf/closed/wall/f13/tentwall, /area/f13/caves) -"vDC" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/vault, -/area/f13/ncr) "vDF" = ( /obj/item/storage/toolbox/mechanical, /obj/structure/table, @@ -67069,19 +67165,6 @@ icon_state = "innermaincornerouter - S" }, /area/f13/wasteland) -"vEO" = ( -/obj/structure/closet/locker, -/obj/item/megaphone, -/obj/item/flashlight/glowstick/blue, -/obj/item/flashlight/glowstick/cyan, -/obj/item/flashlight/glowstick/orange, -/obj/item/flashlight/glowstick/pink, -/obj/item/flashlight/glowstick/red, -/obj/item/flashlight/glowstick/yellow, -/obj/item/grenade/flashbang, -/obj/item/grenade/flashbang, -/turf/open/floor/carpet, -/area/f13/city) "vEW" = ( /obj/effect/turf_decal/shadow, /obj/structure/decoration/legion/tentpole{ @@ -68806,6 +68889,15 @@ icon_state = "verticalleftborderright0" }, /area/f13/building) +"wrN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/folding{ + dir = 1 + }, +/turf/open/floor/f13{ + icon_state = "floorrusty" + }, +/area/f13/ncr) "wrQ" = ( /obj/structure/flora/grass/coyote/seventeen, /turf/open/indestructible/ground/outside/desert/sonora/rough{ @@ -68936,22 +69028,6 @@ /obj/effect/decal/remains/human, /turf/open/floor/plasteel/f13/vault_floor/neutral/neutralchess/neutralchess2, /area/f13/building/firestation) -"wvZ" = ( -/obj/effect/landmark/start/f13/prospector, -/obj/structure/chair/f13foldupchair{ - dir = 1 - }, -/obj/machinery/light{ - bulb_colour = "#BC8F8F"; - dir = 4; - icon_state = "tube-burned"; - light_color = "#BC8F8F"; - name = "bar light" - }, -/turf/open/floor/f13{ - icon_state = "floorrusty" - }, -/area/f13/city) "wwj" = ( /obj/effect/decal/cleanable/blood/old{ icon_state = "gib2-old" @@ -69141,6 +69217,16 @@ icon_state = "innerpavement" }, /area/f13/wasteland) +"wzQ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/railing{ + color = "#A47449"; + dir = 8 + }, +/turf/open/indestructible/ground/outside/sidewalk, +/area/f13/wasteland) "wzR" = ( /obj/item/stack/sheet/glass/ten, /obj/item/stack/sheet/metal{ @@ -69215,6 +69301,10 @@ /obj/structure/shelf_wood, /turf/open/floor/plasteel/f13/vault_floor/dark, /area/f13/building/hospital) +"wBH" = ( +/obj/mecha/working/normalvehicle/jeep/bos/loaded, +/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, +/area/f13/brotherhood) "wBP" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/broken{ @@ -69505,6 +69595,10 @@ icon_state = "bluerustysolid" }, /area/f13/building/museum) +"wGb" = ( +/obj/effect/landmark/start/f13/radio_host, +/turf/open/floor/f13/wood, +/area/f13/city) "wGg" = ( /turf/open/indestructible/ground/outside/sidewalk, /area/f13/building) @@ -70108,6 +70202,16 @@ icon_state = "floorrusty" }, /area/f13/city) +"wTS" = ( +/obj/structure/window/fulltile/house{ + icon_state = "storewindowright" + }, +/obj/structure/barricade/wooden/planks/pregame, +/obj/structure/curtain{ + color = "#363636" + }, +/turf/open/floor/f13/wood, +/area/f13/city) "wTZ" = ( /obj/structure/flora/grass/wasteland{ icon_state = "tall_grass_4" @@ -70483,6 +70587,10 @@ }, /turf/open/floor/plating/f13/inside, /area/f13/brotherhood/offices1st) +"xcm" = ( +/obj/structure/table/wood/fancy/black, +/turf/open/floor/carpet/royalblack, +/area/f13/city) "xco" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stock_parts/cell/ammo/ecp, @@ -70702,12 +70810,6 @@ /obj/structure/barricade/wooden, /turf/open/floor/grass, /area/f13/wasteland) -"xfe" = ( -/obj/mecha/combat/phazon/ncrtruck/loaded, -/turf/open/indestructible/ground/outside/road{ - icon_state = "verticalinnermain1" - }, -/area/f13/wasteland) "xfj" = ( /obj/machinery/autolathe/ammo, /obj/item/stack/sheet/metal, @@ -71096,6 +71198,12 @@ /mob/living/simple_animal/hostile/ghoul, /turf/open/floor/f13, /area/f13/building) +"xoZ" = ( +/obj/mecha/working/normalvehicle/ncrtruck/loaded, +/turf/open/indestructible/ground/outside/road{ + icon_state = "verticalinnermain1" + }, +/area/f13/wasteland) "xpy" = ( /obj/structure/closet/cabinet, /obj/item/clothing/head/helmet/gladiator, @@ -72299,6 +72407,34 @@ /obj/structure/chair/bench, /turf/open/indestructible/ground/outside/road, /area/f13/wasteland) +"xOC" = ( +/obj/structure/closet/locker/oldstyle{ + anchored = 1 + }, +/obj/item/clothing/accessory/ncr/TPR, +/obj/item/clothing/accessory/ncr/TPR, +/obj/item/clothing/accessory/ncr/TPR, +/obj/item/clothing/accessory/ncr/TPR, +/obj/item/clothing/accessory/ncr/SPC, +/obj/item/clothing/accessory/ncr/SPC, +/obj/item/clothing/accessory/ncr/SPC, +/obj/item/clothing/accessory/ncr/SGT, +/obj/item/clothing/accessory/ncr/SGT, +/obj/item/clothing/accessory/ncr/REC, +/obj/item/clothing/accessory/ncr/REC, +/obj/item/clothing/accessory/ncr/REC, +/obj/item/clothing/accessory/ncr/REC, +/obj/item/clothing/accessory/ncr/MCPL, +/obj/item/clothing/accessory/ncr/MCPL, +/obj/item/clothing/accessory/ncr/MCPL, +/obj/item/clothing/accessory/ncr/SSGT, +/obj/item/clothing/accessory/ncr/SSGT, +/obj/item/clothing/accessory/ncr/FSGT, +/obj/item/clothing/accessory/ncr/CPL, +/obj/item/clothing/accessory/ncr/CPL, +/obj/item/clothing/accessory/ncr/CPL, +/turf/open/floor/plasteel/vault, +/area/f13/ncr) "xOD" = ( /turf/open/indestructible/ground/outside/dirt{ icon_state = "dirt" @@ -72718,10 +72854,6 @@ }, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) -"xYD" = ( -/obj/mecha/combat/phazon/pickuptruck/bos/loaded, -/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust, -/area/f13/brotherhood) "xYE" = ( /turf/open/indestructible/ground/outside/sidewalk{ icon_state = "horizontaloutermain1" @@ -73911,7 +74043,7 @@ cjh cjh cmi cjh -cjh +fgh pxI rVR cmi @@ -73922,9 +74054,9 @@ aVW cjh kIz pxI -maO +gKC mrg -hwV +myM pxI aae aae @@ -74165,10 +74297,10 @@ uIX cmi aoo bOm -cjh ojV +fdy cjh -cmi +wrN uDh kOP dPt @@ -74179,9 +74311,9 @@ cjh cjh kIz pxI -maO +gKC iYA -vkN +kGF pxI aae aae @@ -74424,8 +74556,8 @@ aon lAt uVt meM -fdy -gpM +cjh +glU kGV fWM cmi @@ -74941,7 +75073,7 @@ ieS bsj cmi qRw -iQg +uHe cjh kgQ cjh @@ -75449,11 +75581,11 @@ aon byt dSW aoo -maO +gKC cld cld bsj -hwV +myM qRw cjh cjh @@ -75706,11 +75838,11 @@ kGV aon aon aoo -voS +tyY cld ieS bsj -kjE +glU kGV mSw mSw @@ -75963,11 +76095,11 @@ kGV kGV pxI aoo -maO +gKC bsj ieS bsj -hwV +myM kGV pxI pxI @@ -76445,11 +76577,11 @@ anb rhA bll xLa -rbV +jmr anO rbV rbV -anb +jfF xLa djQ djQ @@ -77248,8 +77380,8 @@ kGV kGV vsg aQZ -tVM -iZS +tyE +cPA iZS iZS vJC @@ -77477,7 +77609,7 @@ rbV rbV abE abE -vDC +dQX apI lZB rvG @@ -77754,7 +77886,7 @@ xLC pxI bpT akt -bnv +dJS vjj akt gEL @@ -80825,7 +80957,7 @@ kLl aqU aQZ mHp -gBa +fdT oXi jIk gPZ @@ -81069,7 +81201,7 @@ azy rbV rbV rbV -axe +opm xLa aLw gZe @@ -81090,7 +81222,7 @@ hnE mHp bMM fiV -blX +kID jIk tnZ tnZ @@ -81326,7 +81458,7 @@ aJR qSH abE abE -opm +aXn xLa xLa xLa @@ -81339,7 +81471,7 @@ xLa vsg aQZ tws -hYW +bMM ahQ ftl skm @@ -81583,7 +81715,7 @@ aLq bxA abE abE -ose +xOC xLa vAp evn @@ -81853,7 +81985,7 @@ bpc ean koC fHV -xfe +xoZ bMM bMM qmG @@ -83766,7 +83898,7 @@ hop hiX hiX hiX -bLE +sRQ aqB koF xMn @@ -85213,7 +85345,7 @@ bPp faR aOk aUU -pWr +pYw frx izV xfd @@ -85815,7 +85947,7 @@ hop hiX bGM koF -ctm +shj olP jrJ eBJ @@ -85956,7 +86088,7 @@ qqf xLa agm djQ -qqf +agm xLa agm djQ @@ -86464,13 +86596,13 @@ aae aae aae xLa -jDH +siH djQ xtp xLa jDH -djQ xtp +jDH xLa alK djQ @@ -96112,7 +96244,7 @@ eJO eJO anR aky -lPd +nJH clv clv ybs @@ -97920,7 +98052,7 @@ pzM ueV kls xvB -sIS +jkB jkB rtz iht @@ -98177,7 +98309,7 @@ pzM ueV aTC jkB -jkB +rad jkB rtz iht @@ -102021,7 +102153,7 @@ kPz kxH ahQ hEG -uFF +til qba xLy wqL @@ -104603,15 +104735,15 @@ mHp uNJ igF lHx -tnZ -tnZ -tnZ -pPz -hax -hvO -btZ -qhx -bFI +dkg +dkg +dkg +jMF +hvA +ont +aId +icv +ryt tue yaf hvO @@ -104859,11 +104991,11 @@ ojt mHp uNJ igF -hEG +iFh xLy xLy hEp -rDZ +rrZ mYp qrP aky @@ -105107,22 +105239,22 @@ ean ean aQZ mWz -iZS -pQI +orG +uih qbe uih iZS -pcb +uih cml uNJ igF -hEG -iGU -pNl -tNK -nPu -czx -mfI +iFh +wTS +nrf +wGb +gNl +uSz +jjD oPk voM wjR @@ -105373,13 +105505,13 @@ ujy uNJ uNJ igF -hEG -eQY -nPu -nPu -nPu -osV -oCs +bKT +xLy +mDZ +jeh +gNl +xcm +bcw kls aYj aYj @@ -105630,13 +105762,13 @@ uNJ uNJ uNJ igF -hEG -tAN -kuR -nPu -nPu -oCs -ebK +dtZ +wTS +jeh +jeh +bcw +bcw +bcw kls clv clv @@ -105888,12 +106020,12 @@ uNJ uNJ igF hEG -tVA -nPu -nPu -nPu -kSe -vEO +gNA +jeh +jeh +jeh +ijA +utv kls kls tsQ @@ -106148,7 +106280,7 @@ hEG xLy iDA gvi -fbd +jMu eBY xLy kls @@ -106402,19 +106534,19 @@ uNJ uNJ igF hEG +mHq +mHq +mHq +mHq +wzQ +mHq +mHq +mHq +rjV ean -ean -ean -ean -cqZ -ean -ean -ean -kvn -ean -ean -ean -ean +mHq +mHq +mHq aiO pVH uNT @@ -109238,7 +109370,7 @@ pfM pfM pfM pfM -sYu +iry xLy aiO ean @@ -109533,7 +109665,7 @@ tCg wfA mwY vqW -tTf +fDk ivL ckh rVc @@ -110253,7 +110385,7 @@ uNJ uNJ sTV pcH -vyI +myO rkt pfM tom @@ -111281,7 +111413,7 @@ uNJ uNJ lfZ uYj -cnH +tbP cUl ahY xLy @@ -112052,7 +112184,7 @@ huu iSu xLy vin -wvZ +uNl yaH dIZ xLy @@ -115243,7 +115375,7 @@ aaa aaa woD dGJ -cpr +nXq oYF gnj oYF @@ -115757,7 +115889,7 @@ aaa aaa woD oYF -xYD +oYF oYF oYF gBV @@ -116014,7 +116146,7 @@ aaa aaa woD oYF -oYF +wBH oYF ubv gBV @@ -116271,7 +116403,7 @@ aaa aaa woD dGJ -epN +gnj oYF oYF xfy @@ -122519,7 +122651,7 @@ uKu sWV pGU iEJ -aBG +tAK tHJ ijr mRs @@ -125239,9 +125371,9 @@ jSA elV izz ccj -qZj -gqe +tzu gqe +gAk iXx dJF dJF @@ -125494,11 +125626,11 @@ aae vGl ybw ste -pXF +viO dJF sWC dJF -ksL +dJF dJF dJF uWK @@ -125753,7 +125885,7 @@ dTY eqw hoi jcN -plQ +dJF dJF dJF iVP @@ -129082,7 +129214,7 @@ iZG fYQ aae asS -gmA +tIG aaB aaB oJB @@ -135269,7 +135401,7 @@ sVE ccj sWC fnz -ccj +ndf ccj fPm sWC @@ -135772,7 +135904,7 @@ sMp hrE ccj ccj -ccj +rnU sWC sVE ccj @@ -136288,7 +136420,7 @@ ccj voq sVE ccj -xJd +qpm ccj sWC eov @@ -136800,7 +136932,7 @@ sMp gvW dJF oDu -ccj +rnU ccj sWC ccj @@ -137819,7 +137951,7 @@ ixo crt sWC hrE -tWI +lKT sMp rCi hrE diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index eaf5722a5eb..5f04e22158e 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -121,6 +121,9 @@ //#define CAT_EXPLOSIVE "Explosives" #define CAT_VEHICLES "Vehicles" #define CAT_VEHICLEPARTS "Vehicle Parts" +#define CAT_VEHICLECOREPARTS "Vehicle Core Parts" +#define CAT_CARS "Cars" +#define CAT_VERTIBIRD "Vertibirds" #define RCD_FLOORWALL 1 #define RCD_AIRLOCK 2 diff --git a/code/__DEFINES/vote.dm b/code/__DEFINES/vote.dm index d76bf0de5f2..12b94732e40 100644 --- a/code/__DEFINES/vote.dm +++ b/code/__DEFINES/vote.dm @@ -10,8 +10,7 @@ #define SHOW_WINNER (1<<2) #define SHOW_ABSTENTION (1<<3) -GLOBAL_LIST_INIT(vote_score_options,list("Ginormo Megaballs","Couch-Sized Butts","Send Pizza","Bedlike Gazongas","Gerbils")) -//GLOBAL_LIST_INIT(vote_score_options,list("Bad","Poor","Acceptable","Good","Great")) +GLOBAL_LIST_INIT(vote_score_options,list("Bad","Poor","Acceptable","Good","Great")) GLOBAL_LIST_INIT(vote_type_names,list(\ "Plurality (default)" = PLURALITY_VOTING,\ diff --git a/code/_onclick/adjacent.dm b/code/_onclick/adjacent.dm index 6d19e10d109..c8f50752f8a 100644 --- a/code/_onclick/adjacent.dm +++ b/code/_onclick/adjacent.dm @@ -79,7 +79,7 @@ /obj/item/Adjacent(atom/neighbor, atom/target, atom/movable/mover, recurse = 1) if(neighbor == loc) return 1 - if(isitem(loc)) + if(isitem(loc) || istype(loc, /obj/mecha)) if(recurse > 0) for(var/obj/item/item_loc as anything in get_locs()) if(item_loc.Adjacent(neighbor, target, mover, recurse - 1)) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 50c6abe3e72..da5dcf6c0bf 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -192,28 +192,28 @@ /datum/config_entry/flag/arrivals_shuttle_require_safe_latejoin //Require the arrivals shuttle to be operational in order for latejoiners to join /datum/config_entry/string/alert_green - config_entry_value = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced." + config_entry_value = "All threats to the region have passed. Law enforcement may not have weapons visible, privacy laws are once again fully enforced." /datum/config_entry/string/alert_blue_upto - config_entry_value = "The station has received reliable information about potential threats to the station. Security staff may have weapons visible, random searches are permitted." + config_entry_value = "Your local relay has received reliable information about potential threats to the region. Law enforcement may have weapons visible, random searches are permitted." /datum/config_entry/string/alert_blue_downto - config_entry_value = "Significant confirmed threats have been neutralized. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still permitted." + config_entry_value = "Significant confirmed threats have been neutralized. Law enforcement may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still permitted." /datum/config_entry/string/alert_amber_upto - config_entry_value = "There are significant confirmed threats to the station. Security staff may have weapons unholstered at all times. Random searches are allowed and advised." + config_entry_value = "There are significant confirmed threats to the region. Law enforcement may have weapons unholstered at all times. Random searches are allowed and advised." /datum/config_entry/string/alert_amber_downto - config_entry_value = "The immediate threat has passed. Security is no longer authorized to use lethal force, but may continue to have weapons drawn. Access requirements have been restored." + config_entry_value = "The immediate threat has passed. Law enforcement is no longer authorized to use lethal force, but may continue to have weapons drawn. Access requirements have been restored." /datum/config_entry/string/alert_red_upto - config_entry_value = "There is an immediate serious threat to the station. Security is now authorized to use lethal force. Additionally, access requirements on some machines have been lifted." + config_entry_value = "There is an immediate serious threat to the region. Law enforcement is now authorized to use lethal force. Local clearance increases have been authorized." /datum/config_entry/string/alert_red_downto - config_entry_value = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security is still authorized to use lethal force." + config_entry_value = "The region's destruction has been averted. There is still however an immediate serious threat to the area." /datum/config_entry/string/alert_delta - config_entry_value = "Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill." + config_entry_value = "Destruction of the region is imminent. All citizens are instructed to obey all instructions given by law enforcement. Any violations of these orders can be punished by death. This is not a drill." /datum/config_entry/flag/revival_pod_plants @@ -538,10 +538,10 @@ /// Sets the amount of quirk points players get by default /datum/config_entry/number/quirk_points - config_entry_value = 5 + config_entry_value = 1 min_val = 0 /// Sets the amount of validballs to spawn /datum/config_entry/number/validball_count - config_entry_value = 1 + config_entry_value = 0 min_val = 0 diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index ee717b245c4..c49ef0211f6 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -48,7 +48,6 @@ SUBSYSTEM_DEF(persistence) LoadPanicBunker() SSjob.AddMapJobs() //shut up LoadPaintings() //i am in physical pain - LoadFolders() return ..() /datum/controller/subsystem/persistence/proc/LoadSatchels() @@ -257,7 +256,6 @@ SUBSYSTEM_DEF(persistence) SavePaintings() SaveScars() SaveNoticeboards() - SaveFolders() /datum/controller/subsystem/persistence/proc/LoadPanicBunker() var/bunker_path = file("data/bunker_passthrough.json") @@ -349,7 +347,6 @@ SUBSYSTEM_DEF(persistence) /datum/controller/subsystem/persistence/proc/LoadNoticeboards() var/photo_path = file("data/notice_board_photos.json") - var/paper_path = file("data/notice_board_papers.json") if(fexists(photo_path)) // Photos! var/list/json = json_decode(file2text(photo_path)) @@ -361,17 +358,6 @@ SUBSYSTEM_DEF(persistence) if(json[N.persistenceID]) N.PopulatePhotosFromIDList(json[N.persistenceID]) - if(fexists(paper_path)) // Papers! - var/list/json = json_decode(file2text(paper_path)) - if(json.len) - for(var/i in noticeBoards) - var/obj/structure/noticeboard/N = i - if(!N.persistenceID) - continue - if(json[N.persistenceID]) - N.PopulatePaperFromList(json[N.persistenceID]) - - /datum/controller/subsystem/persistence/proc/SaveNoticeboards() var/photo_path = file("data/notice_board_photos.json") var/paper_path = file("data/notice_board_papers.json") @@ -392,8 +378,6 @@ SUBSYSTEM_DEF(persistence) continue var/list/L = F.GetPictureIDList() photo_json[F.persistenceID] = L - var/list/savedPapers = F.StorePaperDataList() - paper_json[F.persistenceID] = savedPapers photo_json = json_encode(photo_json) paper_json = json_encode(paper_json) @@ -627,44 +611,3 @@ SUBSYSTEM_DEF(persistence) if(!ending_human.client) return ending_human.client.prefs.save_character() - -/datum/controller/subsystem/persistence/proc/GetFolders() - var/folder_path = file("data/folders.json") - if(fexists(folder_path)) - return json_decode(file2text(folder_path)) - -/datum/controller/subsystem/persistence/proc/LoadFolders() - var/folder_path = file("data/folders.json") - var/list/folder_json = list() - - if(!fexists(folder_path)) - return - - folder_json = json_decode(file2text(folder_path)) - - for(var/i in folders) - var/obj/item/folder/F = i - if(!F.persistenceID) - continue - if(folder_json[F.persistenceID]) - F.PopulatePaperFromList(folder_json[F.persistenceID]) - - -/datum/controller/subsystem/persistence/proc/SaveFolders() - var/folder_path = file("data/folders.json") - var/list/folder_json = list() - - if(fexists(folder_path)) - folder_json = json_decode(file2text(folder_path)) - fdel(folder_path) - - for(var/i in folders) - var/obj/item/folder/F = i - if(!istype(F) || !F.persistenceID) - continue - var/list/savedPapers = F.StorePaperDataList() - folder_json[F.persistenceID] = savedPapers - - folder_json = json_encode(folder_json) - - WRITE_FILE(folder_path, folder_json) diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index b1f2fa8dd77..f9386895732 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -33,6 +33,12 @@ //CAT_FURNITURE, //CAT_BOTTLE, ), + CAT_VEHICLES = list( + CAT_VEHICLEPARTS, + CAT_VEHICLECOREPARTS, + CAT_CARS, + CAT_VERTIBIRD, + ), CAT_PRIMAL = CAT_NONE, CAT_FOOD = list( CAT_WASTEFOOD, diff --git a/code/datums/components/crafting/recipes/vehicle_crafts.dm b/code/datums/components/crafting/recipes/vehicle_crafts.dm new file mode 100644 index 00000000000..075b9bdcac8 --- /dev/null +++ b/code/datums/components/crafting/recipes/vehicle_crafts.dm @@ -0,0 +1,342 @@ +/datum/crafting_recipe/carbase/step1 + name = "Repair car carcass (Step 1)" + result = /obj/structure/mecha_wreckage/ncrtruck + reqs = list(/obj/structure/car/rubbish3, + /obj/item/stack/crafting/goodparts = 8, + /obj/item/stack/sheet/metal = 2, + /obj/item/stack/sheet/prewar = 4, + /obj/item/stack/sheet/mineral/silver = 2) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +/datum/crafting_recipe/carbase/step2 + name = "Add a car battery and engine (Step 2)" + result = /obj/structure/mecha_wreckage/ncrtruck/engine + reqs = list(/obj/structure/mecha_wreckage/ncrtruck, + /obj/item/vehiclecorepart/tires = 1, + /obj/item/vehiclecorepart/engine = 1, + /obj/item/defibrillator/primitive = 1, + /obj/item/stack/cable_coil = 5) + tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH) + time = 40 + +/datum/crafting_recipe/carbase/step3 + name = "Add a car seat, and electronics (Step 3)" + result = /obj/structure/mecha_wreckage/ncrtruck/seat + reqs = list(/obj/item/mecha_parts/mecha_equipment/seat = 1, + /obj/item/stack/cable_coil = 10, + /obj/item/stack/crafting/electronicparts = 15) + tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH) + time = 20 + +// Caravan +/datum/crafting_recipe/carbase/truckcaravan + name = "Carvan Pickup (Skipped Step 2 and 3)" + result = /obj/mecha/working/normalvehicle/truckcaravan + reqs = list(/obj/structure/mecha_wreckage/ncrtruck, + /obj/item/stack/sheet/metal = 20, + /obj/item/stack/cable_coil = 8,) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Red Truck +/datum/crafting_recipe/carbase/truck + name = "Red Pickup Truck (Final Step)" + result = /obj/mecha/working/normalvehicle/pickuptruck/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 10, + /obj/item/stack/sheet/metal = 30, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 4) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Blue Truck +/datum/crafting_recipe/carbase/truck/blue + name = "Blue Pickup Truck (Final Step)" + result = /obj/mecha/working/normalvehicle/pickuptruck/blue/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 10, + /obj/item/stack/sheet/metal = 30, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 4) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//BOS Truck +/datum/crafting_recipe/carbase/truck/bos + name = "BOS Pickup Truck (Final Step)" + result = /obj/mecha/working/normalvehicle/pickuptruck/bos/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 10, + /obj/item/stack/sheet/metal = 30, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 4) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Buggy +/datum/crafting_recipe/carbase/buggy + name = "Buggy (Final Step)" + result = /obj/mecha/working/normalvehicle/buggy/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 5, + /obj/item/stack/sheet/metal = 15, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 10) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Buggy Dune +/datum/crafting_recipe/carbase/buggy/dune + name = "Dune Buggy (Final Step)" + result = /obj/mecha/working/normalvehicle/buggy/dune/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 5, + /obj/item/stack/sheet/metal = 15, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 10) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Buggy Blue +/datum/crafting_recipe/carbase/buggy/blue + name = "Blue Buggy (Final Step)" + result = /obj/mecha/working/normalvehicle/buggy/blue/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 5, + /obj/item/stack/sheet/metal = 15, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 10) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//buggy flamme +/datum/crafting_recipe/carbase/buggy/flamme + name = "Flamme Buggy (Final Step)" + result = /obj/mecha/working/normalvehicle/buggy/flamme/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 5, + /obj/item/stack/sheet/metal = 15, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 10) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Corvega +/datum/crafting_recipe/carbase/corvega + name = "Corvega (Final Step)" + result = /obj/mecha/working/normalvehicle/corvega/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 15, + /obj/item/stack/sheet/metal = 35, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 15) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Buggy Ranger +/datum/crafting_recipe/carbase/buggy/ranger + name = "NCR Ranger Buggy (Final Step)" + result = /obj/mecha/working/normalvehicle/buggy/ranger/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 5, + /obj/item/stack/sheet/metal = 15, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 10) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + always_available = FALSE + +//Buggy legion +/datum/crafting_recipe/carbase/buggy/legion + name = "Legion Chariot Buggy (Final Step)" + result = /obj/mecha/working/normalvehicle/buggy/legion/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 5, + /obj/item/stack/sheet/metal = 15, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 10) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + always_available = FALSE + +//Highwayman +/datum/crafting_recipe/carbase/highwayman + name = "Highwayman (Final Step)" + result = /obj/mecha/working/normalvehicle/highwayman/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 15, + /obj/item/stack/sheet/metal = 35, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 15) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + + +//Highwayman +/datum/crafting_recipe/carbase/highwayman + name = "Highwayman (Final Step)" + result = /obj/mecha/working/normalvehicle/highwayman/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 15, + /obj/item/stack/sheet/metal = 35, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 15) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//jeep + +/datum/crafting_recipe/carbase/jeep + name = "Jeep (Final Step)" + result = /obj/mecha/working/normalvehicle/jeep/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 10, + /obj/item/stack/sheet/metal = 40, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 25) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Jeep enclave + +/datum/crafting_recipe/carbase/jeep/enclave + name = "Enclave Jeep (Final Step)" + result = /obj/mecha/working/normalvehicle/jeep/enclave/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 10, + /obj/item/stack/sheet/metal = 40, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 25) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Jeep BOS + +/datum/crafting_recipe/carbase/jeep/enclave + name = "Enclave Jeep (Final Step)" + result = /obj/mecha/working/normalvehicle/jeep/bos/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 10, + /obj/item/stack/sheet/metal = 40, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 25) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + always_available = FALSE + +//NCR Truck + +/datum/crafting_recipe/carbase/ncrtruck + name = "NCR MP Truck (Final Step)" + result = /obj/mecha/working/normalvehicle/ncrtruck/mp/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 20, + /obj/item/stack/sheet/metal = 50, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 30) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +/datum/crafting_recipe/carbase/ncrtruck/mp + name = "NCR Truck (Final Step)" + result = /obj/mecha/working/normalvehicle/ncrtruck/loaded + reqs = list(/obj/structure/mecha_wreckage/ncrtruck/seat, + /obj/item/stack/sheet/glass = 20, + /obj/item/stack/sheet/metal = 50, + /obj/item/toy/crayon/spraycan = 1, + /obj/item/stack/sheet/prewar = 30) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + always_available = FALSE + + +//BOS Truck ARMED +/datum/crafting_recipe/carbase/truck/bos/armed + name = "BOS Truck Gunner station (Arming Step - REMOVE ALL MODULE FROM CAR BEFORE MODIFYING)" + result = /obj/mecha/combat/combatvehicle/pickuptruck/bos/armed + reqs = list(/obj/mecha/working/normalvehicle/pickuptruck/bos, + /obj/item/stack/sheet/metal = 20, + /obj/item/trash/f13/electronic/toaster =1, + /obj/item/stack/sheet/prewar = 4) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Ranger buggy ARMED +/datum/crafting_recipe/carbase/buggy/ranger/armed + name = "Ranger buggy gunner station (Arming Step - REMOVE ALL MODULE FROM CAR BEFORE MODIFYING)" + result = /obj/mecha/combat/combatvehicle/buggy/rangerarmed + reqs = list(/obj/mecha/working/normalvehicle/buggy/ranger, + /obj/item/stack/sheet/metal = 20, + /obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, + /obj/item/stack/sheet/prewar = 4) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//legion buggy ARMED +/datum/crafting_recipe/carbase/buggy/legion/armed + name = "Legion buggy gunner station (Arming Step - REMOVE ALL MODULE FROM CAR BEFORE MODIFYING)" + result = /obj/mecha/combat/combatvehicle/buggy/legionarmed + reqs = list(/obj/mecha/working/normalvehicle/buggy/legion, + /obj/item/stack/sheet/metal = 20, + /obj/item/reagent_containers/pill/bitterdrink = 1, + /obj/item/stack/sheet/prewar = 4) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Vertibird combat conversion +/datum/crafting_recipe/carbase/vertibird/armed + name = "Combat Vertibird (Arming Step - REMOVE ALL MODULE FROM CAR BEFORE MODIFYING)" + result = /obj/mecha/combat/combatvehicle/vertibird + reqs = list(/obj/mecha/working/normalvehicle/vertibird, + /obj/item/stack/sheet/metal = 100, + /obj/item/stack/crafting/electronicparts = 50, + /obj/item/stack/sheet/prewar = 50) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Vertibird NCR combat conversion +/datum/crafting_recipe/carbase/vertibird/armed + name = "Combat NCR Vertibird (Arming Step - REMOVE ALL MODULE FROM CAR BEFORE MODIFYING)" + result = /obj/mecha/combat/combatvehicle/vertibird/ncr + reqs = list(/obj/mecha/working/normalvehicle/vertibird/ncr, + /obj/item/stack/sheet/metal = 100, + /obj/item/stack/crafting/electronicparts = 50, + /obj/item/stack/sheet/prewar = 50) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Vertibird BOS combat conversion +/datum/crafting_recipe/carbase/vertibird/armed + name = "Combat BOS Vertibird (Arming Step - REMOVE ALL MODULE FROM CAR BEFORE MODIFYING)" + result = /obj/mecha/combat/combatvehicle/vertibird/brotherhood + reqs = list(/obj/mecha/working/normalvehicle/vertibird/brotherhood, + /obj/item/stack/sheet/metal = 100, + /obj/item/stack/crafting/electronicparts = 50, + /obj/item/stack/sheet/prewar = 50) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Vertibird Enclave combat conversion +/datum/crafting_recipe/carbase/vertibird/armed + name = "Combat Enclave Vertibird (Arming Step - REMOVE ALL MODULE FROM CAR BEFORE MODIFYING)" + result = /obj/mecha/combat/combatvehicle/vertibird/enclave + reqs = list(/obj/mecha/working/normalvehicle/vertibird/enclave, + /obj/item/stack/sheet/metal = 100, + /obj/item/stack/crafting/electronicparts = 50, + /obj/item/stack/sheet/prewar = 50) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 + +//Lebgion balloon combat conversion +/datum/crafting_recipe/carbase/vertibird/armed + name = "Legion Balloon (Arming Step - REMOVE ALL MODULE FROM CAR BEFORE MODIFYING)" + result = /obj/mecha/combat/combatvehicle/vertibird/balloon + reqs = list(/obj/mecha/working/normalvehicle/vertibird/balloon, + /obj/item/stack/sheet/metal = 50, + /obj/item/stack/crafting/electronicparts = 25, + /obj/item/reagent_containers/pill/bitterdrink = 1, + /obj/item/stack/sheet/prewar = 25) + tools = list(TOOL_WELDER, TOOL_WRENCH) + time = 100 diff --git a/code/datums/components/crafting/recipes/vehicle_parts.dm b/code/datums/components/crafting/recipes/vehicle_parts.dm index eb4fa57941c..5d820450cda 100644 --- a/code/datums/components/crafting/recipes/vehicle_parts.dm +++ b/code/datums/components/crafting/recipes/vehicle_parts.dm @@ -292,3 +292,37 @@ subcategory = CAT_VEHICLES category = CAT_VEHICLEPARTS +/datum/crafting_recipe/carpart/trunk + name = "Modular Trunk" + result = /obj/item/mecha_parts/mecha_equipment/trunk + reqs = list(/obj/item/stack/sheet/metal = 5, + /obj/item/stack/crafting/metalparts = 10, + /obj/item/stack/sheet/plastic = 5, + /obj/item/stack/rods = 2) + tools = list(TOOL_WORKBENCH) + time = 90 + subcategory = CAT_VEHICLES + category = CAT_VEHICLEPARTS + +//Core parts + +/datum/crafting_recipe/engine + name = "Repaired Engine" + result = /obj/item/vehiclecorepart/engine + reqs = list(/obj/structure/wreck/trash/engine, + /obj/item/stack/crafting/metalparts = 10, + /obj/item/stack/crafting/goodparts = 4) + tools = list(TOOL_WORKBENCH, TOOL_WELDER, TOOL_SCREWDRIVER) + time = 100 + subcategory = CAT_VEHICLES + category = CAT_VEHICLECOREPARTS + +/datum/crafting_recipe/tires + name = "Repaired tires" + result = /obj/item/vehiclecorepart/tires + reqs = list(/obj/structure/tires, + /obj/item/stack/sheet/plastic = 4) + tools = list(TOOL_WELDER) + time = 20 + subcategory = CAT_VEHICLES + category = CAT_VEHICLECOREPARTS diff --git a/code/datums/components/storage/concrete/trunk.dm b/code/datums/components/storage/concrete/trunk.dm new file mode 100644 index 00000000000..00ed6b31e53 --- /dev/null +++ b/code/datums/components/storage/concrete/trunk.dm @@ -0,0 +1,43 @@ +/datum/component/storage/concrete/trunk + var/dumping_sound = 'sound/mecha/neostep1.ogg' + + +/datum/component/storage/concrete/trunk/mousedrop_onto() + var/obj/item/mecha_parts/mecha_equipment/trunk/P = parent + if(!P.chassis) + P.visible_message("The [P] is not installed!.", "someone tried to open you!.") + return + . = ..() + +/datum/component/storage/concrete/trunk/dump_content_at(atom/dest_object, mob/M) + var/obj/item/mecha_parts/mecha_equipment/trunk/P = parent + var/obj/mecha/A = P.chassis + if(!A) + P.visible_message("The [P] is not installed!.", "someone tried to open you!.") + return + var/atom/dump_destination = dest_object.get_dumping_location() + if(A.Adjacent(M) && dump_destination && M.Adjacent(dump_destination)) + if(check_locked(null, M, TRUE)) + return FALSE + if(dump_destination.storage_contents_dump_act(src, M)) + playsound(A, "rustle", 50, 1, -5) + A.do_squish(0.8, 1.2) + return TRUE + return FALSE + +/datum/component/storage/concrete/trunk/signal_take_type(datum/source, type, atom/destination, amount = INFINITY, check_adjacent = FALSE, force = FALSE, mob/user, list/inserted) + if(!force) + if(check_adjacent) + if(!user || !user.can_reach(destination) || !user.can_reach(parent)) + return FALSE + var/list/taking = typecache_filter_list(contents(), typecacheof(type)) + if(taking.len > amount) + taking.len = amount + if(inserted) //duplicated code for performance, don't bother checking retval/checking for list every item. + for(var/i in taking) + if(remove_from_storage(i, destination)) + inserted |= i + else + for(var/i in taking) + remove_from_storage(i, destination) + return TRUE diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm index f1348934796..2cce921dc4d 100644 --- a/code/datums/traits/good.dm +++ b/code/datums/traits/good.dm @@ -1168,3 +1168,69 @@ GLOBAL_LIST_INIT(bone_dancer_recipes, list( QDEL_NULL(gather) H.RemoveAbility(moveto) QDEL_NULL(moveto) + +/datum/quirk/tribespeak + name = "Tribal Language Comprehension" + desc = "You're somehow capable of understanding and speaking the common tribal languages in the area." + value = 1 + gain_text = span_notice("You remember the old ways of your tribe...") + lose_text = span_notice("You've forgotten the ways of your ancestors...") + + +/datum/quirk/tribespeak/add() + var/mob/living/carbon/human/H = quirk_holder + H.grant_language(/datum/language/tribal) + +/datum/quirk/tribespeak/remove() + var/mob/living/carbon/human/H = quirk_holder + if(!QDELETED(H)) + H.remove_language(/datum/language/tribal) + +/datum/quirk/spanishspeak + name = "Spanish Language Comprehension" + desc = "You're somehow capable of understanding and speaking the common language of the Mexican cartels in the south." + value = 1 + gain_text = span_notice("You remember the old tongue of the Mexican cartels.") + lose_text = span_notice("You've forgotten the tongue of the Mexican cartels.") + + +/datum/quirk/spanishspeak/add() + var/mob/living/carbon/human/H = quirk_holder + H.grant_language(/datum/language/spanish) + +/datum/quirk/spanishspeak/remove() + var/mob/living/carbon/human/H = quirk_holder + if(!QDELETED(H)) + H.remove_language(/datum/language/spanish) + +/datum/quirk/chinesespeak + name = "Chinese Language Comprehension" + desc = "You are somehow capable of understanding and speaking the old Chinese language." + value = 1 + gain_text = span_notice("You remember the old language of China.") + lose_text = span_notice("You forget the old language of China.") + +/datum/quirk/chinesespeak/add() + var/mob/living/carbon/human/H = quirk_holder + H.grant_language(/datum/language/chinese) + +/datum/quirk/chinesespeak/remove() + var/mob/living/carbon/human/H = quirk_holder + if(!QDELETED(H)) + H.remove_language(/datum/language/chinese) + +/datum/quirk/japanesespeak + name = "Japanese Language Comprehension" + desc = "You are somehow capable of understanding and speaking the Japanese language." + value = 1 + gain_text = span_notice("You remember how to speak like a cartoon character.") + lose_text = span_notice("You forget how to sound like a weeaboo.") + +/datum/quirk/japanesespeak/add() + var/mob/living/carbon/human/H = quirk_holder + H.grant_language(/datum/language/japanese) + +/datum/quirk/japanesespeak/remove() + var/mob/living/carbon/human/H = quirk_holder + if(!QDELETED(H)) + H.remove_language(/datum/language/japanese) diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index dfa50c4effd..ca92797e040 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -65,7 +65,9 @@ GLOBAL_LIST_EMPTY(family_heirlooms) if(quirk_holder.mind.assigned_role in list("NCR Captain", "NCR Lieutenant", "NCR Veteran Ranger", "NCR Brahmin Baron", "NCR Ranger", "NCR Heavy Trooper", "NCR Sergeant", "NCR Corporal", "NCR Conscript ", "NCR Trooper", "NCR Military Police", "NCR Rear Echelon")) heirloom_type = pick(/obj/item/melee/onehanded/knife/bayonet, /obj/item/lighter, /obj/item/toy/cards/deck, /obj/item/card/id/rusted) if(quirk_holder.mind.assigned_role in list("Legion Centurion", "Legion Orator", "Legion Veteran Decanus", "Legion Prime Decanus", "Legion Recruit Decanus", "Legion Vexillarius", "Legion Explorer", "Veteran Legionnaire", "Prime Legionnaire", "Recruit Legionnaire", "Legion Slavemaster")) - heirloom_type = pick(/obj/item/melee/onehanded/machete, /obj/item/melee/onehanded/club/warclub, /obj/item/card/id/rusted/rustedmedallion, /obj/item/clothing/accessory/talisman,/obj/item/clothing/accessory/skullcodpiece/fake, /obj/item/warpaint_bowl) + heirloom_type = pick(/obj/item/melee/onehanded/machete, /obj/item/melee/onehanded/club/warclub, /obj/item/card/id/rusted/rustedmedallion, /obj/item/clothing/accessory/talisman, /obj/item/clothing/accessory/skullcodpiece/fake, /obj/item/warpaint_bowl) + if(quirk_holder.mind.assigned_role in list("Legion Slave", "Legion Auxilia")) + heirloom_type = pick(/obj/item/clothing/accessory/talisman, /obj/item/pen/charcoal, /obj/item/healthanalyzer/tribal, /obj/item/clothing/neck/stethoscope) if(!heirloom_type) heirloom_type = pick( /obj/item/toy/cards/deck, diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index ff9ef2725c8..2d1e91fedb6 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -287,23 +287,6 @@ var/mob/living/carbon/human/H = quirk_holder H.grant_language(/datum/language/common) -/datum/quirk/tribespeak - name = "Tribal Language Comprehension" - desc = "You're somehow capable of understanding and speaking the common tribal languages in the area." - value = 0 - gain_text = span_notice("You remember the old ways of your tribe...") - lose_text = span_notice("You've forgotten the ways of your ancestors...") - - -/datum/quirk/tribespeak/add() - var/mob/living/carbon/human/H = quirk_holder - H.grant_language(/datum/language/tribal) - -/datum/quirk/tribespeak/remove() - var/mob/living/carbon/human/H = quirk_holder - if(!QDELETED(H)) - H.remove_language(/datum/language/tribal) - /* /datum/quirk/cat name = "A cat!" @@ -380,8 +363,6 @@ /datum/quirk/journalist/on_spawn() var/mob/living/carbon/human/human_holder = quirk_holder var/obj/item/folder/folder = new(get_turf(human_holder)) - folder.persistenceID = "personal_[lowertext(human_holder.last_mind?.key)]" // this is a persistent album, the ID is tied to the account's key to avoid tampering - folder.PersistenceLoad() folder.name = "[human_holder.real_name]'s journal" if(!human_holder.equip_to_slot_if_possible(folder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) diff --git a/code/game/atoms_movement.dm b/code/game/atoms_movement.dm index 2a4d09b1598..3948746a07b 100644 --- a/code/game/atoms_movement.dm +++ b/code/game/atoms_movement.dm @@ -16,7 +16,7 @@ if(set_dir_on_move) setDir(direction) - var/is_multi_tile_object = bound_width > 32 || bound_height > 32 + var/is_multi_tile_object = bound_width > 64 || bound_height > 64 var/list/old_locs if(is_multi_tile_object && isturf(loc)) diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 51d7c818763..88300ada155 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -235,6 +235,27 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) accesses += "[replacetext(get_bos_access_desc(A), " ", " ")] " else accesses += "[replacetext(get_bos_access_desc(A), " ", " ")] " + else if(istype(src, /obj/machinery/computer/card/town)) + accesses += "
Town of eastwood:
" + for(var/A in get_all_town_access()) + if(A in inserted_modify_id.access) + accesses += "[replacetext(get_town_access_desc(A), " ", " ")] " + else + accesses += "[replacetext(get_town_access_desc(A), " ", " ")] " + else if(istype(src, /obj/machinery/computer/card/town/sheriff)) + accesses += "
Town of eastwood police:
" + for(var/A in get_all_sheriff_access()) + if(A in inserted_modify_id.access) + accesses += "[replacetext(get_sheriff_access_desc(A), " ", " ")] " + else + accesses += "[replacetext(get_sheriff_access_desc(A), " ", " ")] " + else if(istype(src, /obj/machinery/computer/card/town/locust)) + accesses += "
Town of Loucust Point:
" + for(var/A in get_all_locust_access()) + if(A in inserted_modify_id.access) + accesses += "[replacetext(get_locust_access_desc(A), " ", " ")] " + else + accesses += "[replacetext(get_locust_access_desc(A), " ", " ")] " else accesses += {"
Access
@@ -360,6 +381,12 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) access_types = get_all_enclave_access() else if(istype(src, /obj/machinery/computer/card/bos)) access_types = get_all_bos_access() + else if(istype(src, /obj/machinery/computer/card/town)) + access_types = get_all_town_access() + else if(istype(src, /obj/machinery/computer/card/town/sheriff)) + access_types = get_all_sheriff_access() + else if(istype(src, /obj/machinery/computer/card/town/locust)) + access_types = get_all_locust_access() else access_types = get_all_accesses() @@ -548,3 +575,56 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) "Head Scribe", "Head Knight", ) + +/obj/machinery/computer/card/town + name = "\improper Eastwood mayoral identification console" + circuit = /obj/item/circuitboard/computer/card/town + job_list = list( + "Secretary", + "Farmer", + "Prospector", + "Doctor", + "Banker", + "Quartermaster", + "Trade Worker", + "Barkeep", + "Citizen", + "Radio Host", + ) + job_req = list( + "Mayor", + "Secretary", + "Sheriff", + ) + +/obj/machinery/computer/card/town/sheriff + name = "\improper Eastwood police identification console" + circuit = /obj/item/circuitboard/computer/card/town/sheriff + job_list = list( + "Detective", + "Deputy", + ) + job_req = list( + "Mayor", + "Secretary", + "Sheriff", + ) + +/obj/machinery/computer/card/town/locust + name = "\improper Locust point town mayoral identification console" + circuit = /obj/item/circuitboard/computer/card/town/locust + job_list = list( + "Locust Point Police Officer", + "Servant workers of town", + "Casablanca Barkeep", + "Locust Point Citizen", + "Pirate Radio Host", + "Locust Point Priest", + "Gas station Mechanics", + "Dealmaker Shopclerc", + "Airpoint Transport Pilot", + ) + job_req = list( + "Dockmaster of Locust Point", + "Port Councelor", + ) diff --git a/code/game/mecha/combat/combatvehicle.dm b/code/game/mecha/combat/combatvehicle.dm new file mode 100644 index 00000000000..0a64460e6e6 --- /dev/null +++ b/code/game/mecha/combat/combatvehicle.dm @@ -0,0 +1,561 @@ +// VERTIBIRD + +/obj/mecha/combat/combatvehicle/vertibird + name = "\improper Combat Vertibird" + desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward combat." + icon = 'icons/mecha/vb-vertibird.dmi' + icon_state = "vb" + pixel_x = -138 + pixel_y = -138 + layer = ABOVE_MOB_LAYER + can_be_locked = TRUE + dna_lock + step_in = 0.8 + dir_in = 2 + normal_step_energy_drain = 0.75 + step_energy_drain = 0.75 + max_integrity = 150 + deflect_chance = 30 + armor = ARMOR_VALUE_LIGHT + max_temperature = 25000 + infra_luminosity = 1 + wreckage = /obj/structure/mecha_wreckage/vertibird + add_req_access = 1 + internal_damage_threshold = 25 + force = 15 + max_equip = 4 + opacity = 0 + canstrafe = TRUE + movement_type = FLYING + stepsound = 'sound/f13machines/vertibird_loop.ogg' + turnsound = 'sound/f13machines/vertibird_loop.ogg' + + + + +/obj/structure/mecha_wreckage/vertibird + name = "\improper Vertibird Wreck" + desc = "Mayday, Mayday, Vertibird going down... IN STYLE." + icon = 'icons/mecha/vb-vertibird.dmi' + icon_state = "vb-broken" + pixel_x = -138 + pixel_y = -138 + +/obj/mecha/combat/combatvehicle/vertibird/GrantActions(mob/living/user, human_occupant = 0) + internals_action.Grant(user, src) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + strafing_action.Grant(user, src) + zoom_action.Grant(user, src) + eject_action.Grant(user, src) + landing_action.Grant(user, src) + +/obj/mecha/combat/combatvehicle/vertibird/RemoveActions(mob/living/user, human_occupant = 0) + internals_action.Remove(user) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + strafing_action.Remove(user) + zoom_action.Remove(user) + eject_action.Remove(user) + landing_action.Remove(user) + +/obj/mecha/combat/combatvehicle/vertibird/obj_destruction() + for(var/mob/M in src) + to_chat(M, span_brass("The vertibird is going to crash!")) + M.dust() + playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) + src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) + addtimer(CALLBACK(src,.proc/go_critical),breach_time) + +/obj/mecha/combat/combatvehicle/vertibird/proc/go_critical() + explosion(get_turf(loc)) + Destroy(src) + +/obj/mecha/combat/combatvehicle/vertibird/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper + ME.attach(src) + max_ammo() + +///NCR VERTIBIRD + +/obj/mecha/combat/combatvehicle/vertibird/ncr + name = "\improper NCR Vertibird" + desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward Troop transport, and his painted in the colors of the NCR." + icon = 'icons/mecha/vb-vertibird-ncr.dmi' + icon_state = "vb" + pixel_x = -138 + pixel_y = -138 + layer = ABOVE_MOB_LAYER + can_be_locked = TRUE + dna_lock + step_in = 0.8 + dir_in = 2 + normal_step_energy_drain = 0.7 + step_energy_drain = 0.7 + max_integrity = 200 + deflect_chance = 30 + armor = ARMOR_VALUE_LIGHT + max_temperature = 25000 + infra_luminosity = 1 + wreckage = /obj/structure/mecha_wreckage/vertibird + add_req_access = 1 + internal_damage_threshold = 25 + force = 15 + max_equip = 4 + opacity = 0 + canstrafe = TRUE + movement_type = FLYING + stepsound = 'sound/f13machines/vertibird_loop.ogg' + turnsound = 'sound/f13machines/vertibird_loop.ogg' + + + + +/obj/mecha/combat/combatvehicle/vertibird/ncr/GrantActions(mob/living/user, human_occupant = 0) + internals_action.Grant(user, src) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + strafing_action.Grant(user, src) + zoom_action.Grant(user, src) + eject_action.Grant(user, src) + smoke_action.Grant(user, src) + landing_action.Grant(user, src) + +/obj/mecha/combat/combatvehicle/vertibird/ncr/RemoveActions(mob/living/user, human_occupant = 0) + internals_action.Remove(user) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + strafing_action.Remove(user) + zoom_action.Remove(user) + eject_action.Remove(user) + smoke_action.Remove(user) + landing_action.Remove(user) + +/obj/mecha/combat/combatvehicle/vertibird/ncr/obj_destruction() + for(var/mob/M in src) + to_chat(M, span_brass("The vertibird is going to crash!")) + M.dust() + playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) + src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) + addtimer(CALLBACK(src,.proc/go_critical),breach_time) + +/obj/mecha/combat/combatvehicle/vertibird/ncr/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper + ME.attach(src) + max_ammo() + +///VERTIBIRD ENCLAVE + +/obj/mecha/combat/combatvehicle/vertibird/enclave + name = "\improper Enclave Naval Vertibird" + desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward combat, and be stored in a ship. Thats peak Enclave tech." + icon = 'icons/mecha/vb-vertibird-enclave.dmi' + icon_state = "vb" + pixel_x = -138 + pixel_y = -138 + layer = ABOVE_MOB_LAYER + can_be_locked = TRUE + dna_lock + step_in = 0.6 + dir_in = 2 + normal_step_energy_drain = 0.75 + step_energy_drain = 0.75 + max_integrity = 150 + deflect_chance = 30 + armor = ARMOR_VALUE_LIGHT + max_temperature = 25000 + infra_luminosity = 1 + wreckage = /obj/structure/mecha_wreckage/vertibird + add_req_access = 1 + internal_damage_threshold = 25 + force = 15 + max_equip = 4 + opacity = 0 + canstrafe = TRUE + movement_type = FLYING + stepsound = 'sound/f13machines/vertibird_loop.ogg' + turnsound = 'sound/f13machines/vertibird_loop.ogg' + +/obj/mecha/combat/combatvehicle/vertibird/enclave/GrantActions(mob/living/user, human_occupant = 0) + internals_action.Grant(user, src) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + strafing_action.Grant(user, src) + zoom_action.Grant(user, src) + eject_action.Grant(user, src) + landing_action.Grant(user, src) + +/obj/mecha/combat/combatvehicle/vertibird/enclave/RemoveActions(mob/living/user, human_occupant = 0) + internals_action.Remove(user) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + strafing_action.Remove(user) + zoom_action.Remove(user) + eject_action.Remove(user) + landing_action.Remove(user) + +/obj/mecha/combat/combatvehicle/vertibird/enclave/obj_destruction() + for(var/mob/M in src) + to_chat(M, span_brass("The vertibird is going to crash!")) + M.dust() + playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) + src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) + addtimer(CALLBACK(src,.proc/go_critical),breach_time) + +/obj/mecha/combat/combatvehicle/vertibird/enclave/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + max_ammo() + +/// BOS Vertibird + +/obj/mecha/combat/combatvehicle/vertibird/brotherhood + name = "\improper Brotherhood Vertibird" + desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward combat, and marked with brotherhood markings." + icon = 'icons/mecha/vb-vertibird-bos.dmi' + icon_state = "vb" + pixel_x = -138 + pixel_y = -138 + layer = ABOVE_MOB_LAYER + can_be_locked = TRUE + dna_lock + step_in = 0.6 + dir_in = 2 + normal_step_energy_drain = 0.75 + step_energy_drain = 0.75 + max_integrity = 150 + deflect_chance = 30 + armor = ARMOR_VALUE_LIGHT + max_temperature = 25000 + infra_luminosity = 1 + wreckage = /obj/structure/mecha_wreckage/vertibird + add_req_access = 1 + internal_damage_threshold = 25 + force = 15 + max_equip = 4 + opacity = 0 + canstrafe = TRUE + movement_type = FLYING + stepsound = 'sound/f13machines/vertibird_loop.ogg' + turnsound = 'sound/f13machines/vertibird_loop.ogg' + +/obj/mecha/combat/combatvehicle/vertibird/brotherhood/GrantActions(mob/living/user, human_occupant = 0) + internals_action.Grant(user, src) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + strafing_action.Grant(user, src) + zoom_action.Grant(user, src) + eject_action.Grant(user, src) + landing_action.Grant(user, src) + +/obj/mecha/combat/combatvehicle/vertibird/brotherhood/RemoveActions(mob/living/user, human_occupant = 0) + internals_action.Remove(user) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + strafing_action.Remove(user) + zoom_action.Remove(user) + eject_action.Remove(user) + landing_action.Remove(user) + +/obj/mecha/combat/combatvehicle/vertibird/brotherhood/obj_destruction() + for(var/mob/M in src) + to_chat(M, span_brass("The vertibird is going to crash!")) + M.dust() + playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) + src.visible_message(span_userdanger("The reactor has gone critical, it's going to blow!")) + addtimer(CALLBACK(src,.proc/go_critical),breach_time) + +/obj/mecha/combat/combatvehicle/vertibird/brotherhood/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + max_ammo() + +///Legion balloon + +/obj/mecha/combat/combatvehicle/vertibird/balloon + name = "\improper Legion Recon balloon" + desc = "The legion maybe doesn't have fancy birds, but will still by the will of Caesar, get wings... And hot air." + icon = 'icons/mecha/legionballoon.dmi' + icon_state = "legionballoon" + pixel_x = -138 + pixel_y = 0 + layer = ABOVE_MOB_LAYER + can_be_locked = TRUE + dna_lock + step_in = 4 + dir_in = 2 + step_energy_drain = 0.05 + max_integrity = 100 + deflect_chance = 0 + armor = ARMOR_VALUE_SALVAGE + max_temperature = 25000 + infra_luminosity = 1 + wreckage = /obj/structure/mecha_wreckage/vertibird + add_req_access = 1 + internal_damage_threshold = 25 + force = 15 + max_equip = 4 + opacity = 0 + canstrafe = TRUE + movement_type = FLYING + stepsound = 'sound/f13ambience/ambigen_15.ogg' + turnsound = 'sound/f13ambience/ambigen_15.ogg' + +/obj/mecha/combat/combatvehicle/vertibird/balloon/GrantActions(mob/living/user, human_occupant = 0) + internals_action.Grant(user, src) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + strafing_action.Grant(user, src) + zoom_action.Grant(user, src) + eject_action.Grant(user, src) + smoke_action.Grant(user, src) + landing_action.Grant(user, src) + +/obj/mecha/combat/combatvehicle/vertibird/balloon/RemoveActions(mob/living/user, human_occupant = 0) + internals_action.Remove(user) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + strafing_action.Remove(user) + zoom_action.Remove(user) + eject_action.Remove(user) + smoke_action.Remove(user) + landing_action.Remove(user) + +/obj/mecha/combat/combatvehicle/vertibird/balloon/obj_destruction() + for(var/mob/M in src) + to_chat(M, " The balloon is going to crash!") + M.dust() + playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) + src.visible_message("The balloon's burner is about to blow!") + addtimer(CALLBACK(src,.proc/go_critical),breach_time) + +/obj/mecha/combat/combatvehicle/vertibird/balloon/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + +//pickuptruck bos AND Kiana + +/obj/mecha/combat/combatvehicle/pickuptruck/bos/armed + name = "\improper BoS pickup truck with gunner" + desc = "A old vehicle, running on fuel. Its a modified brotherhood truck, with the addition of a laser rifle at the back, manned by Paladin Kiana Davberg. Consumes more fuel and is more fragile." + icon = 'icons/mecha/pickuptruck-gunbos.dmi' + icon_state = "pickuptruck" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1.4 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.5 + max_temperature = 20000 + max_integrity = 300 + armor = ARMOR_VALUE_MEDIUM + max_equip = 4 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/combat/combatvehicle/pickuptruck/bos/armed/go_out() + ..() + update_icon() + +/obj/mecha/combat/combatvehicle/pickuptruck/bos/armed/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/combat/combatvehicle/pickuptruck/bos/armed/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/combat/combatvehicle/pickuptruck/bos/armed/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/combat/combatvehicle/pickuptruck/bos/armed/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + max_ammo() + +//Buggy Ranger AND RICO + +/obj/mecha/combat/combatvehicle/buggy/rangerarmed + name = "\improper Vet Ranger Buggy with gunner" + desc = "A light vehicle, not very powerful or solid, running on fuel. This one has been recolored by the Rangers... And Ranger Rico ''Gunner'' Davberger is gonna shoot with his shotgun." + icon = 'icons/mecha/buggyrangergun.dmi' + icon_state = "rangergun" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.4 + max_temperature = 20000 + max_integrity = 200 + armor = ARMOR_VALUE_LIGHT + max_equip = 3 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/combat/combatvehicle/buggy/rangerarmed/go_out() + ..() + update_icon() + +/obj/mecha/combat/combatvehicle/buggy/rangerarmed/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/combat/combatvehicle/buggy/rangerarmed/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + smoke_action.Grant(user, src) + +/obj/mecha/combat/combatvehicle/buggy/rangerarmed/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + smoke_action.Remove(user) + +/obj/mecha/combat/combatvehicle/buggy/rangerarmed/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot + ME.attach(src) + max_ammo() + + +//Buggy Legion AND MESALLA + +/obj/mecha/combat/combatvehicle/buggy/legionarmed + name = "\improper Legion Chariot with gunner" + desc = "A light vehicle, not very powerful or solid, running on fuel... Okay, that's a lie. It's actually run on power generated by the horse...The fuel is here to make sure that some component of the buggy half works. This one has been recolored by the Legion... And Prime Decanus Messala ''Gunner'' Davius is gonna shoot with his shotgun." + icon = 'icons/mecha/buggy-legiongun.dmi' + icon_state = "legiongun" + pixel_x = -18 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1.2 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.2 + max_temperature = 20000 + max_integrity = 250 + armor = ARMOR_VALUE_MEDIUM + max_equip = 3 + stepsound = 'sound/effects/footstep/gallop2.ogg' + turnsound = 'sound/effects/footstep/gallop1.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/combat/combatvehicle/buggy/legionarmed/go_out() + ..() + update_icon() + +/obj/mecha/combat/combatvehicle/buggy/legionarmed/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/combat/combatvehicle/buggy/legionarmed/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + smoke_action.Grant(user, src) + +/obj/mecha/combat/combatvehicle/buggy/legionarmed/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + smoke_action.Remove(user) + +/obj/mecha/combat/combatvehicle/buggy/legionarmed/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot + ME.attach(src) + max_ammo() diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm index 0a5d20136ed..7552e1cba98 100644 --- a/code/game/mecha/combat/phazon.dm +++ b/code/game/mecha/combat/phazon.dm @@ -22,1710 +22,7 @@ switch_damtype_action.Grant(user, src) phasing_action.Grant(user, src) - /obj/mecha/combat/phazon/RemoveActions(mob/living/user, human_occupant = 0) ..() switch_damtype_action.Remove(user) phasing_action.Remove(user) - -//////////// VERTIBIRD ////////////// - -/obj/mecha/combat/phazon/vertibird - name = "\improper Vertibird" - desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward combat." - icon = 'icons/mecha/vb-vertibird.dmi' - icon_state = "vb" - pixel_x = -138 - pixel_y = -138 - layer = ABOVE_MOB_LAYER - can_be_locked = TRUE - dna_lock - step_in = 0.6 - dir_in = 2 - normal_step_energy_drain = 0.75 - step_energy_drain = 0.75 - max_integrity = 150 - deflect_chance = 30 - armor = ARMOR_VALUE_LIGHT - max_temperature = 25000 - infra_luminosity = 1 - wreckage = /obj/structure/mecha_wreckage/vertibird - add_req_access = 1 - internal_damage_threshold = 25 - force = 15 - max_equip = 6 - opacity = 0 - canstrafe = TRUE - movement_type = FLYING - stepsound = 'sound/f13machines/vertibird_loop.ogg' - turnsound = 'sound/f13machines/vertibird_loop.ogg' - -/obj/structure/mecha_wreckage/vertibird - name = "\improper Vertibird Wreck" - desc = "Mayday, Mayday, Vertibird going down... IN STYLE." - icon = 'icons/mecha/vb-vertibird.dmi' - icon_state = "vb-broken" - pixel_x = -138 - pixel_y = -138 - -/obj/mecha/combat/phazon/vertibird/GrantActions(mob/living/user, human_occupant = 0) - internals_action.Grant(user, src) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - strafing_action.Grant(user, src) - zoom_action.Grant(user, src) - eject_action.Grant(user, src) - landing_action.Grant(user, src) - -/obj/mecha/combat/phazon/vertibird/RemoveActions(mob/living/user, human_occupant = 0) - internals_action.Remove(user) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - strafing_action.Remove(user) - zoom_action.Remove(user) - eject_action.Remove(user) - landing_action.Remove(user) - -/obj/mecha/combat/phazon/vertibird/obj_destruction() - for(var/mob/M in src) - to_chat(M, span_brass("The vertibird is going to crash!")) - M.dust() - playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) - src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) - addtimer(CALLBACK(src,.proc/go_critical),breach_time) - -/obj/mecha/combat/phazon/vertibird/proc/go_critical() - explosion(get_turf(loc)) - Destroy(src) - -/obj/mecha/combat/phazon/vertibird/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper - ME.attach(src) - max_ammo() - -///NCR VERTIBIRD - -/obj/mecha/combat/phazon/vertibird/ncr - name = "\improper NCR Vertibird" - desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward Troop transport, and his painted in the colors of the NCR." - icon = 'icons/mecha/vb-vertibird-ncr.dmi' - icon_state = "vb" - pixel_x = -138 - pixel_y = -138 - layer = ABOVE_MOB_LAYER - can_be_locked = TRUE - dna_lock - step_in = 0.8 - dir_in = 2 - normal_step_energy_drain = 0.7 - step_energy_drain = 0.7 - max_integrity = 200 - deflect_chance = 30 - armor = ARMOR_VALUE_LIGHT - max_temperature = 25000 - infra_luminosity = 1 - wreckage = /obj/structure/mecha_wreckage/vertibird - add_req_access = 1 - internal_damage_threshold = 25 - force = 15 - max_equip = 8 - opacity = 0 - canstrafe = TRUE - movement_type = FLYING - stepsound = 'sound/f13machines/vertibird_loop.ogg' - turnsound = 'sound/f13machines/vertibird_loop.ogg' - -/obj/mecha/combat/phazon/vertibird/ncr/GrantActions(mob/living/user, human_occupant = 0) - internals_action.Grant(user, src) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - strafing_action.Grant(user, src) - zoom_action.Grant(user, src) - eject_action.Grant(user, src) - smoke_action.Grant(user, src) - landing_action.Grant(user, src) - -/obj/mecha/combat/phazon/vertibird/ncr/RemoveActions(mob/living/user, human_occupant = 0) - internals_action.Remove(user) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - strafing_action.Remove(user) - zoom_action.Remove(user) - eject_action.Remove(user) - smoke_action.Remove(user) - landing_action.Remove(user) - -/obj/mecha/combat/phazon/vertibird/ncr/obj_destruction() - for(var/mob/M in src) - to_chat(M, span_brass("The vertibird is going to crash!")) - M.dust() - playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) - src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) - addtimer(CALLBACK(src,.proc/go_critical),breach_time) - -/obj/mecha/combat/phazon/vertibird/ncr/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper - ME.attach(src) - max_ammo() - -///VERTIBIRD ENCLAVE - -/obj/mecha/combat/phazon/vertibird/enclave - name = "\improper Enclave Naval Vertibird" - desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward combat, and be stored in a ship. Thats peak Enclave tech." - icon = 'icons/mecha/vb-vertibird-enclave.dmi' - icon_state = "vb" - pixel_x = -138 - pixel_y = -138 - layer = ABOVE_MOB_LAYER - can_be_locked = TRUE - dna_lock - step_in = 0.6 - dir_in = 2 - normal_step_energy_drain = 0.75 - step_energy_drain = 0.75 - max_integrity = 150 - deflect_chance = 30 - armor = ARMOR_VALUE_LIGHT - max_temperature = 25000 - infra_luminosity = 1 - wreckage = /obj/structure/mecha_wreckage/vertibird - add_req_access = 1 - internal_damage_threshold = 25 - force = 15 - max_equip = 6 - opacity = 0 - canstrafe = TRUE - movement_type = FLYING - stepsound = 'sound/f13machines/vertibird_loop.ogg' - turnsound = 'sound/f13machines/vertibird_loop.ogg' - -/obj/mecha/combat/phazon/vertibird/enclave/GrantActions(mob/living/user, human_occupant = 0) - internals_action.Grant(user, src) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - strafing_action.Grant(user, src) - zoom_action.Grant(user, src) - eject_action.Grant(user, src) - landing_action.Grant(user, src) - -/obj/mecha/combat/phazon/vertibird/enclave/RemoveActions(mob/living/user, human_occupant = 0) - internals_action.Remove(user) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - strafing_action.Remove(user) - zoom_action.Remove(user) - eject_action.Remove(user) - landing_action.Remove(user) - -/obj/mecha/combat/phazon/vertibird/enclave/obj_destruction() - for(var/mob/M in src) - to_chat(M, span_brass("The vertibird is going to crash!")) - M.dust() - playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) - src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) - addtimer(CALLBACK(src,.proc/go_critical),breach_time) - -/obj/mecha/combat/phazon/vertibird/enclave/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - max_ammo() - -/// BOS Vertibird - -/obj/mecha/combat/phazon/vertibird/brotherhood - name = "\improper Brotherhood Vertibird" - desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward combat, and marked with brotherhood markings." - icon = 'icons/mecha/vb-vertibird-bos.dmi' - icon_state = "vb" - pixel_x = -138 - pixel_y = -138 - layer = ABOVE_MOB_LAYER - can_be_locked = TRUE - dna_lock - step_in = 0.6 - dir_in = 2 - normal_step_energy_drain = 0.75 - step_energy_drain = 0.75 - max_integrity = 150 - deflect_chance = 30 - armor = ARMOR_VALUE_LIGHT - max_temperature = 25000 - infra_luminosity = 1 - wreckage = /obj/structure/mecha_wreckage/vertibird - add_req_access = 1 - internal_damage_threshold = 25 - force = 15 - max_equip = 6 - opacity = 0 - canstrafe = TRUE - movement_type = FLYING - stepsound = 'sound/f13machines/vertibird_loop.ogg' - turnsound = 'sound/f13machines/vertibird_loop.ogg' - -/obj/mecha/combat/phazon/vertibird/brotherhood/GrantActions(mob/living/user, human_occupant = 0) - internals_action.Grant(user, src) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - strafing_action.Grant(user, src) - zoom_action.Grant(user, src) - eject_action.Grant(user, src) - landing_action.Grant(user, src) - -/obj/mecha/combat/phazon/vertibird/brotherhood/RemoveActions(mob/living/user, human_occupant = 0) - internals_action.Remove(user) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - strafing_action.Remove(user) - zoom_action.Remove(user) - eject_action.Remove(user) - landing_action.Remove(user) - -/obj/mecha/combat/phazon/vertibird/brotherhood/obj_destruction() - for(var/mob/M in src) - to_chat(M, span_brass("The vertibird is going to crash!")) - M.dust() - playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) - src.visible_message(span_userdanger("The reactor has gone critical, it's going to blow!")) - addtimer(CALLBACK(src,.proc/go_critical),breach_time) - -/obj/mecha/combat/phazon/vertibird/brotherhood/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - max_ammo() - -///Legion balloon - -/obj/mecha/combat/phazon/vertibird/balloon - name = "\improper Legion Recon balloon" - desc = "The legion maybe doesn't have fancy birds, but will still by the will of Caesar, get wings... And hot air." - icon = 'icons/mecha/legionballoon.dmi' - icon_state = "legionballoon" - pixel_x = -138 - pixel_y = 0 - layer = ABOVE_MOB_LAYER - can_be_locked = TRUE - dna_lock - step_in = 4 - dir_in = 2 - step_energy_drain = 0.1 - normal_step_energy_drain = 0.1 - max_integrity = 100 - deflect_chance = 0 - armor = ARMOR_VALUE_SALVAGE - max_temperature = 25000 - infra_luminosity = 1 - wreckage = /obj/structure/mecha_wreckage/vertibird - add_req_access = 1 - internal_damage_threshold = 25 - force = 15 - max_equip = 4 - opacity = 0 - canstrafe = TRUE - movement_type = FLYING - stepsound = 'sound/f13ambience/ambigen_15.ogg' - turnsound = 'sound/f13ambience/ambigen_15.ogg' - -/obj/mecha/combat/phazon/vertibird/balloon/GrantActions(mob/living/user, human_occupant = 0) - internals_action.Grant(user, src) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - strafing_action.Grant(user, src) - zoom_action.Grant(user, src) - eject_action.Grant(user, src) - smoke_action.Grant(user, src) - landing_action.Grant(user, src) - -/obj/mecha/combat/phazon/vertibird/balloon/RemoveActions(mob/living/user, human_occupant = 0) - internals_action.Remove(user) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - strafing_action.Remove(user) - zoom_action.Remove(user) - eject_action.Remove(user) - smoke_action.Remove(user) - landing_action.Remove(user) - -/obj/mecha/combat/phazon/vertibird/balloon/obj_destruction() - for(var/mob/M in src) - to_chat(M, " The balloon is going to crash!") - M.dust() - playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) - src.visible_message("The balloon's burner is about to blow!") - addtimer(CALLBACK(src,.proc/go_critical),breach_time) - -/obj/mecha/combat/phazon/vertibird/balloon/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - -//////////// NCR TRUCK ////////////// - -/obj/mecha/combat/phazon/ncrtruck - name = "\improper NCR Truck" - desc = "A truck running on fuel. Nice eh? Still a wreck, though." - icon = 'icons/mecha/ncrtruck.dmi' - icon_state = "ncrtruck" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 300 - armor = ARMOR_VALUE_HEAVY - max_equip = 8 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/ncrtruck - var/list/cargo = new - var/cargo_capacity = 30 - var/hides = 0 - -/obj/structure/mecha_wreckage/ncrtruck - name = "\improper NCR Truck wreckage" - desc = "It's a truck! BROKEN TRUCK." - icon = 'icons/fallout/vehicles/medium_vehicles.dmi' - icon_state = "derelict" - -/obj/mecha/combat/phazon/ncrtruck/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/ncrtruck/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/ncrtruck/Destroy() - for(var/atom/movable/A in cargo) - A.forceMove(drop_location()) - step_rand(A) - cargo.Cut() - return ..() - -/obj/mecha/combat/phazon/ncrtruck/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/ncrtruck/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/ncrtruck/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//////////// NCR TRUCK MP ////////////// - -/obj/mecha/combat/phazon/ncrtruck/mp - name = "\improper NCR MP Truck" - desc = "A truck running on fuel. Nice eh? Still a wreck, though. This truck has been given to the NCR MPs, and has been modified to go a bit faster. But, it has less seats and is a bit less solid." - icon = 'icons/mecha/ncrtruck-mp.dmi' - icon_state = "ncrtruck" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 300 - armor = ARMOR_VALUE_HEAVY - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/ncrtruck - -/obj/mecha/combat/phazon/ncrtruck/mp/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/ncrtruck/mp/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/ncrtruck/mp/Destroy() - for(var/atom/movable/A in cargo) - A.forceMove(drop_location()) - step_rand(A) - cargo.Cut() - return ..() - -/obj/mecha/combat/phazon/ncrtruck/mp/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - sirens_action.Grant(user, src) - -/obj/mecha/combat/phazon/ncrtruck/mp/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - sirens_action.Remove(user) - -/obj/mecha/combat/phazon/ncrtruck/mp/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggy - -/obj/mecha/combat/phazon/buggy - name = "\improper Buggy" - desc = "A light vehicle, not very powerful or solid, running on fuel." - icon = 'icons/mecha/buggy.dmi' - icon_state = "buggygreen" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.8 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/structure/mecha_wreckage/buggy - name = "\improper Buggy wreckage" - desc = "Its a buggy! Won't bug you anymore." - icon_state = "buggy-broken" - -/obj/mecha/combat/phazon/buggy/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggydune - -/obj/mecha/combat/phazon/buggy/dune - name = "\improper Buggy" - desc = "A light vehicle, not very powerful or solid, running on fuel." - icon = 'icons/mecha/buggy.dmi' - icon_state = "buggydune" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.8 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/dune/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/dune/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/dune/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/dune/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/dune/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggyred - -/obj/mecha/combat/phazon/buggy/red - name = "\improper Buggy" - desc = "A light vehicle, not very powerful or solid, running on fuel." - icon = 'icons/mecha/buggy.dmi' - icon_state = "buggyred" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.8 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/red/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/red/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/red/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/red/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/red/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggyblue - -/obj/mecha/combat/phazon/buggy/blue - name = "\improper Minutemen Buggy" - desc = "A light vehicle, not very powerful or solid, running on fuel." - icon = 'icons/mecha/buggy.dmi' - icon_state = "buggyblue" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.8 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/blue/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/blue/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/blue/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/blue/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/blue/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggyflame - -/obj/mecha/combat/phazon/buggy/flamme - name = "\improper Buggy" - desc = "A light vehicle, not very powerful or solid, running on fuel." - icon = 'icons/mecha/buggy.dmi' - icon_state = "buggyflame" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.8 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/flamme/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/flamme/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/flamme/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/flamme/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/flamme/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggy Ranger - -/obj/mecha/combat/phazon/buggy/ranger - name = "\improper Ranger Buggy" - desc = "A light vehicle, not very powerful or solid, running on fuel. This one has been recolored by the Rangers." - icon = 'icons/mecha/hanlonbuggy.dmi' - icon_state = "hanlonbuggy" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.8 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/ranger/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/ranger/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/ranger/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/ranger/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/ranger/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggy Ranger AND RICO - -/obj/mecha/combat/phazon/buggy/rangerarmed - name = "\improper Vet Ranger Buggy with gunner" - desc = "A light vehicle, not very powerful or solid, running on fuel. This one has been recolored by the Rangers... And Ranger Rico ''Gunner'' Davberger is gonna shoot with his shotgun." - icon = 'icons/mecha/buggyrangergun.dmi' - icon_state = "rangergun" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 3 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/rangerarmed/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/rangerarmed/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/rangerarmed/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - smoke_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/rangerarmed/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - smoke_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/rangerarmed/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot - ME.attach(src) - max_ammo() - -//Legion Chariot - -/obj/mecha/combat/phazon/buggy/legion - name = "\improper Legion Chariot" - desc = "A light vehicle, not very powerful or solid, running on fuel... Okay, that's a lie. It's actually run on power generated by the horse... The fuel is here to make sure that some component of the buggy half works." - icon = 'icons/mecha/buggy-legion.dmi' - icon_state = "legionbuggy" - pixel_x = -18 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.2 - opacity = 0 - dir_in = 8 - step_energy_drain = 0.2 - max_temperature = 20000 - max_integrity = 250 - armor = ARMOR_VALUE_MEDIUM - max_equip = 2 - stepsound = 'sound/effects/footstep/gallop2.ogg' - turnsound = 'sound/effects/footstep/gallop1.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/legion/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/legion/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/legion/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/legion/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/legion/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggy Legion AND MESALLA - -/obj/mecha/combat/phazon/buggy/legionarmed - name = "\improper Legion Chariot with gunner" - desc = "A light vehicle, not very powerful or solid, running on fuel... Okay, that's a lie. It's actually run on power generated by the horse...The fuel is here to make sure that some component of the buggy half works. This one has been recolored by the Legion... And Prime Decanus Messala ''Gunner'' Davius is gonna shoot with his shotgun." - icon = 'icons/mecha/buggy-legiongun.dmi' - icon_state = "legiongun" - pixel_x = -18 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.2 - opacity = 0 - dir_in = 8 - step_energy_drain = 0.2 - max_temperature = 20000 - max_integrity = 250 - armor = ARMOR_VALUE_MEDIUM - max_equip = 3 - stepsound = 'sound/effects/footstep/gallop2.ogg' - turnsound = 'sound/effects/footstep/gallop1.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/legionarmed/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/legionarmed/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/legionarmed/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - smoke_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/legionarmed/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - smoke_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/legionarmed/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot - ME.attach(src) - max_ammo() - -//Highwayman - -/obj/mecha/combat/phazon/highwayman - name = "\improper highwayman eco" - desc = "A fast vehicle, running on fuel. YUP! IT'S THE HIGHWAYMAN! Kinda. It's not the original, but a budget version." - icon = 'icons/mecha/highwayman.dmi' - icon_state = "highwayman" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.7 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 250 - armor = list("melee" = 30, "bullet" = 25, "laser" = 20, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 100, "fire" = 100, "acid" = 100) - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/highwayman/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/highwayman/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/highwayman/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/highwayman/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/highwayman/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//corvega - -/obj/mecha/combat/phazon/corvega - name = "\improper Corvega" - desc = "A old vehicle, running on fuel." - icon = 'icons/mecha/corvega.dmi' - icon_state = "corvega" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.75 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 280 - armor = ARMOR_VALUE_MEDIUM - max_equip = 3 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/corvega/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/corvega/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/corvega/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/corvega/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/corvega/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//corvega police - -/obj/mecha/combat/phazon/corvega/police - name = "\improper Police Corvega" - desc = "A old vehicle, running on fuel. Seems to have been the proprety of the pre-war Yuma PD." - icon = 'icons/mecha/corvega-police.dmi' - icon_state = "corvega" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.75 - opacity = 0 - dir_in = 8 - step_energy_drain = 1.3 - max_temperature = 20000 - max_integrity = 280 - armor = ARMOR_VALUE_MEDIUM - max_equip = 3 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/corvega/police/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/corvega/police/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/corvega/police/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - sirens_action.Grant(user, src) - -/obj/mecha/combat/phazon/corvega/police/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - sirens_action.Remove(user) - -/obj/mecha/combat/phazon/corvega/police/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//pickuptruck - -/obj/mecha/combat/phazon/pickuptruck - name = "\improper pickup truck" - desc = "A old vehicle, running on fuel." - icon = 'icons/mecha/pickuptruck.dmi' - icon_state = "pickuptruck" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.4 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 300 - armor = ARMOR_VALUE_MEDIUM - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/pickuptruck/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/pickuptruck/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/pickuptruck/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//pickuptruck blue - -/obj/mecha/combat/phazon/pickuptruck/blue - name = "\improper pickup truck" - desc = "A old vehicle, running on fuel." - icon = 'icons/mecha/pickuptruck-blue.dmi' - icon_state = "pickuptruck" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.4 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 300 - armor = ARMOR_VALUE_MEDIUM - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/pickuptruck/blue/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/blue/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/blue/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/pickuptruck/blue/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/pickuptruck/blue/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//pickuptruck bos - -/obj/mecha/combat/phazon/pickuptruck/bos - name = "\improper BoS pickup truck" - desc = "A old vehicle, running on fuel." - icon = 'icons/mecha/pickuptruck-bos.dmi' - icon_state = "pickuptruck" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.4 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 300 - armor = ARMOR_VALUE_MEDIUM - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/pickuptruck/bos/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/bos/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/bos/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/pickuptruck/bos/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/pickuptruck/bos/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//pickuptruck bos AND Kiana - -/obj/mecha/combat/phazon/pickuptruck/bos/armed - name = "\improper BoS pickup truck with gunner" - desc = "A old vehicle, running on fuel. Its a modified brotherhood truck, with the addition of a laser rifle at the back, manned by Paladin Kiana Davberg. Consumes more fuel and is more fragile." - icon = 'icons/mecha/pickuptruck-gunbos.dmi' - icon_state = "pickuptruck" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.4 - opacity = 0 - dir_in = 8 - step_energy_drain = 1.5 - max_temperature = 20000 - max_integrity = 300 - armor = ARMOR_VALUE_MEDIUM - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/pickuptruck/bos/armed/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/bos/armed/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/bos/armed/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/pickuptruck/bos/armed/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/pickuptruck/bos/armed/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//truckcaravan - -/obj/mecha/combat/phazon/truckcaravan - name = "\improper Truck caravan" - desc = "A vehicle, not very powerful or solid, running on fuel... Okay, that's a lie. It's pulled by two brahmins...The fuel is here to make sure that some component of the buggy half works." - icon = 'icons/mecha/truckcaravan.dmi' - icon_state = "truckcaravan" - pixel_x = -20 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.6 - opacity = 0 - dir_in = 8 - step_energy_drain = 0.6 - max_temperature = 20000 - max_integrity = 250 - armor = ARMOR_VALUE_HEAVY - max_equip = 2 - stepsound = 'sound/effects/footstep/gallop2.ogg' - turnsound = 'sound/effects/footstep/gallop1.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/truckcaravan/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/truckcaravan/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/truckcaravan/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/truckcaravan/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/truckcaravan/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//pickuptruck mechanic - -/obj/mecha/combat/phazon/pickuptruck/mechanic - name = "\improper mechanic pickup truck" - desc = "A old vehicule, with a crane runing on fuel." - icon = 'icons/mecha/pickuptruck-mechanics.dmi' - icon_state = "pickuptruckmechanic" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.4 - opacity = 0 - dir_in = 8 - step_energy_drain = 0.6 - max_temperature = 20000 - max_integrity = 150 - armor = ARMOR_VALUE_HEAVY - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/pickuptruck/mechanic/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/mechanic/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/mechanic/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/pickuptruck/mechanic/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/pickuptruck/mechanic/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//jeep - -/obj/mecha/combat/phazon/jeep - name = "\improper pickup truck" - desc = "A old vehicule, runing on fuel." - icon = 'icons/mecha/jeep.dmi' - icon_state = "jeep" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.35 - opacity = 0 - dir_in = 8 - step_energy_drain = 0.6 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_HEAVY - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/jeep/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/jeep/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/jeep/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/jeep/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/jeep/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//jeep Enclave - -/obj/mecha/combat/phazon/jeep/enclave - name = "\improper pickup truck" - desc = "A old military vehicule, runing on fuel., and recolored" - icon = 'icons/mecha/jeepenclave.dmi' - icon_state = "jeepenclave" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.35 - opacity = 0 - dir_in = 8 - step_energy_drain = 0.6 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_HEAVY - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/jeep/enclave/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/jeep/enclave/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/jeep/enclave/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/jeep/enclave/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/jeep/enclave/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -///jeep BOS - -/obj/mecha/combat/phazon/jeep/bos - name = "\improper pickup truck" - desc = "A old military vehicule, runing on fuel, and recolored" - icon = 'icons/mecha/jeepbos.dmi' - icon_state = "jeepbos" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.35 - opacity = 0 - dir_in = 8 - step_energy_drain = 0.6 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_HEAVY - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/jeep/bos/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/jeep/bos/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/jeep/bos/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/jeep/bos/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/jeep/bos/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - - //Ambulance - -/obj/mecha/combat/phazon/ambulance - name = "\improper Ambulance" - desc = "A Modified vehicule made to carry people in need to a hospital." - icon = 'icons/mecha/ambulance.dmi' - icon_state = "ambulance" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.15 - opacity = 0 - dir_in = 8 - step_energy_drain = 0.6 - max_temperature = 20000 - max_integrity = 300 - armor = ARMOR_VALUE_HEAVY - max_equip = 5 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - -/obj/mecha/combat/phazon/ambulance/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/ambulance/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - - -/obj/mecha/combat/phazon/ambulance/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - sirens_action.Grant(user, src) - -/obj/mecha/combat/phazon/ambulance/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - sirens_action.Remove(user) - -/obj/mecha/combat/phazon/ambulance/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper - ME.attach(src) diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index c699f620f95..9694aad2d91 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -587,3 +587,16 @@ /obj/item/mecha_parts/mecha_equipment/generator/nuclear/process() if(..()) radiation_pulse(get_turf(src), rad_per_cycle) + + +/obj/item/vehiclecorepart/engine + name = "Repaired Engine" + desc = "A repaired fuel engine. Only use is in repairing a vehicle." + icon = 'icons/fallout/trash.dmi' + icon_state = "engine" + +/obj/item/vehiclecorepart/tires + name = "Usable tire" + desc = "Round and round and round and round. For car repairs." + icon = 'icons/fallout/trash.dmi' + icon_state = "bus_t" diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index a8b913fe805..f606d81c17d 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -480,6 +480,111 @@ last_piece = NC return 1 +/obj/item/mecha_parts/mecha_equipment/trunk + name = "Modular Trunk" + desc = "Equipment made to hold and transport big ammounts of cargo." + icon_state = "car_trunk" + equip_cooldown = 15 + energy_drain = 0 + harmful = FALSE + mech_flags = EXOSUIT_MODULE_PHAZON + var/component_type = /datum/component/storage/concrete/trunk + var/in_use = FALSE + w_class = WEIGHT_CLASS_GIGANTIC + resistance_flags = NONE + max_integrity = 1000 + var/datum/component/storage/concrete/trunk/storagespace + +/obj/item/mecha_parts/mecha_equipment/trunk/get_dumping_location(/obj/item/mecha_parts/mecha_equipment/trunk/source,mob/user) + return src + +/obj/item/mecha_parts/mecha_equipment/trunk/Initialize() + . = ..() + PopulateContents() + +/obj/item/mecha_parts/mecha_equipment/trunk/ComponentInitialize() + AddComponent(component_type) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + //STR.storage_flags = STORAGE_FLAGS_VOLUME_DEFAULT + STR.max_combined_w_class = 2100 + STR.max_w_class = WEIGHT_CLASS_GIGANTIC + STR.max_items = 2100 + storagespace = STR + + +/obj/item/mecha_parts/mecha_equipment/trunk/AllowDrop() + return !QDELETED(src) + +/obj/item/mecha_parts/mecha_equipment/trunk/contents_explosion(severity, target) + var/in_storage = istype(loc, /obj/item/storage)? (max(0, severity - 1)) : (severity) + for(var/atom/A in contents) + A.ex_act(in_storage, target) + CHECK_TICK + +//Cyberboss says: "USE THIS TO FILL IT, NOT INITIALIZE OR NEW" + +/obj/item/mecha_parts/mecha_equipment/trunk/proc/PopulateContents() + +/obj/item/mecha_parts/mecha_equipment/trunk/attach() + . = ..() + chassis.mouse_drag_pointer = MOUSE_ACTIVE_POINTER + storagespace.RegisterSignal(chassis, COMSIG_MOUSEDROP_ONTO, /datum/component/storage/concrete/trunk.proc/mousedrop_onto) + storagespace.RegisterSignal(chassis, COMSIG_CONTAINS_STORAGE, /datum/component/storage/concrete/trunk.proc/on_check) + storagespace.RegisterSignal(chassis, COMSIG_IS_STORAGE_LOCKED, /datum/component/storage/concrete/trunk.proc/check_locked) + storagespace.RegisterSignal(chassis, COMSIG_TRY_STORAGE_SHOW, /datum/component/storage/concrete/trunk.proc/signal_show_attempt) + storagespace.RegisterSignal(chassis, COMSIG_TRY_STORAGE_INSERT, /datum/component/storage/concrete/trunk.proc/signal_insertion_attempt) + storagespace.RegisterSignal(chassis, COMSIG_TRY_STORAGE_CAN_INSERT, /datum/component/storage/concrete/trunk.proc/signal_can_insert) + storagespace.RegisterSignal(chassis, COMSIG_TRY_STORAGE_TAKE_TYPE, /datum/component/storage/concrete/trunk.proc/signal_take_type) + storagespace.RegisterSignal(chassis, COMSIG_TRY_STORAGE_FILL_TYPE, /datum/component/storage/concrete/trunk.proc/signal_fill_type) + storagespace.RegisterSignal(chassis, COMSIG_TRY_STORAGE_SET_LOCKSTATE, /datum/component/storage/concrete/trunk.proc/set_locked) + storagespace.RegisterSignal(chassis, COMSIG_TRY_STORAGE_TAKE, /datum/component/storage/concrete/trunk.proc/signal_take_obj) + storagespace.RegisterSignal(chassis, COMSIG_TRY_STORAGE_QUICK_EMPTY, /datum/component/storage/concrete/trunk.proc/signal_quick_empty) + storagespace.RegisterSignal(chassis, COMSIG_TRY_STORAGE_HIDE_FROM, /datum/component/storage/concrete/trunk.proc/signal_hide_attempt) + storagespace.RegisterSignal(chassis, COMSIG_TRY_STORAGE_HIDE_ALL, /datum/component/storage/concrete/trunk.proc/close_all) + storagespace.RegisterSignal(chassis, COMSIG_TRY_STORAGE_RETURN_INVENTORY, /datum/component/storage/concrete/trunk.proc/signal_return_inv) + storagespace.RegisterSignal(chassis, COMSIG_PARENT_ATTACKBY, /datum/component/storage/concrete/trunk.proc/attackby) + storagespace.RegisterSignal(chassis, COMSIG_ATOM_EMP_ACT, /datum/component/storage/concrete/trunk.proc/emp_act) + storagespace.RegisterSignal(chassis, COMSIG_ATOM_ATTACK_GHOST, /datum/component/storage/concrete/trunk.proc/show_to_ghost) + storagespace.RegisterSignal(chassis, COMSIG_ATOM_ENTERED, /datum/component/storage/concrete/trunk.proc/refresh_mob_views) + storagespace.RegisterSignal(chassis, COMSIG_ATOM_EXITED, /datum/component/storage/concrete/trunk.proc/_remove_and_refresh) + storagespace.RegisterSignal(chassis, COMSIG_ITEM_PRE_ATTACK, /datum/component/storage/concrete/trunk.proc/preattack_intercept) + storagespace.RegisterSignal(chassis, COMSIG_ITEM_ATTACK_SELF, /datum/component/storage/concrete/trunk.proc/attack_self) + storagespace.RegisterSignal(chassis, COMSIG_ITEM_PICKUP, /datum/component/storage/concrete/trunk.proc/signal_on_pickup) + storagespace.RegisterSignal(chassis, COMSIG_MOVABLE_POST_THROW, /datum/component/storage/concrete/trunk.proc/close_all) + storagespace.RegisterSignal(chassis, COMSIG_MOVABLE_MOVED, /datum/component/storage/concrete/trunk.proc/check_views) + storagespace.RegisterSignal(chassis, COMSIG_CLICK_ALT, /datum/component/storage/concrete/trunk.proc/on_alt_click) + storagespace.RegisterSignal(chassis, COMSIG_MOUSEDROPPED_ONTO, /datum/component/storage/concrete/trunk.proc/mousedrop_receive) + +/obj/item/mecha_parts/mecha_equipment/trunk/detach() + storagespace.UnregisterSignal(chassis, COMSIG_MOUSEDROP_ONTO) + storagespace.UnregisterSignal(chassis, COMSIG_CONTAINS_STORAGE) + storagespace.UnregisterSignal(chassis, COMSIG_IS_STORAGE_LOCKED) + storagespace.UnregisterSignal(chassis, COMSIG_TRY_STORAGE_SHOW) + storagespace.UnregisterSignal(chassis, COMSIG_TRY_STORAGE_INSERT) + storagespace.UnregisterSignal(chassis, COMSIG_TRY_STORAGE_CAN_INSERT) + storagespace.UnregisterSignal(chassis, COMSIG_TRY_STORAGE_TAKE_TYPE) + storagespace.UnregisterSignal(chassis, COMSIG_TRY_STORAGE_FILL_TYPE) + storagespace.UnregisterSignal(chassis, COMSIG_TRY_STORAGE_SET_LOCKSTATE) + storagespace.UnregisterSignal(chassis, COMSIG_TRY_STORAGE_TAKE) + storagespace.UnregisterSignal(chassis, COMSIG_TRY_STORAGE_QUICK_EMPTY) + storagespace.UnregisterSignal(chassis, COMSIG_TRY_STORAGE_HIDE_FROM) + storagespace.UnregisterSignal(chassis, COMSIG_TRY_STORAGE_HIDE_ALL) + storagespace.UnregisterSignal(chassis, COMSIG_TRY_STORAGE_RETURN_INVENTORY) + storagespace.UnregisterSignal(chassis, COMSIG_PARENT_ATTACKBY) + storagespace.UnregisterSignal(chassis, COMSIG_ATOM_EMP_ACT) + storagespace.UnregisterSignal(chassis, COMSIG_ATOM_ATTACK_GHOST) + storagespace.UnregisterSignal(chassis, COMSIG_ATOM_ENTERED) + storagespace.UnregisterSignal(chassis, COMSIG_ATOM_EXITED) + storagespace.UnregisterSignal(chassis, COMSIG_ITEM_PRE_ATTACK) + storagespace.UnregisterSignal(chassis, COMSIG_ITEM_ATTACK_SELF) + storagespace.UnregisterSignal(chassis, COMSIG_ITEM_PICKUP) + storagespace.UnregisterSignal(chassis, COMSIG_MOVABLE_POST_THROW) + storagespace.UnregisterSignal(chassis, COMSIG_MOVABLE_MOVED) + storagespace.UnregisterSignal(chassis, COMSIG_CLICK_ALT) + storagespace.UnregisterSignal(chassis, COMSIG_MOUSEDROPPED_ONTO) + chassis.mouse_drag_pointer = MOUSE_INACTIVE_POINTER + . = ..() + /obj/item/mecha_parts/mecha_equipment/stereo name = "exosuit Stereo System" diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index afcaf470d86..fd3070ddabc 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -67,6 +67,7 @@ var/can_be_locked = FALSE //Whether the mech can be DNA-locked or not. var/stepcooldown = 3 var/last_trigger = 0 //Last time step sounded. + var/canmove = TRUE var/bumpsmash = 0 //Whether or not the mech destroys walls by running into it. //inner atmos @@ -907,7 +908,7 @@ if(C.dna.unique_enzymes==dna_lock) passed = TRUE if (!passed) - to_chat(user, "Access denied. [name] is secured with a DNA lock.") + to_chat(user, "Access denied. The [name] is secured with a DNA lock.") log_append_to_last("Permission denied.") return if(!operation_allowed(user)) diff --git a/code/game/mecha/medical_tools.dm b/code/game/mecha/medical_tools.dm index 63614cf3aed..7468a2f83f8 100644 --- a/code/game/mecha/medical_tools.dm +++ b/code/game/mecha/medical_tools.dm @@ -34,7 +34,7 @@ desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents in the exosuit's reserves." icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" - energy_drain = 20 + energy_drain = 0.5 range = MELEE equip_cooldown = 20 var/mob/living/carbon/patient = null diff --git a/code/game/mecha/other_tools.dm b/code/game/mecha/other_tools.dm index 691c14c8636..72e5095e316 100644 --- a/code/game/mecha/other_tools.dm +++ b/code/game/mecha/other_tools.dm @@ -140,7 +140,7 @@ desc = "A seat. Yup, looks hi-tec eh ? Well, its just a seat" icon = 'icons/obj/bus.dmi' icon_state = "backseat" - energy_drain = 5 + energy_drain = 0.1 range = MELEE equip_cooldown = 20 var/mob/living/carbon/patient = null @@ -154,7 +154,7 @@ /obj/item/mecha_parts/mecha_equipment/seat/Exit(atom/movable/O) return 0 - + /obj/item/mecha_parts/mecha_equipment/seat/action(mob/living/carbon/target) if(!action_checks(target)) return diff --git a/code/game/mecha/working/normalvehicle.dm b/code/game/mecha/working/normalvehicle.dm new file mode 100644 index 00000000000..0cb9bba97a8 --- /dev/null +++ b/code/game/mecha/working/normalvehicle.dm @@ -0,0 +1,1692 @@ +/obj/mecha/working/normalvehicle + name = "not supposed to be here" + desc = "not supposed to be here.Delete please." + anchored = FALSE + pixel_x = -32 + obj_integrity = 600 + max_integrity = 600 + max_buckled_mobs = 2 // this does nothing and max occupants allows more mobs to buckle but breaks movement + move_force = MOVE_FORCE_VERY_STRONG + move_resist = MOVE_FORCE_VERY_STRONG + pull_force = MOVE_FORCE_VERY_STRONG + var/crash_all = FALSE //CHAOS + var/car_traits = NONE //Bitflag for special behavior such as kidnapping + var/engine_sound_length = 20 //Set this to the length of the engine sound + +/obj/mecha/working/normalvehicle/Bump(atom/movable/A) + . = ..() + if(A.density && has_buckled_mobs()) + var/atom/throw_target = get_edge_target_turf(A, dir) + if(crash_all) + A.throw_at(throw_target, 4, 3) + visible_message("[src] crashes into [A]!") + playsound(src, 'sound/effects/bang.ogg', 50, 1) + if(ishuman(A)) + var/mob/living/carbon/human/H = A + H.DefaultCombatKnockdown(50) + H.adjustStaminaLoss(15) + H.apply_damage(rand(10,15), BRUTE) + if(!crash_all) + H.throw_at(throw_target, 2, 3) + visible_message("[src] crashes into [H]!") + playsound(src, 'sound/effects/bang.ogg', 50, 1) + if(isliving(A)) + var/mob/living/W = A + W.apply_damage(10, BRUTE) + if(!crash_all) + W.throw_at(throw_target, 1, 2) + visible_message("[src] crashes into [W]!") + playsound(src, 'sound/effects/bang.ogg', 50, 1) + +/obj/mecha/working/normalvehicle/vertibird + name = "\improper Cargo Vertibird" + desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward combat." + icon = 'icons/mecha/vb-vertibird.dmi' + icon_state = "vb" + pixel_x = -138 + pixel_y = -138 + layer = ABOVE_MOB_LAYER + can_be_locked = TRUE + dna_lock + step_in = 0.6 + dir_in = 2 + normal_step_energy_drain = 0.75 + step_energy_drain = 0.75 + max_integrity = 150 + deflect_chance = 30 + armor = ARMOR_VALUE_LIGHT + max_temperature = 25000 + infra_luminosity = 1 + wreckage = /obj/structure/mecha_wreckage/vertibird + add_req_access = 1 + internal_damage_threshold = 25 + force = 15 + max_equip = 8 + opacity = 0 + canstrafe = TRUE + movement_type = FLYING + stepsound = 'sound/f13machines/vertibird_loop.ogg' + turnsound = 'sound/f13machines/vertibird_loop.ogg' + + + + +/obj/structure/mecha_wreckage/vertibird + name = "\improper Vertibird Wreck" + desc = "Mayday, Mayday, Vertibird going down... IN STYLE." + icon = 'icons/mecha/vb-vertibird.dmi' + icon_state = "vb-broken" + pixel_x = -138 + pixel_y = -138 + +/obj/mecha/working/normalvehicle/vertibird/GrantActions(mob/living/user, human_occupant = 0) + internals_action.Grant(user, src) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + strafing_action.Grant(user, src) + zoom_action.Grant(user, src) + eject_action.Grant(user, src) + landing_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/vertibird/RemoveActions(mob/living/user, human_occupant = 0) + internals_action.Remove(user) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + strafing_action.Remove(user) + zoom_action.Remove(user) + eject_action.Remove(user) + landing_action.Remove(user) + +/obj/mecha/working/normalvehicle/vertibird/obj_destruction() + for(var/mob/M in src) + to_chat(M, span_brass("The vertibird is going to crash!")) + M.dust() + playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) + src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) + addtimer(CALLBACK(src,.proc/go_critical),breach_time) + +/obj/mecha/working/normalvehicle/vertibird/proc/go_critical() + explosion(get_turf(loc)) + Destroy(src) + +/obj/mecha/working/normalvehicle/vertibird/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +///NCR VERTIBIRD + +/obj/mecha/working/normalvehicle/vertibird/ncr + name = "\improper NCR Cargo Vertibird" + desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward Troop transport, and his painted in the colors of the NCR." + icon = 'icons/mecha/vb-vertibird-ncr.dmi' + icon_state = "vb" + pixel_x = -138 + pixel_y = -138 + layer = ABOVE_MOB_LAYER + can_be_locked = TRUE + dna_lock + step_in = 0.8 + dir_in = 2 + normal_step_energy_drain = 0.75 + step_energy_drain = 0.75 + max_integrity = 150 + deflect_chance = 30 + armor = ARMOR_VALUE_LIGHT + max_temperature = 25000 + infra_luminosity = 1 + wreckage = /obj/structure/mecha_wreckage/vertibird + add_req_access = 1 + internal_damage_threshold = 25 + force = 15 + max_equip = 8 + opacity = 0 + canstrafe = TRUE + movement_type = FLYING + stepsound = 'sound/f13machines/vertibird_loop.ogg' + turnsound = 'sound/f13machines/vertibird_loop.ogg' + + + + +/obj/mecha/working/normalvehicle/vertibird/ncr/GrantActions(mob/living/user, human_occupant = 0) + internals_action.Grant(user, src) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + strafing_action.Grant(user, src) + zoom_action.Grant(user, src) + eject_action.Grant(user, src) + smoke_action.Grant(user, src) + landing_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/vertibird/ncr/RemoveActions(mob/living/user, human_occupant = 0) + internals_action.Remove(user) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + strafing_action.Remove(user) + zoom_action.Remove(user) + eject_action.Remove(user) + smoke_action.Remove(user) + landing_action.Remove(user) + +/obj/mecha/working/normalvehicle/vertibird/ncr/obj_destruction() + for(var/mob/M in src) + to_chat(M, span_brass("The vertibird is going to crash!")) + M.dust() + playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) + src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) + addtimer(CALLBACK(src,.proc/go_critical),breach_time) + +/obj/mecha/working/normalvehicle/vertibird/ncr/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +///VERTIBIRD ENCLAVE + +/obj/mecha/working/normalvehicle/vertibird/enclave + name = "\improper Enclave Naval Cargo Vertibird" + desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward combat, and be stored in a ship. Thats peak Enclave tech." + icon = 'icons/mecha/vb-vertibird-enclave.dmi' + icon_state = "vb" + pixel_x = -138 + pixel_y = -138 + layer = ABOVE_MOB_LAYER + can_be_locked = TRUE + dna_lock + step_in = 0.6 + dir_in = 2 + normal_step_energy_drain = 0.75 + step_energy_drain = 0.75 + max_integrity = 150 + deflect_chance = 30 + armor = ARMOR_VALUE_LIGHT + max_temperature = 25000 + infra_luminosity = 1 + wreckage = /obj/structure/mecha_wreckage/vertibird + add_req_access = 1 + internal_damage_threshold = 25 + force = 15 + max_equip = 8 + opacity = 0 + canstrafe = TRUE + movement_type = FLYING + stepsound = 'sound/f13machines/vertibird_loop.ogg' + turnsound = 'sound/f13machines/vertibird_loop.ogg' + +/obj/mecha/working/normalvehicle/vertibird/enclave/GrantActions(mob/living/user, human_occupant = 0) + internals_action.Grant(user, src) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + strafing_action.Grant(user, src) + zoom_action.Grant(user, src) + eject_action.Grant(user, src) + landing_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/vertibird/enclave/RemoveActions(mob/living/user, human_occupant = 0) + internals_action.Remove(user) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + strafing_action.Remove(user) + zoom_action.Remove(user) + eject_action.Remove(user) + landing_action.Remove(user) + +/obj/mecha/working/normalvehicle/vertibird/enclave/obj_destruction() + for(var/mob/M in src) + to_chat(M, span_brass("The vertibird is going to crash!")) + M.dust() + playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) + src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) + addtimer(CALLBACK(src,.proc/go_critical),breach_time) + +/obj/mecha/working/normalvehicle/vertibird/enclave/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +/// BOS Vertibird + +/obj/mecha/working/normalvehicle/vertibird/brotherhood + name = "\improper Brotherhood Cargo Vertibird" + desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward combat, and marked with brotherhood markings." + icon = 'icons/mecha/vb-vertibird-bos.dmi' + icon_state = "vb" + pixel_x = -138 + pixel_y = -138 + layer = ABOVE_MOB_LAYER + can_be_locked = TRUE + dna_lock + step_in = 0.6 + dir_in = 2 + normal_step_energy_drain = 0.75 + step_energy_drain = 0.75 + max_integrity = 150 + deflect_chance = 30 + armor = ARMOR_VALUE_LIGHT + max_temperature = 25000 + infra_luminosity = 1 + wreckage = /obj/structure/mecha_wreckage/vertibird + add_req_access = 1 + internal_damage_threshold = 25 + force = 15 + max_equip = 8 + opacity = 0 + canstrafe = TRUE + movement_type = FLYING + stepsound = 'sound/f13machines/vertibird_loop.ogg' + turnsound = 'sound/f13machines/vertibird_loop.ogg' + +/obj/mecha/working/normalvehicle/vertibird/brotherhood/GrantActions(mob/living/user, human_occupant = 0) + internals_action.Grant(user, src) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + strafing_action.Grant(user, src) + zoom_action.Grant(user, src) + eject_action.Grant(user, src) + landing_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/vertibird/brotherhood/RemoveActions(mob/living/user, human_occupant = 0) + internals_action.Remove(user) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + strafing_action.Remove(user) + zoom_action.Remove(user) + eject_action.Remove(user) + landing_action.Remove(user) + +/obj/mecha/working/normalvehicle/vertibird/brotherhood/obj_destruction() + for(var/mob/M in src) + to_chat(M, span_brass("The vertibird is going to crash!")) + M.dust() + playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) + src.visible_message(span_userdanger("The reactor has gone critical, it's going to blow!")) + addtimer(CALLBACK(src,.proc/go_critical),breach_time) + +/obj/mecha/working/normalvehicle/vertibird/brotherhood/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +///Legion balloon + +/obj/mecha/working/normalvehicle/vertibird/balloon + name = "\improper Legion Transport balloon" + desc = "The legion maybe doesn't have fancy birds, but will still by the will of Caesar, get wings... And hot air." + icon = 'icons/mecha/legionballoon.dmi' + icon_state = "legionballoon" + pixel_x = -138 + pixel_y = 0 + layer = ABOVE_MOB_LAYER + can_be_locked = TRUE + dna_lock + step_in = 4 + dir_in = 2 + step_energy_drain = 0.05 + max_integrity = 300 + deflect_chance = 0 + armor = ARMOR_VALUE_SALVAGE + max_temperature = 25000 + infra_luminosity = 1 + wreckage = /obj/structure/mecha_wreckage/vertibird + add_req_access = 1 + internal_damage_threshold = 25 + force = 15 + max_equip = 4 + opacity = 0 + canstrafe = TRUE + movement_type = FLYING + stepsound = 'sound/f13ambience/ambigen_15.ogg' + turnsound = 'sound/f13ambience/ambigen_15.ogg' + +/obj/mecha/working/normalvehicle/vertibird/balloon/GrantActions(mob/living/user, human_occupant = 0) + internals_action.Grant(user, src) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + strafing_action.Grant(user, src) + zoom_action.Grant(user, src) + eject_action.Grant(user, src) + smoke_action.Grant(user, src) + landing_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/vertibird/balloon/RemoveActions(mob/living/user, human_occupant = 0) + internals_action.Remove(user) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + strafing_action.Remove(user) + zoom_action.Remove(user) + eject_action.Remove(user) + smoke_action.Remove(user) + landing_action.Remove(user) + +/obj/mecha/working/normalvehicle/vertibird/balloon/obj_destruction() + for(var/mob/M in src) + to_chat(M, " The balloon is going to crash!") + M.dust() + playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) + src.visible_message("The balloon's burner is about to blow!") + addtimer(CALLBACK(src,.proc/go_critical),breach_time) + +/obj/mecha/working/normalvehicle/vertibird/balloon/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +// NCR TRUCK + +/obj/mecha/working/normalvehicle/ncrtruck + name = "\improper NCR Truck" + desc = "A truck running on fuel. Nice eh? Still a wreck, though." + icon = 'icons/mecha/ncrtruck.dmi' + icon_state = "ncrtruck" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 0.9 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.5 + max_temperature = 20000 + max_integrity = 600 + armor = ARMOR_VALUE_HEAVY + max_equip = 8 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/ncrtruck + var/list/cargo = new + var/cargo_capacity = 30 + var/hides = 0 + + +/obj/structure/mecha_wreckage/ncrtruck + name = "\improper Salvageable wreckage" + desc = "It's a broken vehicule." + icon = 'icons/fallout/vehicles/medium_vehicles.dmi' + icon_state = "derelict" + +/obj/structure/mecha_wreckage/ncrtruck/engine + name = "\improper Wreck under repair" + desc = "A engine and battery are inside." + icon = 'icons/fallout/vehicles/medium_vehicles.dmi' + icon_state = "repairstep1" + anchored = 1 + +/obj/structure/mecha_wreckage/ncrtruck/seat + name = "\improper Soon finished car" + desc = "A seat, a engine and battery are inside." + icon = 'icons/fallout/vehicles/medium_vehicles.dmi' + icon_state = "repairstep1" + anchored = 1 + +/obj/mecha/working/normalvehicle/ncrtruck/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/ncrtruck/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/ncrtruck/Destroy() + for(var/atom/movable/A in cargo) + A.forceMove(drop_location()) + step_rand(A) + cargo.Cut() + return ..() + +/obj/mecha/working/normalvehicle/ncrtruck/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/ncrtruck/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/ncrtruck/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//////////// NCR TRUCK MP ////////////// + +/obj/mecha/working/normalvehicle/ncrtruck/mp + name = "\improper NCR MP Truck" + desc = "A truck running on fuel. Nice eh? Still a wreck, though. This truck has been given to the NCR MPs, and has been modified to go a bit faster. But, it has less seats and is a bit less solid." + icon = 'icons/mecha/ncrtruck-mp.dmi' + icon_state = "ncrtruck" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 0.9 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.5 + max_temperature = 20000 + max_integrity = 600 + armor = ARMOR_VALUE_HEAVY + max_equip = 4 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/ncrtruck + + + + +/obj/mecha/working/normalvehicle/ncrtruck/mp/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/ncrtruck/mp/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/ncrtruck/mp/Destroy() + for(var/atom/movable/A in cargo) + A.forceMove(drop_location()) + step_rand(A) + cargo.Cut() + return ..() + +/obj/mecha/working/normalvehicle/ncrtruck/mp/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + sirens_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/ncrtruck/mp/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + sirens_action.Remove(user) + +/obj/mecha/working/normalvehicle/ncrtruck/mp/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + + //pickuptruck + +/obj/mecha/working/normalvehicle/pickuptruck + name = "\improper pickup truck" + desc = "A old vehicle, running on fuel." + icon = 'icons/mecha/pickuptruck.dmi' + icon_state = "pickuptruck" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1.4 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.5 + max_temperature = 20000 + max_integrity = 300 + armor = ARMOR_VALUE_MEDIUM + max_equip = 4 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/pickuptruck/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/pickuptruck/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/pickuptruck/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/pickuptruck/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/pickuptruck/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + +//pickuptruck blue + +/obj/mecha/working/normalvehicle/pickuptruck/blue + name = "\improper pickup truck" + desc = "A old vehicle, running on fuel." + icon = 'icons/mecha/pickuptruck-blue.dmi' + icon_state = "pickuptruck" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1.4 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.5 + max_temperature = 20000 + max_integrity = 300 + armor = ARMOR_VALUE_MEDIUM + max_equip = 4 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/pickuptruck/blue/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/pickuptruck/blue/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/pickuptruck/blue/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/pickuptruck/blue/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/pickuptruck/blue/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//pickuptruck bos + +/obj/mecha/working/normalvehicle/pickuptruck/bos + name = "\improper BoS pickup truck" + desc = "A old vehicle, running on fuel." + icon = 'icons/mecha/pickuptruck-bos.dmi' + icon_state = "pickuptruck" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1.4 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.5 + max_temperature = 20000 + max_integrity = 300 + armor = ARMOR_VALUE_MEDIUM + max_equip = 4 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/pickuptruck/bos/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/pickuptruck/bos/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/pickuptruck/bos/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/pickuptruck/bos/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/pickuptruck/bos/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + +//truckcaravan + +/obj/mecha/working/normalvehicle/truckcaravan + name = "\improper Truck caravan" + desc = "A vehicle, not very powerful or solid, running on fuel... Okay, that's a lie. It's pulled by two brahmins...The fuel is here to make sure that some component of the buggy half works." + icon = 'icons/mecha/truckcaravan.dmi' + icon_state = "truckcaravan" + pixel_x = -20 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1.6 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.5 + max_temperature = 20000 + max_integrity = 250 + armor = ARMOR_VALUE_HEAVY + max_equip = 2 + stepsound = 'sound/effects/footstep/gallop2.ogg' + turnsound = 'sound/effects/footstep/gallop1.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/truckcaravan/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/truckcaravan/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/truckcaravan/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/truckcaravan/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/truckcaravan/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//pickuptruck mechanic + +/obj/mecha/working/normalvehicle/pickuptruck/mechanic + name = "\improper mechanic pickup truck" + desc = "A old vehicule, with a crane runing on fuel." + icon = 'icons/mecha/pickuptruck-mechanics.dmi' + icon_state = "pickuptruckmechanic" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1.4 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.5 + max_temperature = 20000 + max_integrity = 150 + armor = ARMOR_VALUE_HEAVY + max_equip = 4 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/pickuptruck/mechanic/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/pickuptruck/mechanic/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/pickuptruck/mechanic/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/pickuptruck/mechanic/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/pickuptruck/mechanic/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + + //Ambulance + +/obj/mecha/working/normalvehicle/ambulance + name = "\improper Ambulance" + desc = "A Modified vehicule made to carry people in need to a hospital." + icon = 'icons/mecha/ambulance.dmi' + icon_state = "ambulance" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1.15 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.5 + max_temperature = 20000 + max_integrity = 300 + armor = ARMOR_VALUE_HEAVY + max_equip = 6 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + + + + +/obj/mecha/working/normalvehicle/ambulance/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/ambulance/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + + +/obj/mecha/working/normalvehicle/ambulance/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + sirens_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/ambulance/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + sirens_action.Remove(user) + +/obj/mecha/working/normalvehicle/ambulance/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//Buggy + +/obj/mecha/working/normalvehicle/buggy + name = "\improper Buggy" + desc = "A light vehicle, not very powerful or solid, running on fuel." + icon = 'icons/mecha/buggy.dmi' + icon_state = "buggygreen" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 0.8 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.4 + max_temperature = 20000 + max_integrity = 200 + armor = ARMOR_VALUE_LIGHT + max_equip = 2 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/structure/mecha_wreckage/buggy + name = "\improper Buggy wreckage" + desc = "Its a buggy! Won't bug you anymore." + icon_state = "buggy-broken" + +/obj/mecha/working/normalvehicle/buggy/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/buggy/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/buggy/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//Buggydune + +/obj/mecha/working/normalvehicle/buggy/dune + name = "\improper Buggy" + desc = "A light vehicle, not very powerful or solid, running on fuel." + icon = 'icons/mecha/buggy.dmi' + icon_state = "buggydune" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 0.8 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.4 + max_temperature = 20000 + max_integrity = 200 + armor = ARMOR_VALUE_LIGHT + max_equip = 2 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/buggy/dune/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/dune/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/dune/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/buggy/dune/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/buggy/dune/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//Buggyred + +/obj/mecha/working/normalvehicle/buggy/red + name = "\improper Buggy" + desc = "A light vehicle, not very powerful or solid, running on fuel." + icon = 'icons/mecha/buggy.dmi' + icon_state = "buggyred" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 0.8 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.4 + max_temperature = 20000 + max_integrity = 200 + armor = ARMOR_VALUE_LIGHT + max_equip = 2 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/buggy/red/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/red/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/red/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/buggy/red/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/buggy/red/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + +//Buggyblue + +/obj/mecha/working/normalvehicle/buggy/blue + name = "\improper Minutemen Buggy" + desc = "A light vehicle, not very powerful or solid, running on fuel." + icon = 'icons/mecha/buggy.dmi' + icon_state = "buggyblue" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 0.8 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.4 + max_temperature = 20000 + max_integrity = 200 + armor = ARMOR_VALUE_LIGHT + max_equip = 2 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/buggy/blue/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/blue/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/blue/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/buggy/blue/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/buggy/blue/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//Buggyflame + +/obj/mecha/working/normalvehicle/buggy/flamme + name = "\improper Buggy" + desc = "A light vehicle, not very powerful or solid, running on fuel." + icon = 'icons/mecha/buggy.dmi' + icon_state = "buggyflame" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 0.8 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.4 + max_temperature = 20000 + max_integrity = 200 + armor = ARMOR_VALUE_LIGHT + max_equip = 2 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/buggy/flamme/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/flamme/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/flamme/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/buggy/flamme/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/buggy/flamme/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//Buggy Ranger + +/obj/mecha/working/normalvehicle/buggy/ranger + name = "\improper Ranger Buggy" + desc = "A light vehicle, not very powerful or solid, running on fuel. This one has been recolored by the Rangers." + icon = 'icons/mecha/hanlonbuggy.dmi' + icon_state = "hanlonbuggy" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 0.8 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.4 + max_temperature = 20000 + max_integrity = 200 + armor = ARMOR_VALUE_LIGHT + max_equip = 2 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/buggy/ranger/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/ranger/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/ranger/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/buggy/ranger/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/buggy/ranger/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//Legion Chariot + +/obj/mecha/working/normalvehicle/buggy/legion + name = "\improper Legion Chariot" + desc = "A light vehicle, not very powerful or solid, running on fuel... Okay, that's a lie. It's actually run on power generated by the horse... The fuel is here to make sure that some component of the buggy half works." + icon = 'icons/mecha/buggy-legion.dmi' + icon_state = "legionbuggy" + pixel_x = -18 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1.2 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.1 + max_temperature = 20000 + max_integrity = 250 + armor = ARMOR_VALUE_MEDIUM + max_equip = 2 + stepsound = 'sound/effects/footstep/gallop2.ogg' + turnsound = 'sound/effects/footstep/gallop1.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/buggy/legion/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/legion/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/buggy/legion/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/buggy/legion/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/buggy/legion/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//jeep + +/obj/mecha/working/normalvehicle/jeep + name = "\improper pickup truck" + desc = "A old vehicule, runing on fuel." + icon = 'icons/mecha/jeep.dmi' + icon_state = "jeep" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1.35 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.6 + max_temperature = 20000 + max_integrity = 200 + armor = ARMOR_VALUE_HEAVY + max_equip = 4 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/jeep/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/jeep/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/jeep/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/jeep/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/jeep/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//jeep Enclave + +/obj/mecha/working/normalvehicle/jeep/enclave + name = "\improper pickup truck" + desc = "A old military vehicule, runing on fuel., and recolored" + icon = 'icons/mecha/jeepenclave.dmi' + icon_state = "jeepenclave" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1.35 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.6 + max_temperature = 20000 + max_integrity = 200 + armor = ARMOR_VALUE_HEAVY + max_equip = 4 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/jeep/enclave/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/jeep/enclave/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/jeep/enclave/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/jeep/enclave/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/jeep/enclave/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +///jeep BOS + +/obj/mecha/working/normalvehicle/jeep/bos + name = "\improper pickup truck" + desc = "A old military vehicule, runing on fuel, and recolored" + icon = 'icons/mecha/jeepbos.dmi' + icon_state = "jeepbos" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 1.35 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.6 + max_temperature = 20000 + max_integrity = 200 + armor = ARMOR_VALUE_HEAVY + max_equip = 4 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/jeep/bos/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/jeep/bos/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/jeep/bos/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/jeep/bos/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/jeep/bos/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//Highwayman + +/obj/mecha/working/normalvehicle/highwayman + name = "\improper highwayman eco" + desc = "A fast vehicle, running on fuel. YUP! IT'S THE HIGHWAYMAN! Kinda. It's not the original, but a budget version." + icon = 'icons/mecha/highwayman.dmi' + icon_state = "highwayman" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 0.7 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.6 + max_temperature = 20000 + max_integrity = 250 + armor = list("melee" = 30, "bullet" = 25, "laser" = 20, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 100, "fire" = 100, "acid" = 100) + max_equip = 2 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/highwayman/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/highwayman/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/highwayman/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/highwayman/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/highwayman/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//corvega + +/obj/mecha/working/normalvehicle/corvega + name = "\improper Corvega" + desc = "A old vehicle, running on fuel." + icon = 'icons/mecha/corvega.dmi' + icon_state = "corvega" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 0.75 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.6 + max_temperature = 20000 + max_integrity = 280 + armor = ARMOR_VALUE_MEDIUM + max_equip = 3 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/corvega/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/corvega/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/corvega/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/corvega/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + +/obj/mecha/working/normalvehicle/corvega/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) + +//corvega police + +/obj/mecha/working/normalvehicle/corvega/police + name = "\improper Police Corvega" + desc = "A old vehicle, running on fuel. Seems to have been the proprety of the pre-war Yuma PD." + icon = 'icons/mecha/corvega-police.dmi' + icon_state = "corvega" + pixel_x = -15 + pixel_y = 0 + can_be_locked = TRUE + dna_lock + step_in = 0.75 + opacity = 0 + dir_in = 8 + step_energy_drain = 0.6 + max_temperature = 20000 + max_integrity = 280 + armor = ARMOR_VALUE_MEDIUM + max_equip = 3 + stepsound = 'sound/f13machines/buggy_loop.ogg' + turnsound = 'sound/f13machines/buggy_loop.ogg' + wreckage = /obj/structure/mecha_wreckage/buggy + + + + +/obj/mecha/working/normalvehicle/corvega/police/go_out() + ..() + update_icon() + +/obj/mecha/working/normalvehicle/corvega/police/moved_inside(mob/living/carbon/human/H) + ..() + update_icon() + +/obj/mecha/working/normalvehicle/corvega/police/GrantActions(mob/living/user, human_occupant = 0) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + eject_action.Grant(user, src) + klaxon_action.Grant(user, src) + sirens_action.Grant(user, src) + +/obj/mecha/working/normalvehicle/corvega/police/RemoveActions(mob/living/user, human_occupant = 0) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + eject_action.Remove(user) + klaxon_action.Remove(user) + sirens_action.Remove(user) + +/obj/mecha/working/normalvehicle/corvega/police/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/seat + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/trunk + ME.attach(src) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 69fa6824da4..715e765656a 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -536,7 +536,7 @@ obj/effect/landmark/start/f13/ncrlogisticsofficer icon_state = "NCR Sergeant" /obj/effect/landmark/start/f13/ncrdrillsergeant - name = "NCR Senior Enlisted Advisor" + name = "NCR Drill Sergeant" icon_state = "NCR Drill Sergeant" /obj/effect/landmark/start/f13/ncrsergeant diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index 072a393f49f..5653a0421e3 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -75,6 +75,18 @@ name = "Brotherhood of Steel ID Console (Computer Board)" build_path = /obj/machinery/computer/card/bos +/obj/item/circuitboard/computer/card/town + name = "Town ID Console (Computer Board)" + build_path = /obj/machinery/computer/card/town + +/obj/item/circuitboard/computer/card/town/sheriff + name = "Town Sheriff ID Console (Computer Board)" + build_path = /obj/machinery/computer/card/town/sheriff + +/obj/item/circuitboard/computer/card/town/locust + name = "Locust town ID Console (Computer Board)" + build_path = /obj/machinery/computer/card/town/locust + /obj/item/circuitboard/computer/card/minor name = "Department Management Console (Computer Board)" build_path = /obj/machinery/computer/card/minor diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index 8099418b767..6b881b81058 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -238,6 +238,42 @@ "Hunter Spider" = /mob/living/simple_animal/cow/brahmin/nightstalker/hunterspider ) +/obj/item/choice_beacon/cars //beacon for spawning cars! + name = "Cars beacon" + desc = "Hey you found your keys !" + var/list/cars = list( +"Fully Equipped Blue Pickup" = /obj/mecha/working/normalvehicle/pickuptruck/blue/loaded, +"Fully Equipped Red Pickup" = /obj/mecha/working/normalvehicle/pickuptruck/loaded, +"Fully Equipped Dune Buggy" = /obj/mecha/working/normalvehicle/buggy/dune/loaded, +"Fully Equipped Blue Buggy" = /obj/mecha/working/normalvehicle/buggy/blue/loaded, +"Fully Equipped Red Buggy" = /obj/mecha/working/normalvehicle/buggy/red/loaded, +"Fully Equipped Olive Buggy" = /obj/mecha/working/normalvehicle/buggy/loaded, +"Unequipped Jeep" = /obj/mecha/working/normalvehicle/jeep, +"Unequipped Corvega" = /obj/mecha/working/normalvehicle/corvega +) + +/obj/item/choice_beacon/cars/cheap //beacon for spawning cars! + name = "Cheap Cars beacon" + desc = "Hey you found your keys !... Its either a Cheap cravan, or a under equipped vehicle" + var/list/carscheap = list( +"Fully Equipped Caravan Truck" = /obj/mecha/working/normalvehicle/truckcaravan/loaded, +"Unequipped Blue Pickup" = /obj/mecha/working/normalvehicle/pickuptruck/blue, +"Unequipped Red Pickup" = /obj/mecha/working/normalvehicle/pickuptruck, +"Unequipped Dune Buggy" = /obj/mecha/working/normalvehicle/buggy/dune, +"Unequipped Blue Buggy" = /obj/mecha/working/normalvehicle/buggy/blue, +"Unequipped Red Buggy" = /obj/mecha/working/normalvehicle/buggy/red, +"Unequipped Olive Buggy" = /obj/mecha/working/normalvehicle/buggy +) + +/obj/item/choice_beacon/cars/nice //beacon for spawning cars! + name = "Nice Cars beacon" + desc = "Hey you found your keys !" + var/list/carsnice = list( +"Fully Equipped Jeep" = /obj/mecha/working/normalvehicle/jeep/loaded, +"Fully Equipped Corvega" = /obj/mecha/working/normalvehicle/corvega/loaded, +"Fully Equipped Highwayman Eco" =/obj/mecha/working/normalvehicle/highwayman/loaded +) + /obj/item/choice_beacon/box/carpet //donator carpet beacon name = "choice box (carpet)" desc = "Contains 50 of a selected carpet inside!" diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index 67e46e9e05c..017c09cce6e 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -46,39 +46,6 @@ notices++ update_icon() -/obj/structure/noticeboard/proc/PopulatePaperFromList(list/ids) - var/list/current_ids = StorePaperDataList() - for(var/i in ids) - if(i in current_ids) - continue - var/obj/item/paper/P = new /obj/item/paper() - if(P.LoadData(ids[i])) - P.pers_id = i - P.forceMove(src) - notices++ - update_icon() - -/obj/structure/noticeboard/proc/StorePaperDataList() - var/list/L = list() - for(var/i in contents) - if(istype(i, /obj/item/paper)) - L += i - - if(!L.len) - return - . = list() - var/list/paperData = list() - for(var/i in L) - var/obj/item/paper/P = i - if(!P.pers_id) - P.pers_id = "[persistenceID]_[md5(strip_html(P.info))]" // cursed but it'll make it unique at least. - var/list/dat = P.SaveData() - if(dat.len) - paperData[P.pers_id] = dat - - if(paperData.len) - . = paperData - /obj/structure/noticeboard/proc/GetPictureIDList() var/list/L = list() for(var/i in contents) diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index dbdc3049181..5442258bf11 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -446,7 +446,6 @@ CHAMELEON_CLOTHING_DEFINE(/obj/item/clothing/mask/chameleon) icon_state = "gas_alt" item_state = "gas_alt" resistance_flags = NONE - armor = ARMOR_VALUE_LIGHT clothing_flags = BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR gas_transfer_coefficient = 0.01 diff --git a/code/modules/clothing/head/f13factionhead.dm b/code/modules/clothing/head/f13factionhead.dm index 947beb319ba..8fe031b5a7e 100644 --- a/code/modules/clothing/head/f13factionhead.dm +++ b/code/modules/clothing/head/f13factionhead.dm @@ -596,6 +596,17 @@ obj/item/clothing/head/helmet/f13/enclave/usmcriot armor = ARMOR_VALUE_MEDIUM armor_tokens = list(ARMOR_MODIFIER_UP_DT_T1) +/obj/item/clothing/head/helmet/f13/ncr/heavygunner + name = "NCR Trench Raider Helmet" + desc = "A heavily reinforced NCR steel-pot helmet. It comes complete with extra leather padding and armored layering." + icon = 'icons/fallout/clothing/hats.dmi' + mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi' + icon_state = "ncrarmyhelmetheavy" + item_state = "ncrarmyhelmetheavy" + flags_cover = HEADCOVERSEYES|HEADCOVERSMOUTH + armor_tokens = list(ARMOR_MODIFIER_DOWN_BULLET_T1, ARMOR_MODIFIER_UP_MELEE_T3) + salvage_loot = list(/obj/item/stack/crafting/armor_plate = 8) + /obj/item/clothing/head/f13/ncr/standard/conscript name = "NCR conscript helmet" desc = "A standard issue NCR steel helmet. Looks like you can write on it and strap a few items on the helmet band." diff --git a/code/modules/clothing/suits/bigiron_suits_factions.dm b/code/modules/clothing/suits/bigiron_suits_factions.dm index eae5f9140de..943b1758968 100644 --- a/code/modules/clothing/suits/bigiron_suits_factions.dm +++ b/code/modules/clothing/suits/bigiron_suits_factions.dm @@ -351,6 +351,16 @@ Suits. 0-10 in its primary value, slowdown 0, various utility desc = "A standard issue NCR Infantry vest with a really long name and extra melee plating." armor_tokens = list(ARMOR_MODIFIER_UP_DT_T1, ARMOR_MODIFIER_UP_MELEE_T2) +/obj/item/clothing/suit/armor/ncrarmor/heavygunner //NCR Trench Raider Armor + name = "NCR Trench Raider Chestplate" + desc = "A heavily reinforced NCR vest. Rumors say that the leather for the lining comes from the best-fed Brahmins, and complete with extra armor padding." + icon = 'icons/fallout/clothing/armored_medium.dmi' + mob_overlay_icon = 'icons/fallout/onmob/clothes/armor_medium.dmi' + icon_state = "steel_bib_ncra" + item_state = "steel_bib_ncra" + armor_tokens = list(ARMOR_MODIFIER_DOWN_BULLET_T1, ARMOR_MODIFIER_UP_MELEE_T3) + salvage_loot = list(/obj/item/stack/crafting/armor_plate = 8) + /obj/item/clothing/suit/armor/ncrarmor/labcoat name = "NCR medical labcoat" desc = "An armored labcoat typically issued to NCR Medical Officers. It's a standard white labcoat with the Medical Officer's name stitched into the breast and a two headed bear sewn into the shoulder." @@ -405,6 +415,7 @@ Suits. 0-10 in its primary value, slowdown 0, various utility icon_state = "ncr_codressjack" item_state = "ncr_codressjack" + //NCR Ranger /obj/item/clothing/suit/toggle/armor/rangerrecon name = "ranger recon duster" diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index e8dd8c0b47b..421338f18b1 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -451,6 +451,78 @@ if(ACCESS_SECURITY) return "Security" +/* Town */ +/proc/get_all_town_access() + return list( + ACCESS_TOWN, ACCESS_TOWN_CIV, ACCESS_TOWN_BAR, + ACCESS_TOWN_MERCH, ACCESS_TOWN_DOC, ACCESS_TOWN_CMO, + ACCESS_TOWN_SCIENCE, ACCESS_TOWN_RADIO, ACCESS_TOWN_COMMAND, + ) +/proc/get_town_access_desc(A) + switch(A) + if(ACCESS_TOWN) + return "Basic town access" + if(ACCESS_TOWN_CIV) + return "Citizen access" + if(ACCESS_TOWN_BAR) + return "Bar access" + if(ACCESS_TOWN_MERCH) + return "Trade access" + if(ACCESS_TOWN_DOC) + return "Clinic access" + if(ACCESS_TOWN_CMO) + return "Chief clinic access" + if(ACCESS_TOWN_RADIO) + return "Radio access" + if(ACCESS_TOWN_SCIENCE) + return "Legacy Science Access" + if(ACCESS_TOWN_COMMAND) + return "Mayoral Access" + +/* Locust */ +/proc/get_all_locust_access() + return list( + ACCESS_BAR,ACCESS_KITCHEN, ACCESS_TOWN, ACCESS_TOWN_CIV, + ACCESS_CARGO_BOT, ACCESS_TOWN_MERCH, ACCESS_EVA, + ACCESS_TOWN_SEC, + ) + +/proc/get_locust_access_desc(A) + switch(A) + if(ACCESS_TOWN) + return "Basic town access" + if(ACCESS_TOWN_CIV) + return "Citizen access" + if(ACCESS_BAR) + return "Bar access" + if(ACCESS_KITCHEN) + return "Kitchen access" + if(ACCESS_TOWN_MERCH) + return "Trade access" + if(ACCESS_CARGO_BOT) + return "Lagacy cargo access" + if(ACCESS_TOWN_CMO) + return "Chief clinic access" + if(ACCESS_EVA) + return "Airpoint access" + if(ACCESS_TOWN_SEC) + return "Police access" + +/* Sheriff */ +/proc/get_all_sheriff_access() + return list( + ACCESS_TOWN_SEC,ACCESS_TOWN_HOS,ACCESS_TOWN_COMMAND, + ) + +/proc/get_sheriff_access_desc(A) + switch(A) + if(ACCESS_TOWN_SEC) + return "Deputy access" + if(ACCESS_TOWN_HOS) + return "Sheriff access" + if(ACCESS_TOWN_COMMAND) + return "Mayoral Access" + /proc/get_all_jobs() return list("Centurion", "NCR Captain", "Overseer", "Sheriff", "Sentinel", "Senior Paladin", "Paladin", "Knight-Captain", "Senior Knight", "Knight", "Head Scribe", "Senior Scribe", "Scribe", "Initiate", "Knight Sergeant", diff --git a/code/modules/jobs/job_types/legion.dm b/code/modules/jobs/job_types/legion.dm index fc607ac68d5..58b1ed7239d 100644 --- a/code/modules/jobs/job_types/legion.dm +++ b/code/modules/jobs/job_types/legion.dm @@ -1091,7 +1091,7 @@ Weapons Lever shotgun, Grease gun, Repeater carbines, Revolvers, simple guns al id = /obj/item/card/id/dogtag/legauxilia head = /obj/item/clothing/head/f13/auxilia uniform = /obj/item/clothing/under/f13/legauxiliaf - shoes = /obj/item/clothing/shoes/roman + shoes = /obj/item/clothing/shoes/sandals_leather ears = /obj/item/radio/headset/headset_legion gloves = null belt = null @@ -1127,7 +1127,7 @@ Weapons Lever shotgun, Grease gun, Repeater carbines, Revolvers, simple guns al /datum/outfit/loadout/auxmedicus name = "Medicus (Surgeon)" - neck = /obj/item/clothing/neck/apron/medical + neck = /obj/item/clothing/neck/apron/medicus_legion gloves = /obj/item/clothing/gloves/f13/crudemedical belt = /obj/item/storage/belt/medical/primitive backpack_contents = list( @@ -1137,6 +1137,7 @@ Weapons Lever shotgun, Grease gun, Repeater carbines, Revolvers, simple guns al /obj/item/stack/medical/bone_gel = 1, /obj/item/book/granter/trait/midsurgery = 1, /obj/item/clothing/under/f13/legauxilia = 1, + /obj/item/smelling_salts = 1 ) /datum/outfit/loadout/auxopifex name = "Opifex (Artisan)" @@ -1218,7 +1219,7 @@ Weapons Lever shotgun, Grease gun, Repeater carbines, Revolvers, simple guns al head = /obj/item/clothing/head/f13/servant uniform = /obj/item/clothing/under/f13/campfollowermale gloves = /obj/item/clothing/gloves/f13/crudemedical - shoes = /obj/item/clothing/shoes/roman + shoes = /obj/item/clothing/shoes/sandals_leather r_pocket = /obj/item/flashlight/lantern backpack_contents = list( /obj/item/reagent_containers/pill/healingpowder = 2, @@ -1326,7 +1327,7 @@ datum/job/CaesarsLegion/Legionnaire/f13slavemaster suit = /obj/item/clothing/suit/armor/legion/prime/slavemaster belt = /obj/item/melee/onehanded/slavewhip head = /obj/item/clothing/head/helmet/f13/legion/prime/slavemaster - shoes = /obj/item/clothing/shoes/roman + shoes = /obj/item/clothing/shoes/sandals_leather suit_store = /obj/item/melee/onehanded/machete/forgedmachete backpack_contents = list( /obj/item/reagent_containers/pill/healingpowder = 2, diff --git a/code/modules/jobs/job_types/ncr.dm b/code/modules/jobs/job_types/ncr.dm index 0fdee84d992..809e4f04fd8 100644 --- a/code/modules/jobs/job_types/ncr.dm +++ b/code/modules/jobs/job_types/ncr.dm @@ -367,8 +367,8 @@ Weapons Service Rifle, Grease Gun, 9mm pistol, all good. /datum/job/ncr/f13drillsergeant title = "NCR Drill Sergeant" flag = F13DRILLSERGEANT - total_positions = 0 - spawn_positions = 0 + total_positions = 1 + spawn_positions = 1 description = "The direct superior to all enlisted, you are to provide training exercises, maintain military discipline, and instill orderliness within the ranks. You may also manage the NCOs. You are the pinnacle of the NCR's enlisted ranks, and are to advise the commissioned officers. You are not a frontline trooper, you are camp support." supervisors = "Lieutenant and Above" selection_color = "#fff5cc" @@ -378,7 +378,6 @@ Weapons Service Rifle, Grease Gun, 9mm pistol, all good. exp_requirements = 1000 loadout_options = list( // ALL: Bayonet - /datum/outfit/loadout/seatechnical, /datum/outfit/loadout/seacommand, /datum/outfit/loadout/seastaff, ) @@ -410,34 +409,27 @@ Weapons Service Rifle, Grease Gun, 9mm pistol, all good. /obj/item/stack/crafting/armor_plate = 5 ) -/datum/outfit/loadout/seatechnical - name = "Technical Senior Advisor" - suit = /obj/item/clothing/suit/armor/ncrarmor/reinforced/mantle - backpack_contents = list( - /obj/item/gun/ballistic/automatic/service/r82 = 1, - /obj/item/ammo_box/magazine/m556/rifle/extended = 1, - /obj/item/clothing/accessory/ncr/FSGT = 1 - ) - /datum/outfit/loadout/seacommand name = "Command Senior Advisor" - suit = /obj/item/clothing/suit/armor/ncrarmor/ncr_dressjack + suit = /obj/item/clothing/suit/armor/ncrarmor/reinforced/mantle shoes = /obj/item/clothing/shoes/laceup backpack_contents = list( - /obj/item/gun/ballistic/revolver/revolver45/gunslinger = 1, - /obj/item/ammo_box/a45lcbox = 1, - /obj/item/binoculars = 1, + /obj/item/clothing/suit/armor/ncrarmor/ncr_dressjack = 1, + /obj/item/gun/ballistic/automatic/service = 1, + /obj/item/ammo_box/magazine/m556/rifle/extended = 1, /obj/item/clothing/accessory/ncr/FSGT = 1 ) /datum/outfit/loadout/seastaff name = "Drill Sergeant" uniform = /obj/item/clothing/under/f13/ncr/ncr_dress - suit = /obj/item/clothing/suit/armor/ncrarmor/ncr_dressjack + suit = /obj/item/clothing/suit/armor/ncrarmor/reinforced/mantle backpack_contents = list( - /obj/item/book/granter/trait/rifleman = 1, - /obj/item/gun/ballistic/automatic/pistol/ninemil = 1, - /obj/item/ammo_box/magazine/m9mm/doublestack = 2, + /obj/item/gun/ballistic/automatic/service = 1, + /obj/item/ammo_box/magazine/m556/rifle/extended = 1, + /obj/item/gun/ballistic/revolver/revolver45/gunslinger = 1, + /obj/item/ammo_box/a45lcbox = 1, + /obj/item/binoculars = 1, /obj/item/clothing/accessory/ncr/SSGT = 1 ) @@ -741,7 +733,7 @@ Weapons Service Rifle, Grease Gun, 9mm pistol, all good. jobtype = /datum/job/ncr/f13heavytrooper id = /obj/item/card/id/dogtag/ncrsergeant uniform = /obj/item/clothing/under/f13/ncr - accessory = /obj/item/clothing/accessory/ncr/SGT + accessory = /obj/item/clothing/accessory/ncr/SSGT gloves = /obj/item/clothing/gloves/f13/leather/fingerless head = /obj/item/clothing/head/helmet/f13/heavy/salvaged_pa/t45b/ncr belt = /obj/item/storage/belt/legholster @@ -1007,7 +999,8 @@ Weapons Service Rifle, Grease Gun, 9mm pistol, all good. loadout_options = list( /datum/outfit/loadout/combatengineerbuilder, // Service Rifle, X4 explosive, Extra materials, blueprints - /datum/outfit/loadout/combatmedic // Service Rifle, Chem / Medicine Knowledge + /datum/outfit/loadout/combatmedic, // Service Rifle, Chem / Medicine Knowledge + /datum/outfit/loadout/corporalraider, // Melee Monkey ) matchmaking_allowed = list( @@ -1067,6 +1060,16 @@ Weapons Service Rifle, Grease Gun, 9mm pistol, all good. /obj/item/clothing/head/beret/ncr/ncr_medic = 1, ) +/datum/outfit/loadout/corporalraider + name = "Prince of the Trenches" + backpack_contents = list( + /obj/item/clothing/head/helmet/f13/ncr/heavygunner = 1, + /obj/item/clothing/suit/armor/ncrarmor/heavygunner = 1, + /obj/item/shovel/trench = 1, + /obj/item/book/granter/trait/bigleagues = 1, + /obj/item/storage/box/ration/menu_seven = 1, + ) + // TROOPER /datum/job/ncr/f13trooper diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm index 374ec2e4d59..03d0bd21018 100644 --- a/code/modules/jobs/jobs.dm +++ b/code/modules/jobs/jobs.dm @@ -163,7 +163,7 @@ GLOBAL_LIST_INIT(ncr_positions, list( "NCR Sergeant First Class", "NCR Heavy Trooper", "NCR Military Police", - "NCR Senior Enlisted Advisor", + "NCR Drill Sergeant", "NCR Sergeant", "NCR Corporal", "NCR Combat Medic", diff --git a/code/modules/language/aphasia.dm b/code/modules/language/aphasia.dm deleted file mode 100644 index 91f14f91118..00000000000 --- a/code/modules/language/aphasia.dm +++ /dev/null @@ -1,13 +0,0 @@ -/datum/language/aphasia - name = "Gibbering" - desc = "It is theorized that any sufficiently brain-damaged person can speak this language." - speech_verb = "garbles" - ask_verb = "mumbles" - whisper_verb = "mutters" - exclaim_verb = "screams incoherently" - flags = LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD - key = "i" - syllables = list("m","n","gh","h","l","s","r","a","e","i","o","u") - space_chance = 20 - default_priority = 10 - icon_state = "aphasia" diff --git a/code/modules/language/beachbum.dm b/code/modules/language/beachbum.dm deleted file mode 100644 index 528e9a8da2f..00000000000 --- a/code/modules/language/beachbum.dm +++ /dev/null @@ -1,22 +0,0 @@ -/datum/language/beachbum - name = "Beachtongue" - desc = "An ancient language from the distant Beach Planet. People magically learn to speak it under the influence of space drugs." - speech_verb = "mumbles" - ask_verb = "grills" - exclaim_verb = "hollers" - key = "u" - space_chance = 85 - default_priority = 90 - syllables = list("cowabunga", "rad", "radical", "dudes", "bogus", "weeed", "every", - "dee", "dah", "woah", "surf", "blazed", "high", "heinous", "day", - "brah", "bro", "blown", "catch", "body", "beach", "oooo", "twenty", - "shiz", "phiz", "wizz", "pop", "chill", "awesome", "dude", "it", - "wax", "stoked", "yes", "ding", "way", "no", "wicked", "aaaa", - "cool", "hoo", "wah", "wee", "man", "maaaaaan", "mate", "wick", - "oh", "ocean", "up", "out", "rip", "slide", "big", "stomp", - "weed", "pot", "smoke", "four-twenty", "shove", "wacky", "hah", - "sick", "slash", "spit", "stoked", "shallow", "gun", "party", - "heavy", "stellar", "excellent", "triumphant", "babe", "four", - "tail", "trim", "tube", "wobble", "roll", "gnarly", "epic") - - icon_state = "beach" diff --git a/code/modules/language/codespeak.dm b/code/modules/language/codespeak.dm deleted file mode 100644 index 823f9bcf7fa..00000000000 --- a/code/modules/language/codespeak.dm +++ /dev/null @@ -1,83 +0,0 @@ -/datum/language/codespeak - name = "Codespeak" - desc = "Syndicate operatives can use a series of codewords to convey complex information, while sounding like random concepts and drinks to anyone listening in." - key = "t" - default_priority = 0 - flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD - icon_state = "codespeak" - -/datum/language/codespeak/scramble(input) - var/lookup = check_cache(input) - if(lookup) - return lookup - - . = "" - var/list/words = list() - while(length_char(.) < length_char(input)) - words += generate_code_phrase(return_list=TRUE) - . = jointext(words, ", ") - - . = capitalize(.) - - var/input_ending = copytext_char(input, -1) - - var/static/list/endings - if(!endings) - endings = list("!", "?", ".") - - if(input_ending in endings) - . += input_ending - - add_to_cache(input, .) - -/obj/item/codespeak_manual - name = "codespeak manual" - desc = "The book's cover reads: \"Codespeak(tm) - Secure your communication with metaphors so elaborate, they seem randomly generated!\"" - icon = 'icons/obj/library.dmi' - icon_state = "book2" - var/charges = 1 - -/obj/item/codespeak_manual/attack_self(mob/living/user) - if(!isliving(user)) - return - - if(user.has_language(/datum/language/codespeak)) - to_chat(user, span_boldannounce("You start skimming through [src], but you already know Codespeak.")) - return - - to_chat(user, span_boldannounce("You start skimming through [src], and suddenly your mind is filled with codewords and responses.")) - user.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND) - - use_charge(user) - -/obj/item/codespeak_manual/attack(mob/living/M, mob/living/user) - if(!istype(M) || !istype(user)) - return - if(M == user) - attack_self(user) - return - - playsound(loc, "punch", 25, 1, -1) - - if(M.stat == DEAD) - M.visible_message(span_danger("[user] smacks [M]'s lifeless corpse with [src]."), span_userdanger("[user] smacks your lifeless corpse with [src]."), span_italic("You hear smacking.")) - else if(M.has_language(/datum/language/codespeak)) - M.visible_message(span_danger("[user] beats [M] over the head with [src]!"), span_userdanger("[user] beats you over the head with [src]!"), span_italic("You hear smacking.")) - else - M.visible_message(span_notice("[user] teaches [M] by beating [M.p_them()] over the head with [src]!"), span_boldnotice("As [user] hits you with [src], codewords and responses flow through your mind."), span_italic("You hear smacking.")) - M.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND) - use_charge(user) - -/obj/item/codespeak_manual/proc/use_charge(mob/user) - charges-- - if(!charges) - var/turf/T = get_turf(src) - T.visible_message(span_warning("The cover and contents of [src] start shifting and changing!")) - - qdel(src) - var/obj/item/book/manual/random/book = new(T) - user.put_in_active_hand(book) - -/obj/item/codespeak_manual/unlimited - name = "deluxe codespeak manual" - charges = INFINITY diff --git a/code/modules/language/common.dm b/code/modules/language/common.dm deleted file mode 100644 index cded31b5479..00000000000 --- a/code/modules/language/common.dm +++ /dev/null @@ -1,89 +0,0 @@ -// 'basic' language; spoken by default. -/datum/language/common - name = "English" - desc = "The most popular language in the world before the war, and likely still today." - speech_verb = "says" - whisper_verb = "whispers" - key = "0" - flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_UNDERSTOOD - default_priority = 100 - - icon_state = "galcom" - -//Syllable Lists -/* - This list really long, mainly because I can't make up my mind about which mandarin syllables should be removed, - and the english syllables had to be duplicated so that there is roughly a 50-50 weighting. - - Sources: - http://www.sttmedia.com/syllablefrequency-english - http://www.chinahighlights.com/travelguide/learning-chinese/pinyin-syllables.htm -*/ -/datum/language/common/syllables = list( -"a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", "bei", "ben", "beng", "bi", "bian", "biao", -"bie", "bin", "bing", "bo", "bu", "ca", "cai", "can", "cang", "cao", "ce", "cei", "cen", "ceng", "cha", "chai", -"chan", "chang", "chao", "che", "chen", "cheng", "chi", "chong", "chou", "chu", "chua", "chuai", "chuan", "chuang", "chui", "chun", -"chuo", "ci", "cong", "cou", "cu", "cuan", "cui", "cun", "cuo", "da", "dai", "dan", "dang", "dao", "de", "dei", -"den", "deng", "di", "dian", "diao", "die", "ding", "diu", "dong", "dou", "du", "duan", "dui", "dun", "duo", "e", -"ei", "en", "er", "fa", "fan", "fang", "fei", "fen", "feng", "fo", "fou", "fu", "ga", "gai", "gan", "gang", -"gao", "ge", "gei", "gen", "geng", "gong", "gou", "gu", "gua", "guai", "guan", "guang", "gui", "gun", "guo", "ha", -"hai", "han", "hang", "hao", "he", "hei", "hen", "heng", "hm", "hng", "hong", "hou", "hu", "hua", "huai", "huan", -"huang", "hui", "hun", "huo", "ji", "jia", "jian", "jiang", "jiao", "jie", "jin", "jing", "jiong", "jiu", "ju", "juan", -"jue", "jun", "ka", "kai", "kan", "kang", "kao", "ke", "kei", "ken", "keng", "kong", "kou", "ku", "kua", "kuai", -"kuan", "kuang", "kui", "kun", "kuo", "la", "lai", "lan", "lang", "lao", "le", "lei", "leng", "li", "lia", "lian", -"liang", "liao", "lie", "lin", "ling", "liu", "long", "lou", "lu", "luan", "lun", "luo", "ma", "mai", "man", "mang", -"mao", "me", "mei", "men", "meng", "mi", "mian", "miao", "mie", "min", "ming", "miu", "mo", "mou", "mu", "na", -"nai", "nan", "nang", "nao", "ne", "nei", "nen", "neng", "ng", "ni", "nian", "niang", "niao", "nie", "nin", "ning", -"niu", "nong", "nou", "nu", "nuan", "nuo", "o", "ou", "pa", "pai", "pan", "pang", "pao", "pei", "pen", "peng", -"pi", "pian", "piao", "pie", "pin", "ping", "po", "pou", "pu", "qi", "qia", "qian", "qiang", "qiao", "qie", "qin", -"qing", "qiong", "qiu", "qu", "quan", "que", "qun", "ran", "rang", "rao", "re", "ren", "reng", "ri", "rong", "rou", -"ru", "rua", "ruan", "rui", "run", "ruo", "sa", "sai", "san", "sang", "sao", "se", "sei", "sen", "seng", "sha", -"shai", "shan", "shang", "shao", "she", "shei", "shen", "sheng", "shi", "shou", "shu", "shua", "shuai", "shuan", "shuang", "shui", -"shun", "shuo", "si", "song", "sou", "su", "suan", "sui", "sun", "suo", "ta", "tai", "tan", "tang", "tao", "te", -"teng", "ti", "tian", "tiao", "tie", "ting", "tong", "tou", "tu", "tuan", "tui", "tun", "tuo", "wa", "wai", "wan", -"wang", "wei", "wen", "weng", "wo", "wu", "xi", "xia", "xian", "xiang", "xiao", "xie", "xin", "xing", "xiong", "xiu", -"xu", "xuan", "xue", "xun", "ya", "yan", "yang", "yao", "ye", "yi", "yin", "ying", "yong", "you", "yu", "yuan", -"yue", "yun", "za", "zai", "zan", "zang", "zao", "ze", "zei", "zen", "zeng", "zha", "zhai", "zhan", "zhang", "zhao", -"zhe", "zhei", "zhen", "zheng", "zhi", "zhong", "zhou", "zhu", "zhua", "zhuai", "zhuan", "zhuang", "zhui", "zhun", "zhuo", "zi", -"zong", "zou", "zuan", "zui", "zun", "zuo", "zu", -"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", -"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", -"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", -"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", -"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", -"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", -"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", -"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", -"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", -"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", -"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", -"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", -"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", -"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", -"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", -"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", -"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", -"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", -"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", -"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", -"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", -"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", -"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", -"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi") - - -//Sign Language - - -/datum/language/signlanguage - name = "Sign Language" - desc = "Those who cannot speak can learn this instead." - speech_verb = "signs" - whisper_verb = "gestures" - key = "9" - flags = TONGUELESS_SPEECH - - syllables = list(".") - - icon_state = "ssl" - default_priority = 90 diff --git a/code/modules/language/draconic.dm b/code/modules/language/draconic.dm deleted file mode 100644 index aaa998c2c0d..00000000000 --- a/code/modules/language/draconic.dm +++ /dev/null @@ -1,20 +0,0 @@ -/datum/language/draconic - name = "Draconic" - desc = "The common language of lizard-people, composed of sibilant hisses and rattles." - speech_verb = "hisses" - ask_verb = "hisses" - exclaim_verb = "roars" - key = "o" - flags = TONGUELESS_SPEECH - space_chance = 40 - syllables = list( - "za", "az", "ze", "ez", "zi", "iz", "zo", "oz", "zu", "uz", "zs", "sz", - "ha", "ah", "he", "eh", "hi", "ih", "ho", "oh", "hu", "uh", "hs", "sh", - "la", "al", "le", "el", "li", "il", "lo", "ol", "lu", "ul", "ls", "sl", - "ka", "ak", "ke", "ek", "ki", "ik", "ko", "ok", "ku", "uk", "ks", "sk", - "sa", "as", "se", "es", "si", "is", "so", "os", "su", "us", "ss", "ss", - "ra", "ar", "re", "er", "ri", "ir", "ro", "or", "ru", "ur", "rs", "sr", - "a", "a", "e", "e", "i", "i", "o", "o", "u", "u", "s", "s" - ) - icon_state = "lizard" - default_priority = 90 diff --git a/code/modules/language/drone.dm b/code/modules/language/drone.dm deleted file mode 100644 index 390e0027cf8..00000000000 --- a/code/modules/language/drone.dm +++ /dev/null @@ -1,16 +0,0 @@ -/datum/language/drone - name = "Drone" - desc = "A heavily encoded damage control coordination stream, with special flags for hats." - speech_verb = "chitters" - ask_verb = "chitters inquisitively" - exclaim_verb = "chitters loudly" - spans = list(SPAN_ROBOT) - key = "d" - flags = NO_STUTTER - syllables = list(".", "|") - // ...|..||.||||.|.||.|.|.|||.||| - space_chance = 0 - sentence_chance = 0 - default_priority = 20 - - icon_state = "drone" diff --git a/code/modules/language/dwarven.dm b/code/modules/language/dwarven.dm deleted file mode 100644 index 17a46744153..00000000000 --- a/code/modules/language/dwarven.dm +++ /dev/null @@ -1,13 +0,0 @@ -// The language of the Dwarves, based on Dwarf Fortress - -/datum/language/dwarf - name = "Dwarvish" - desc = "The language of the dwarves" - space_chance = 100 // Each 'syllable' is its own word - key = "D" - flags = TONGUELESS_SPEECH - - syllables = list("kulet", "alak", "bidok", "nicol", "anam", "gatal", "mabdug", "zustash", "sedil", "ustos", "emr", "izeg", "beming", "gost", "ntak", "tosid", "feb", "berim", "ibruk", "ermis", "thoth", "thatthil", "gistang", "libash", "lakish", "asdos", "roder", "nel", "biban", "ugog", "ish", "robek", "olmul", "nokzam", "emuth", "fer", "uvel", "dolush", "ag^k", "ucat", "ng rak", "enir", "ugath", "lisig", "etg", "erong", "osed", "lanlar", "udir", "tarmid", "s krith", "nural", "bugsud", "okag", "nazush", "nashon", "ftrid", "en''r", "dstik", "kogan", "ingish", "dudgoth", "stalk*b", "themor", "murak", "altth", "osod", "thcekut", "cog", "selsten", "egdoth", "othsin", "idek", "st", "suthmam", "im", "okab", "onlnl", "gasol", "tegir", "nam...sh", "noval", "shalig", "shin", "lek", ",,kim", "kfkdal", "stum,,m", "alud", "olom", "%lot", "rozsed", "thos", "okon", "n 8) //if the resulting syllable would be very long, don't put anything between it - syllables += "[syllable][target_syllable]" - else if(prob(80)) //we'll be minutely different each round. - syllables += "[syllable]'[target_syllable]" - else if(prob(25)) //5% chance of - instead of ' - syllables += "[syllable]-[target_syllable]" - else //15% chance of no ' or - at all - syllables += "[syllable][target_syllable]" - ..() diff --git a/code/modules/language/ratvarian.dm b/code/modules/language/ratvarian.dm deleted file mode 100644 index dfd61080e85..00000000000 --- a/code/modules/language/ratvarian.dm +++ /dev/null @@ -1,19 +0,0 @@ -/datum/language/ratvar - name = "Ratvarian" - desc = "A timeless language full of power and incomprehensible to the unenlightened." - var/static/random_speech_verbs = list("clanks", "clinks", "clunks", "clangs") - ask_verb = "requests" - exclaim_verb = "proclaims" - whisper_verb = "imparts" - key = "r" - default_priority = 10 - spans = list(SPAN_ROBOT) - icon_state = "ratvar" - -/datum/language/ratvar/scramble(input) - . = text2ratvar(input) - -/datum/language/ratvar/get_spoken_verb(msg_end) - if(!msg_end) - return pick(random_speech_verbs) - return ..() diff --git a/code/modules/language/slime.dm b/code/modules/language/slime.dm deleted file mode 100644 index cca56ca9336..00000000000 --- a/code/modules/language/slime.dm +++ /dev/null @@ -1,12 +0,0 @@ -/datum/language/slime - name = "Slime" - desc = "A melodic and complex language spoken by slimes. Some of the notes are inaudible to humans." - speech_verb = "warbles" - ask_verb = "warbles" - exclaim_verb = "warbles" - key = "k" - flags = TONGUELESS_SPEECH - syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!") - default_priority = 70 - - icon_state = "slime" diff --git a/code/modules/language/ss13languages.dm b/code/modules/language/ss13languages.dm new file mode 100644 index 00000000000..d09ae8c340f --- /dev/null +++ b/code/modules/language/ss13languages.dm @@ -0,0 +1,528 @@ +// INFO: This folder is exclusively for vanilla/ss13 bound languages. + +// 'basic' language; spoken by default. +/datum/language/common + name = "English" + desc = "The most popular language in the world before the war, and likely still today." + speech_verb = "says" + whisper_verb = "whispers" + key = "0" + flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_UNDERSTOOD + default_priority = 100 + + icon_state = "galcom" + +//Syllable Lists +/* + This list really long, mainly because I can't make up my mind about which mandarin syllables should be removed, + and the english syllables had to be duplicated so that there is roughly a 50-50 weighting. + + Sources: + http://www.sttmedia.com/syllablefrequency-english + http://www.chinahighlights.com/travelguide/learning-chinese/pinyin-syllables.htm +*/ +/datum/language/common/syllables = list( +"a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", "bei", "ben", "beng", "bi", "bian", "biao", +"bie", "bin", "bing", "bo", "bu", "ca", "cai", "can", "cang", "cao", "ce", "cei", "cen", "ceng", "cha", "chai", +"chan", "chang", "chao", "che", "chen", "cheng", "chi", "chong", "chou", "chu", "chua", "chuai", "chuan", "chuang", "chui", "chun", +"chuo", "ci", "cong", "cou", "cu", "cuan", "cui", "cun", "cuo", "da", "dai", "dan", "dang", "dao", "de", "dei", +"den", "deng", "di", "dian", "diao", "die", "ding", "diu", "dong", "dou", "du", "duan", "dui", "dun", "duo", "e", +"ei", "en", "er", "fa", "fan", "fang", "fei", "fen", "feng", "fo", "fou", "fu", "ga", "gai", "gan", "gang", +"gao", "ge", "gei", "gen", "geng", "gong", "gou", "gu", "gua", "guai", "guan", "guang", "gui", "gun", "guo", "ha", +"hai", "han", "hang", "hao", "he", "hei", "hen", "heng", "hm", "hng", "hong", "hou", "hu", "hua", "huai", "huan", +"huang", "hui", "hun", "huo", "ji", "jia", "jian", "jiang", "jiao", "jie", "jin", "jing", "jiong", "jiu", "ju", "juan", +"jue", "jun", "ka", "kai", "kan", "kang", "kao", "ke", "kei", "ken", "keng", "kong", "kou", "ku", "kua", "kuai", +"kuan", "kuang", "kui", "kun", "kuo", "la", "lai", "lan", "lang", "lao", "le", "lei", "leng", "li", "lia", "lian", +"liang", "liao", "lie", "lin", "ling", "liu", "long", "lou", "lu", "luan", "lun", "luo", "ma", "mai", "man", "mang", +"mao", "me", "mei", "men", "meng", "mi", "mian", "miao", "mie", "min", "ming", "miu", "mo", "mou", "mu", "na", +"nai", "nan", "nang", "nao", "ne", "nei", "nen", "neng", "ng", "ni", "nian", "niang", "niao", "nie", "nin", "ning", +"niu", "nong", "nou", "nu", "nuan", "nuo", "o", "ou", "pa", "pai", "pan", "pang", "pao", "pei", "pen", "peng", +"pi", "pian", "piao", "pie", "pin", "ping", "po", "pou", "pu", "qi", "qia", "qian", "qiang", "qiao", "qie", "qin", +"qing", "qiong", "qiu", "qu", "quan", "que", "qun", "ran", "rang", "rao", "re", "ren", "reng", "ri", "rong", "rou", +"ru", "rua", "ruan", "rui", "run", "ruo", "sa", "sai", "san", "sang", "sao", "se", "sei", "sen", "seng", "sha", +"shai", "shan", "shang", "shao", "she", "shei", "shen", "sheng", "shi", "shou", "shu", "shua", "shuai", "shuan", "shuang", "shui", +"shun", "shuo", "si", "song", "sou", "su", "suan", "sui", "sun", "suo", "ta", "tai", "tan", "tang", "tao", "te", +"teng", "ti", "tian", "tiao", "tie", "ting", "tong", "tou", "tu", "tuan", "tui", "tun", "tuo", "wa", "wai", "wan", +"wang", "wei", "wen", "weng", "wo", "wu", "xi", "xia", "xian", "xiang", "xiao", "xie", "xin", "xing", "xiong", "xiu", +"xu", "xuan", "xue", "xun", "ya", "yan", "yang", "yao", "ye", "yi", "yin", "ying", "yong", "you", "yu", "yuan", +"yue", "yun", "za", "zai", "zan", "zang", "zao", "ze", "zei", "zen", "zeng", "zha", "zhai", "zhan", "zhang", "zhao", +"zhe", "zhei", "zhen", "zheng", "zhi", "zhong", "zhou", "zhu", "zhua", "zhuai", "zhuan", "zhuang", "zhui", "zhun", "zhuo", "zi", +"zong", "zou", "zuan", "zui", "zun", "zuo", "zu", +"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", +"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", +"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", +"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", +"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", +"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", +"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", +"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", +"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", +"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", +"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", +"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", +"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", +"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", +"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", +"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", +"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", +"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", +"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", +"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", +"al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", +"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", +"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", +"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi") + +//Sign Language + +/datum/language/signlanguage + name = "Sign Language" + desc = "Those who cannot speak can learn this instead." + speech_verb = "signs" + whisper_verb = "gestures" + key = "9" + flags = TONGUELESS_SPEECH + syllables = list(".") + icon_state = "ssl" + default_priority = 90 + +// Gibberish + +/datum/language/aphasia + name = "Gibbering" + desc = "It is theorized that any sufficiently brain-damaged person can speak this language." + speech_verb = "garbles" + ask_verb = "mumbles" + whisper_verb = "mutters" + exclaim_verb = "screams incoherently" + flags = LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD + key = "i" + syllables = list("m","n","gh","h","l","s","r","a","e","i","o","u") + space_chance = 20 + default_priority = 10 + icon_state = "aphasia" + +// Beachbum + +/datum/language/beachbum + name = "Beachtongue" + desc = "An ancient language from the distant Beach Planet. People magically learn to speak it under the influence of space drugs." + speech_verb = "mumbles" + ask_verb = "grills" + exclaim_verb = "hollers" + key = "u" + space_chance = 85 + default_priority = 90 + syllables = list("cowabunga", "rad", "radical", "dudes", "bogus", "weeed", "every", + "dee", "dah", "woah", "surf", "blazed", "high", "heinous", "day", + "brah", "bro", "blown", "catch", "body", "beach", "oooo", "twenty", + "shiz", "phiz", "wizz", "pop", "chill", "awesome", "dude", "it", + "wax", "stoked", "yes", "ding", "way", "no", "wicked", "aaaa", + "cool", "hoo", "wah", "wee", "man", "maaaaaan", "mate", "wick", + "oh", "ocean", "up", "out", "rip", "slide", "big", "stomp", + "weed", "pot", "smoke", "four-twenty", "shove", "wacky", "hah", + "sick", "slash", "spit", "stoked", "shallow", "gun", "party", + "heavy", "stellar", "excellent", "triumphant", "babe", "four", + "tail", "trim", "tube", "wobble", "roll", "gnarly", "epic") + + icon_state = "beach" + +// Codespeak Syndicate + +/datum/language/codespeak + name = "Codespeak" + desc = "Syndicate operatives can use a series of codewords to convey complex information, while sounding like random concepts and drinks to anyone listening in." + key = "t" + default_priority = 0 + flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD + icon_state = "codespeak" + +/datum/language/codespeak/scramble(input) + var/lookup = check_cache(input) + if(lookup) + return lookup + + . = "" + var/list/words = list() + while(length_char(.) < length_char(input)) + words += generate_code_phrase(return_list=TRUE) + . = jointext(words, ", ") + + . = capitalize(.) + + var/input_ending = copytext_char(input, -1) + + var/static/list/endings + if(!endings) + endings = list("!", "?", ".") + + if(input_ending in endings) + . += input_ending + + add_to_cache(input, .) + +/obj/item/codespeak_manual + name = "codespeak manual" + desc = "The book's cover reads: \"Codespeak(tm) - Secure your communication with metaphors so elaborate, they seem randomly generated!\"" + icon = 'icons/obj/library.dmi' + icon_state = "book2" + var/charges = 1 + +/obj/item/codespeak_manual/attack_self(mob/living/user) + if(!isliving(user)) + return + + if(user.has_language(/datum/language/codespeak)) + to_chat(user, span_boldannounce("You start skimming through [src], but you already know Codespeak.")) + return + + to_chat(user, span_boldannounce("You start skimming through [src], and suddenly your mind is filled with codewords and responses.")) + user.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND) + + use_charge(user) + +/obj/item/codespeak_manual/attack(mob/living/M, mob/living/user) + if(!istype(M) || !istype(user)) + return + if(M == user) + attack_self(user) + return + + playsound(loc, "punch", 25, 1, -1) + + if(M.stat == DEAD) + M.visible_message(span_danger("[user] smacks [M]'s lifeless corpse with [src]."), span_userdanger("[user] smacks your lifeless corpse with [src]."), span_italic("You hear smacking.")) + else if(M.has_language(/datum/language/codespeak)) + M.visible_message(span_danger("[user] beats [M] over the head with [src]!"), span_userdanger("[user] beats you over the head with [src]!"), span_italic("You hear smacking.")) + else + M.visible_message(span_notice("[user] teaches [M] by beating [M.p_them()] over the head with [src]!"), span_boldnotice("As [user] hits you with [src], codewords and responses flow through your mind."), span_italic("You hear smacking.")) + M.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND) + use_charge(user) + +/obj/item/codespeak_manual/proc/use_charge(mob/user) + charges-- + if(!charges) + var/turf/T = get_turf(src) + T.visible_message(span_warning("The cover and contents of [src] start shifting and changing!")) + + qdel(src) + var/obj/item/book/manual/random/book = new(T) + user.put_in_active_hand(book) + +/obj/item/codespeak_manual/unlimited + name = "deluxe codespeak manual" + charges = INFINITY + +///Lizard + +/datum/language/draconic + name = "Draconic" + desc = "The common language of lizard-people, composed of sibilant hisses and rattles." + speech_verb = "hisses" + ask_verb = "hisses" + exclaim_verb = "roars" + key = "o" + flags = TONGUELESS_SPEECH + space_chance = 40 + syllables = list( + "za", "az", "ze", "ez", "zi", "iz", "zo", "oz", "zu", "uz", "zs", "sz", + "ha", "ah", "he", "eh", "hi", "ih", "ho", "oh", "hu", "uh", "hs", "sh", + "la", "al", "le", "el", "li", "il", "lo", "ol", "lu", "ul", "ls", "sl", + "ka", "ak", "ke", "ek", "ki", "ik", "ko", "ok", "ku", "uk", "ks", "sk", + "sa", "as", "se", "es", "si", "is", "so", "os", "su", "us", "ss", "ss", + "ra", "ar", "re", "er", "ri", "ir", "ro", "or", "ru", "ur", "rs", "sr", + "a", "a", "e", "e", "i", "i", "o", "o", "u", "u", "s", "s" + ) + icon_state = "lizard" + default_priority = 90 + + +//Dronecore + +/datum/language/drone + name = "Drone" + desc = "A heavily encoded damage control coordination stream, with special flags for hats." + speech_verb = "chitters" + ask_verb = "chitters inquisitively" + exclaim_verb = "chitters loudly" + spans = list(SPAN_ROBOT) + key = "d" + flags = NO_STUTTER + syllables = list(".", "|") + // ...|..||.||||.|.||.|.|.|||.||| + space_chance = 0 + sentence_chance = 0 + default_priority = 20 + + icon_state = "drone" + +// The language of the Dwarves, based on Dwarf Fortress + +/datum/language/dwarf + name = "Dwarvish" + desc = "The language of the dwarves" + space_chance = 100 // Each 'syllable' is its own word + key = "D" + flags = TONGUELESS_SPEECH + + syllables = list("kulet", "alak", "bidok", "nicol", "anam", "gatal", "mabdug", "zustash", "sedil", "ustos", "emr", "izeg", "beming", "gost", "ntak", "tosid", "feb", "berim", "ibruk", "ermis", "thoth", "thatthil", "gistang", "libash", "lakish", "asdos", "roder", "nel", "biban", "ugog", "ish", "robek", "olmul", "nokzam", "emuth", "fer", "uvel", "dolush", "ag^k", "ucat", "ng rak", "enir", "ugath", "lisig", "etg", "erong", "osed", "lanlar", "udir", "tarmid", "s krith", "nural", "bugsud", "okag", "nazush", "nashon", "ftrid", "en''r", "dstik", "kogan", "ingish", "dudgoth", "stalk*b", "themor", "murak", "altth", "osod", "thcekut", "cog", "selsten", "egdoth", "othsin", "idek", "st", "suthmam", "im", "okab", "onlnl", "gasol", "tegir", "nam...sh", "noval", "shalig", "shin", "lek", ",,kim", "kfkdal", "stum,,m", "alud", "olom", "%lot", "rozsed", "thos", "okon", "n 8) //if the resulting syllable would be very long, don't put anything between it + syllables += "[syllable][target_syllable]" + else if(prob(80)) //we'll be minutely different each round. + syllables += "[syllable]'[target_syllable]" + else if(prob(25)) //5% chance of - instead of ' + syllables += "[syllable]-[target_syllable]" + else //15% chance of no ' or - at all + syllables += "[syllable][target_syllable]" + ..() + +//Ratvarian + +/datum/language/ratvar + name = "Ratvarian" + desc = "A timeless language full of power and incomprehensible to the unenlightened." + var/static/random_speech_verbs = list("clanks", "clinks", "clunks", "clangs") + ask_verb = "requests" + exclaim_verb = "proclaims" + whisper_verb = "imparts" + key = "r" + default_priority = 10 + spans = list(SPAN_ROBOT) + icon_state = "ratvar" + +/datum/language/ratvar/scramble(input) + . = text2ratvar(input) + +/datum/language/ratvar/get_spoken_verb(msg_end) + if(!msg_end) + return pick(random_speech_verbs) + return ..() + +//Big Slime + +/datum/language/slime + name = "Slime" + desc = "A melodic and complex language spoken by slimes. Some of the notes are inaudible to humans." + speech_verb = "warbles" + ask_verb = "warbles" + exclaim_verb = "warbles" + key = "k" + flags = TONGUELESS_SPEECH + syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!") + default_priority = 70 + + icon_state = "slime" + +//Swarmers +/datum/language/swarmer + name = "Swarmer" + desc = "A language only consisting of musical notes." + speech_verb = "tones" + ask_verb = "tones inquisitively" + exclaim_verb = "tones loudly" + spans = list(SPAN_ROBOT) + key = "s" + flags = NO_STUTTER + space_chance = 100 + sentence_chance = 0 + default_priority = 60 + + icon_state = "swarmer" + + // since various flats and sharps are the same, + // all non-accidental notes are doubled in the list + /* The list with unicode symbols for the accents. + syllables = list( + "C", "C", + "C♯", "D♭", + "D", "D", + "D♯", "E♭", + "E", "E", + "F", "F", + "F♯", "G♭", + "G", "G", + "G♯", "A♭", + "A", "A", + "A♯", "B♭", + "B", "B") + */ + syllables = list( + "C", "C", + "C#", "Db", + "D", "D", + "D#", "Eb", + "E", "E", + "F", "F", + "F#", "Gb", + "G", "G", + "G#", "Ab", + "A", "A", + "A#", "Bb", + "B", "B") + +// The language of the vinebings. Yes, it's a shameless ripoff of elvish. +/datum/language/sylvan + name = "Sylvan" + desc = "A complicated, ancient language spoken by vine like beings." + speech_verb = "expresses" + ask_verb = "inquires" + exclaim_verb = "declares" + key = "h" + space_chance = 20 + syllables = list( + "fii", "sii", "rii", "rel", "maa", "ala", "san", "tol", "tok", "dia", "eres", + "fal", "tis", "bis", "qel", "aras", "losk", "rasa", "eob", "hil", "tanl", "aere", + "fer", "bal", "pii", "dala", "ban", "foe", "doa", "cii", "uis", "mel", "wex", + "incas", "int", "elc", "ent", "aws", "qip", "nas", "vil", "jens", "dila", "fa", + "la", "re", "do", "ji", "ae", "so", "qe", "ce", "na", "mo", "ha", "yu" + ) + icon_state = "plant" + default_priority = 90 + +// BLOODSUCKER LANGUAGE // + +/datum/language/vampiric + name = "Blah-Sucker" + desc = "The native language of the Bloodsucker elders, learned intuitively by Fledglings and as they pass from death into immortality. Thralls are also given the ability to speak this as apart of their conversion ritual." + speech_verb = "growls" + ask_verb = "growls" + exclaim_verb = "snarls" + whisper_verb = "hisses" + key = "b" + space_chance = 40 + default_priority = 90 + icon_state = "bloodsucker" + + flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD // Hide the icon next to your text if someone doesn't know this language. + syllables = list( + "luk","cha","no","kra","pru","chi","busi","tam","pol","spu","och", // Start: Vampiric + "umf","ora","stu","si","ri","li","ka","red","ani","lup","ala","pro", + "to","siz","nu","pra","ga","ump","ort","a","ya","yach","tu","lit", + "wa","mabo","mati","anta","tat","tana","prol", + "tsa","si","tra","te","ele","fa","inz", // Start: Romanian + "nza","est","sti","ra","pral","tsu","ago","esch","chi","kys","praz", // Start: Custom + "froz","etz","tzil", + "t'","k'","t'","k'","th'","tz'" + ) + +// One of these languages will actually work, I'm certain of it. + +/datum/language/voltaic + name = "Voltaic" + desc = "A sparky language made by manipulating electrical discharge." + key = "v" + space_chance = 20 + syllables = list( + "bzzt", "skrrt", "zzp", "mmm", "hzz", "tk", "shz", "k", "z", + "bzt", "zzt", "skzt", "skzz", "hmmt", "zrrt", "hzzt", "hz", + "vzt", "zt", "vz", "zip", "tzp", "lzzt", "dzzt", "zdt", "kzt", + "zzzz", "mzz" + ) + icon_state = "volt" + default_priority = 90 + +//Xeno + +/datum/language/xenocommon + name = "Xenomorph" + desc = "The common tongue of the xenomorphs." + speech_verb = "hisses" + ask_verb = "hisses" + exclaim_verb = "hisses" + key = "4" + syllables = list("sss","sSs","SSS") + default_priority = 50 + + icon_state = "xeno" diff --git a/code/modules/language/swarmer.dm b/code/modules/language/swarmer.dm deleted file mode 100644 index e3b78267060..00000000000 --- a/code/modules/language/swarmer.dm +++ /dev/null @@ -1,45 +0,0 @@ -/datum/language/swarmer - name = "Swarmer" - desc = "A language only consisting of musical notes." - speech_verb = "tones" - ask_verb = "tones inquisitively" - exclaim_verb = "tones loudly" - spans = list(SPAN_ROBOT) - key = "s" - flags = NO_STUTTER - space_chance = 100 - sentence_chance = 0 - default_priority = 60 - - icon_state = "swarmer" - - // since various flats and sharps are the same, - // all non-accidental notes are doubled in the list - /* The list with unicode symbols for the accents. - syllables = list( - "C", "C", - "C♯", "D♭", - "D", "D", - "D♯", "E♭", - "E", "E", - "F", "F", - "F♯", "G♭", - "G", "G", - "G♯", "A♭", - "A", "A", - "A♯", "B♭", - "B", "B") - */ - syllables = list( - "C", "C", - "C#", "Db", - "D", "D", - "D#", "Eb", - "E", "E", - "F", "F", - "F#", "Gb", - "G", "G", - "G#", "Ab", - "A", "A", - "A#", "Bb", - "B", "B") diff --git a/code/modules/language/sylvan.dm b/code/modules/language/sylvan.dm deleted file mode 100644 index 5467444c6c0..00000000000 --- a/code/modules/language/sylvan.dm +++ /dev/null @@ -1,18 +0,0 @@ -// The language of the vinebings. Yes, it's a shameless ripoff of elvish. -/datum/language/sylvan - name = "Sylvan" - desc = "A complicated, ancient language spoken by vine like beings." - speech_verb = "expresses" - ask_verb = "inquires" - exclaim_verb = "declares" - key = "h" - space_chance = 20 - syllables = list( - "fii", "sii", "rii", "rel", "maa", "ala", "san", "tol", "tok", "dia", "eres", - "fal", "tis", "bis", "qel", "aras", "losk", "rasa", "eob", "hil", "tanl", "aere", - "fer", "bal", "pii", "dala", "ban", "foe", "doa", "cii", "uis", "mel", "wex", - "incas", "int", "elc", "ent", "aws", "qip", "nas", "vil", "jens", "dila", "fa", - "la", "re", "do", "ji", "ae", "so", "qe", "ce", "na", "mo", "ha", "yu" - ) - icon_state = "plant" - default_priority = 90 diff --git a/code/modules/language/vampiric.dm b/code/modules/language/vampiric.dm deleted file mode 100644 index ab48a17d2f2..00000000000 --- a/code/modules/language/vampiric.dm +++ /dev/null @@ -1,25 +0,0 @@ -// BLOODSUCKER LANGUAGE // - -/datum/language/vampiric - name = "Blah-Sucker" - desc = "The native language of the Bloodsucker elders, learned intuitively by Fledglings and as they pass from death into immortality. Thralls are also given the ability to speak this as apart of their conversion ritual." - speech_verb = "growls" - ask_verb = "growls" - exclaim_verb = "snarls" - whisper_verb = "hisses" - key = "b" - space_chance = 40 - default_priority = 90 - icon_state = "bloodsucker" - - flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD // Hide the icon next to your text if someone doesn't know this language. - syllables = list( - "luk","cha","no","kra","pru","chi","busi","tam","pol","spu","och", // Start: Vampiric - "umf","ora","stu","si","ri","li","ka","red","ani","lup","ala","pro", - "to","siz","nu","pra","ga","ump","ort","a","ya","yach","tu","lit", - "wa","mabo","mati","anta","tat","tana","prol", - "tsa","si","tra","te","ele","fa","inz", // Start: Romanian - "nza","est","sti","ra","pral","tsu","ago","esch","chi","kys","praz", // Start: Custom - "froz","etz","tzil", - "t'","k'","t'","k'","th'","tz'" - ) diff --git a/code/modules/language/voltaic.dm b/code/modules/language/voltaic.dm deleted file mode 100644 index 40fa9dcb1e8..00000000000 --- a/code/modules/language/voltaic.dm +++ /dev/null @@ -1,14 +0,0 @@ -// One of these languages will actually work, I'm certain of it. -/datum/language/voltaic - name = "Voltaic" - desc = "A sparky language made by manipulating electrical discharge." - key = "v" - space_chance = 20 - syllables = list( - "bzzt", "skrrt", "zzp", "mmm", "hzz", "tk", "shz", "k", "z", - "bzt", "zzt", "skzt", "skzz", "hmmt", "zrrt", "hzzt", "hz", - "vzt", "zt", "vz", "zip", "tzp", "lzzt", "dzzt", "zdt", "kzt", - "zzzz", "mzz" - ) - icon_state = "volt" - default_priority = 90 diff --git a/code/modules/language/wayfarer.dm b/code/modules/language/wayfarer.dm deleted file mode 100644 index 5536b9b74a3..00000000000 --- a/code/modules/language/wayfarer.dm +++ /dev/null @@ -1,23 +0,0 @@ -/datum/language/tribal - name = "Tribal" - desc = "The language spoken by members of the local tribe, boasting a complex system of phonemes and mixed grammar." - key = "t" - icon_state = "tribal" - syllables = list( - "pa", "pe", "pi","pa", "pe", "pi","pr", "bm", - "ta", "te", "ti", "ta", "te", "ti", "tr", "dm", - "ga", "ge", "gi", "go", "gu", "gm", - "sra", "sro", "sru", "sr", "'a", "'e", "'i", "'o", "'u", - "qa", "qe", "qi", "qo", "qu", "qa", "qe", "qo", "qu", "qr", - "bha", "bhe", "bhi", "bho", "bhu", "bha", "bhe", - "dha", "dhe", "dhi", "dho", "dhu", "dha", "dhe", - "nga", "ngo", "ngu", "nga", "ngo", "ngu", - "dya", "dyo", "dyu", "zya", "zyo", "zyu", - "sha", "sho", "shu", "shr", "cha", "cho", "chu", - "vay", "voy", "vuy", "may", "moy", "muy", "hay", "hoy", "huy", - "kago", "mago", "nago", "shta", "shto", "shtu", - "lam", "lem", "lim", "lar", "ler", "lir", - "kwa", "kwe", "kwo", "kwu", "wa", "we", "wo", "wu", "wa", "we", "wo", "wu", - "yor", "yar", "da", "do", "de", "di", "du", "dr", - "tos", "tis", "kos", "kis", "bos", "bis", "wos", "wis", "gos", "gis" -) diff --git a/code/modules/language/xenocommon.dm b/code/modules/language/xenocommon.dm deleted file mode 100644 index f046ecd34a6..00000000000 --- a/code/modules/language/xenocommon.dm +++ /dev/null @@ -1,11 +0,0 @@ -/datum/language/xenocommon - name = "Xenomorph" - desc = "The common tongue of the xenomorphs." - speech_verb = "hisses" - ask_verb = "hisses" - exclaim_verb = "hisses" - key = "4" - syllables = list("sss","sSs","SSS") - default_priority = 50 - - icon_state = "xeno" diff --git a/code/modules/paperwork/carbonpaper.dm b/code/modules/paperwork/carbonpaper.dm index 27786093c97..dc8f172069c 100644 --- a/code/modules/paperwork/carbonpaper.dm +++ b/code/modules/paperwork/carbonpaper.dm @@ -29,14 +29,14 @@ Copy.info += copycontents Copy.info += "" Copy.name = "Copy - [C.name]" - to_chat(user, span_notice("You tear off the carbon-copy!")) + to_chat(user, "You tear off the carbon-copy!") C.copied = TRUE Copy.iscopy = TRUE Copy.update_icon_state() C.update_icon_state() user.put_in_hands(Copy) else - to_chat(user, span_notice("There are no more carbon copies attached to this paper!")) + to_chat(user, "There are no more carbon copies attached to this paper!") /obj/item/paper/carbon/on_attack_hand(mob/living/user) if(loc == user && user.is_holding(src)) diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index 232ae34be00..5b576a24381 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -15,7 +15,7 @@ resistance_flags = FLAMMABLE /obj/item/clipboard/suicide_act(mob/living/carbon/user) - user.visible_message(span_suicide("[user] begins putting [user.p_their()] head into the clip of \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) + user.visible_message("[user] begins putting [user.p_their()] head into the clip of \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") return BRUTELOSS//the clipboard's clip is very strong. industrial duty. can kill a man easily. /obj/item/clipboard/Initialize() @@ -41,7 +41,7 @@ if(!user.transferItemToLoc(W, src)) return toppaper = W - to_chat(user, span_notice("You clip the paper onto \the [src].")) + to_chat(user, "You clip the paper onto \the [src].") update_icon() else if(toppaper) toppaper.attackby(user.get_active_held_item(), user) @@ -90,7 +90,7 @@ if(!usr.transferItemToLoc(W, src)) return haspen = W - to_chat(usr, span_notice("You slot [W] into [src].")) + to_chat(usr, "You slot [W] into [src].") if(href_list["write"]) var/obj/item/P = locate(href_list["write"]) in src @@ -120,7 +120,7 @@ var/obj/item/P = locate(href_list["top"]) in src if(istype(P)) toppaper = P - to_chat(usr, span_notice("You move [P.name] to the top.")) + to_chat(usr, "You move [P.name] to the top.") //Update everything attack_self(usr) diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index 937cf128e91..f46d4bf0294 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -41,12 +41,12 @@ else deconvert = prob (5) if(deconvert) - M.visible_message(span_notice("[user] reminds [M] that [M]'s soul was already purchased by Nanotrasen!")) - to_chat(M, span_boldnotice("You feel that your soul has returned to its rightful owner, Nanotrasen.")) + M.visible_message("[user] reminds [M] that [M]'s soul was already purchased by Nanotrasen!") + to_chat(M, "You feel that your soul has returned to its rightful owner, Nanotrasen.") M.return_soul() else - M.visible_message(span_danger("[user] beats [M] over the head with [src]!"), \ - span_userdanger("[user] beats [M] over the head with [src]!")) + M.visible_message("[user] beats [M] over the head with [src]!", \ + "[user] beats [M] over the head with [src]!") return ..() @@ -101,7 +101,7 @@ if(signed && (user == target.current) && istype(user, /mob/living/carbon/human/)) var/mob/living/carbon/human/H = user H.forcesay("OH GREAT INFERNO! I DEMAND YOU COLLECT YOUR BOUNTY IMMEDIATELY!") - H.visible_message(span_suicide("[H] holds up a contract claiming [user.p_their()] soul, then immediately catches fire. It looks like [user.p_theyre()] trying to commit suicide!")) + H.visible_message("[H] holds up a contract claiming [user.p_their()] soul, then immediately catches fire. It looks like [user.p_theyre()] trying to commit suicide!") H.adjust_fire_stacks(20) H.IgniteMob() return(FIRELOSS) @@ -172,47 +172,47 @@ if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) attempt_signature(user) else if(istype(P, /obj/item/stamp)) - to_chat(user, span_notice("You stamp the paper with your rubber stamp, however the ink ignites as you release the stamp.")) + to_chat(user, "You stamp the paper with your rubber stamp, however the ink ignites as you release the stamp.") else if(P.get_temperature()) - user.visible_message(span_danger("[user] brings [P] next to [src], but [src] does not catch fire!"), span_danger("[src] refuses to ignite!")) + user.visible_message("[user] brings [P] next to [src], but [src] does not catch fire!", "[src] refuses to ignite!") else return ..() /obj/item/paper/contract/infernal/attack(mob/M, mob/living/user) add_fingerprint(user) if(M == user && target == M.mind && M.mind.soulOwner != owner && attempt_signature(user, 1)) - user.visible_message(span_danger("[user] slices [user.p_their()] wrist with [src], and scrawls [user.p_their()] name in blood."), span_danger("You slice your wrist open and scrawl your name in blood.")) + user.visible_message("[user] slices [user.p_their()] wrist with [src], and scrawls [user.p_their()] name in blood.", "You slice your wrist open and scrawl your name in blood.") user.blood_volume = max(user.blood_volume - 100, 0) else return ..() /obj/item/paper/contract/infernal/proc/attempt_signature(mob/living/carbon/human/user, blood = 0) if(!user.IsAdvancedToolUser() || !user.is_literate()) - to_chat(user, span_notice("You don't know how to read or write.")) + to_chat(user, "You don't know how to read or write.") return 0 if(user.mind != target) - to_chat(user, span_notice("Your signature simply slides off the sheet, it seems this contract is not meant for you to sign.")) + to_chat(user, "Your signature simply slides off the sheet, it seems this contract is not meant for you to sign.") return 0 if(user.mind.soulOwner == owner) - to_chat(user, span_notice("This devil already owns your soul, you may not sell it to [owner.p_them()] again.")) + to_chat(user, "This devil already owns your soul, you may not sell it to [owner.p_them()] again.") return 0 if(signed) - to_chat(user, span_notice("This contract has already been signed. It may not be signed again.")) + to_chat(user, "This contract has already been signed. It may not be signed again.") return 0 if(!user.mind.hasSoul) - to_chat(user, span_notice("You do not possess a soul.")) + to_chat(user, "You do not possess a soul.") return 0 if(HAS_TRAIT(user, TRAIT_DUMB)) - to_chat(user, span_notice("You quickly scrawl 'your name' on the contract.")) + to_chat(user, "You quickly scrawl 'your name' on the contract.") signIncorrectly() return 0 if (contractType == CONTRACT_REVIVE) - to_chat(user, span_notice("You are already alive, this contract would do nothing.")) + to_chat(user, "You are already alive, this contract would do nothing.") return 0 else - to_chat(user, span_notice("You quickly scrawl your name on the contract")) + to_chat(user, "You quickly scrawl your name on the contract") if(fulfillContract(target.current, blood)<=0) - to_chat(user, span_notice("But it seemed to have no effect, perhaps even Hell itself cannot grant this boon?")) + to_chat(user, "But it seemed to have no effect, perhaps even Hell itself cannot grant this boon?") return 1 @@ -220,7 +220,7 @@ /obj/item/paper/contract/infernal/revive/attack(mob/M, mob/living/user) if (target == M.mind && M.stat == DEAD && M.mind.soulOwner == M.mind) if (cooldown) - to_chat(user, span_notice("Give [M] a chance to think through the contract, don't rush [M.p_them()].")) + to_chat(user, "Give [M] a chance to think through the contract, don't rush [M.p_them()].") return 0 cooldown = TRUE var/mob/living/carbon/human/H = M @@ -236,10 +236,10 @@ if(response == "Yes") H.revive(1,0) log_combat(user, H, "infernally revived via contract") - user.visible_message(span_notice("With a sudden blaze, [H] stands back up.")) + user.visible_message("With a sudden blaze, [H] stands back up.") H.fakefire() fulfillContract(H, 1)//Revival contracts are always signed in blood - addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human,fakefireextinguish)), 5, TIMER_UNIQUE) + addtimer(CALLBACK(H, /mob/living/carbon/human.proc/fakefireextinguish), 5, TIMER_UNIQUE) addtimer(CALLBACK(src, "resetcooldown"), 300, TIMER_UNIQUE) else ..() @@ -259,8 +259,8 @@ var/datum/antagonist/devil/devilInfo = owner.has_antag_datum(/datum/antagonist/devil) devilInfo.add_soul(user.mind) update_text(user.real_name, blood) - to_chat(user, span_notice("A profound emptiness washes over you as you lose ownership of your soul.")) - to_chat(user, span_boldnotice("This does NOT make you an antagonist if you were not already.")) + to_chat(user, "A profound emptiness washes over you as you lose ownership of your soul.") + to_chat(user, "This does NOT make you an antagonist if you were not already.") return TRUE /obj/item/paper/contract/infernal/proc/signIncorrectly(mob/living/carbon/human/user = target.current, blood = FALSE) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 82a20fb0a5a..390cd0cf83a 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -47,20 +47,20 @@ /obj/structure/filingcabinet/attackby(obj/item/P, mob/user, params) if(P.tool_behaviour == TOOL_WRENCH && user.a_intent != INTENT_HELP) - to_chat(user, span_notice("You begin to [anchored ? "unwrench" : "wrench"] [src].")) + to_chat(user, "You begin to [anchored ? "unwrench" : "wrench"] [src].") if(P.use_tool(src, user, 20, volume=50)) - to_chat(user, span_notice("You successfully [anchored ? "unwrench" : "wrench"] [src].")) + to_chat(user, "You successfully [anchored ? "unwrench" : "wrench"] [src].") anchored = !anchored else if(P.w_class < WEIGHT_CLASS_NORMAL) if(!user.transferItemToLoc(P, src)) return - to_chat(user, span_notice("You put [P] in [src].")) + to_chat(user, "You put [P] in [src].") icon_state = "[initial(icon_state)]-open" sleep(5) icon_state = initial(icon_state) updateUsrDialog() else if(user.a_intent != INTENT_HARM) - to_chat(user, span_warning("You can't put [P] in [src]!")) + to_chat(user, "You can't put [P] in [src]!") else return ..() @@ -68,7 +68,7 @@ /obj/structure/filingcabinet/ui_interact(mob/user) . = ..() if(contents.len <= 0) - to_chat(user, span_notice("[src] is empty.")) + to_chat(user, "[src] is empty.") return var/dat = "
" @@ -92,9 +92,9 @@ I.forceMove(loc) if(prob(25)) step_rand(I) - to_chat(user, span_notice("You pull \a [I] out of [src] at random.")) + to_chat(user, "You pull \a [I] out of [src] at random.") return - to_chat(user, span_notice("You find nothing in [src].")) + to_chat(user, "You find nothing in [src].") /obj/structure/filingcabinet/Topic(href, href_list) if(!usr.canUseTopic(src, BE_CLOSE, ismonkey(usr))) @@ -211,7 +211,7 @@ GLOBAL_LIST_EMPTY(employmentCabinets) /obj/structure/filingcabinet/employment/interact(mob/user) if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_EMPLOYMENT_CABINET)) - to_chat(user, span_warning("[src] is jammed, give it a few seconds.")) + to_chat(user, "[src] is jammed, give it a few seconds.") return ..() TIMER_COOLDOWN_START(src, COOLDOWN_EMPLOYMENT_CABINET, 10 SECONDS) // prevents the devil from just instantly emptying the cabinet, ensuring an easy win. diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index a91696ec027..342d39d543e 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -8,54 +8,8 @@ resistance_flags = FLAMMABLE var/persistenceID -/obj/item/folder/Initialize() - . = ..() - LAZYADD(SSpersistence.folders, src) - -/obj/item/folder/Destroy() - LAZYREMOVE(SSpersistence.folders, src) - ..() - -/obj/item/folder/proc/PersistenceLoad() - var/list/data = SSpersistence.GetFolders() - if(data) - if(data[persistenceID]) - PopulatePaperFromList(data[persistenceID]) - -/obj/item/folder/proc/PopulatePaperFromList(list/ids) - var/list/current_ids = StorePaperDataList() - for(var/i in ids) - if(i in current_ids) - continue - var/obj/item/paper/P = new /obj/item/paper() - if(P.LoadData(ids[i])) - P.pers_id = i - P.forceMove(src) - update_icon() - -/obj/item/folder/proc/StorePaperDataList() - var/list/L = list() - for(var/i in contents) - if(istype(i, /obj/item/paper)) - L += i - - if(!L.len) - return - . = list() - var/list/paperData = list() - for(var/i in L) - var/obj/item/paper/P = i - if(!P.pers_id) - P.pers_id = "[persistenceID]_[md5(strip_html(P.info))]" // cursed but it'll make it unique at least. - var/list/dat = P.SaveData() - if(dat.len) - paperData[P.pers_id] = dat - - if(paperData.len) - . = paperData - /obj/item/folder/suicide_act(mob/living/user) - user.visible_message(span_suicide("[user] begins filing an imaginary death warrant! It looks like [user.p_theyre()] trying to commit suicide!")) + user.visible_message("[user] begins filing an imaginary death warrant! It looks like [user.p_theyre()] trying to commit suicide!") return OXYLOSS /obj/item/folder/blue @@ -87,11 +41,11 @@ if(istype(W, /obj/item/paper) || istype(W, /obj/item/photo) || istype(W, /obj/item/documents)) if(!user.transferItemToLoc(W, src)) return - to_chat(user, span_notice("You put [W] into [src].")) + to_chat(user, "You put [W] into [src].") update_icon() else if(istype(W, /obj/item/pen)) if(!user.is_literate()) - to_chat(user, span_notice("You scribble illegibly on the cover of [src]!")) + to_chat(user, "You scribble illegibly on the cover of [src]!") return var/inputvalue = stripped_input(user, "What would you like to label the folder?", "Folder Labelling", "", MAX_NAME_LEN) diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index 76d83b5b29e..1e898f83f6c 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -10,7 +10,7 @@ var/mode = 0 /obj/item/hand_labeler/suicide_act(mob/user) - user.visible_message(span_suicide("[user] is pointing [src] at [user.p_them()]self. [user.p_theyre(TRUE)] going to label [user.p_them()]self as a suicide!")) + user.visible_message("[user] is pointing [src] at [user.p_them()]self. [user.p_theyre(TRUE)] going to label [user.p_them()]self as a suicide!") labels_left = max(labels_left - 1, 0) var/old_real_name = user.real_name @@ -44,20 +44,20 @@ return if(!labels_left) - to_chat(user, span_warning("No labels left!")) + to_chat(user, "No labels left!") return if(!label || !length(label)) - to_chat(user, span_warning("No text set!")) + to_chat(user, "No text set!") return if(length(A.name) + length(label) > 64) - to_chat(user, span_warning("Label too big!")) + to_chat(user, "Label too big!") return if(ismob(A)) - to_chat(user, span_warning("You can't label creatures!")) // use a collar + to_chat(user, "You can't label creatures!") // use a collar return - user.visible_message(span_notice("[user] labels [A] with \"[label]\"."), \ - span_notice("You label [A] with \"[label]\".")) + user.visible_message("[user] labels [A] with \"[label]\".", \ + "You label [A] with \"[label]\".") A.AddComponent(/datum/component/label, label) // playsound(A, 'sound/items/handling/component_pickup.ogg', 20, TRUE) labels_left-- @@ -65,26 +65,26 @@ /obj/item/hand_labeler/attack_self(mob/user) if(!user.IsAdvancedToolUser()) - to_chat(user, span_warning("You don't have the dexterity to use [src]!")) + to_chat(user, "You don't have the dexterity to use [src]!") return mode = !mode icon_state = "labeler[mode]" if(mode) - to_chat(user, span_notice("You turn on [src].")) + to_chat(user, "You turn on [src].") //Now let them chose the text. var/str = reject_bad_text(stripped_input(user, "Label text?", "Set label","", MAX_NAME_LEN)) if(!str || !length(str)) - to_chat(user, span_warning("Invalid text!")) + to_chat(user, "Invalid text!") return label = str - to_chat(user, span_notice("You set the text to '[str]'.")) + to_chat(user, "You set the text to '[str]'.") else - to_chat(user, span_notice("You turn off [src].")) + to_chat(user, "You turn off [src].") /obj/item/hand_labeler/attackby(obj/item/I, mob/user, params) ..() if(istype(I, /obj/item/hand_labeler_refill)) - to_chat(user, span_notice("You insert [I] into [src].")) + to_chat(user, "You insert [I] into [src].") qdel(I) labels_left = initial(labels_left) //Yes, it's capped at its initial value diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index f9d7519822d..20ec678e459 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -55,7 +55,6 @@ /// This is an associated list var/list/form_fields = list() var/field_counter = 1 - var/pers_id /obj/item/paper/Destroy() stamps = null @@ -64,38 +63,6 @@ stamped = null . = ..() -/obj/item/paper/proc/SaveData() - if(!pers_id) - return - - var/list/dat = list() - dat["name"] = name - //dat["icon"] = icon - dat["icon_state"] = icon_state - dat["info"] = info - dat["color"] = color - dat["stamps"] = stamps - dat["stamped"] = stamped - dat["form_fields"] = form_fields - dat["field_counter"] = field_counter - - return dat - -/obj/item/paper/proc/LoadData(list/dat) - if(!dat.len) - return FALSE - - name = dat["name"] - //icon = dat["icon"] - icon_state = dat["icon_state"] - info = dat["info"] - color = dat["color"] - stamps = dat["stamps"] - stamped = dat["stamped"] - form_fields = dat["form_fields"] - field_counter = dat["field_counter"] - - return TRUE /** * This proc copies this sheet of paper to a new * sheet, Makes it nice and easy for carbon and @@ -153,7 +120,7 @@ if(ishuman(usr)) var/mob/living/carbon/human/H = usr if(HAS_TRAIT(H, TRAIT_CLUMSY) && prob(25)) - to_chat(H, span_warning("You cut yourself on the paper! Ahhhh! Ahhhhh!")) + to_chat(H, "You cut yourself on the paper! Ahhhh! Ahhhhh!") H.damageoverlaytemp = 9001 H.update_damage_hud() return @@ -163,7 +130,7 @@ add_fingerprint(usr) /obj/item/paper/suicide_act(mob/user) - user.visible_message(span_suicide("[user] scratches a grid on [user.p_their()] wrist with the paper! It looks like [user.p_theyre()] trying to commit sudoku...")) + user.visible_message("[user] scratches a grid on [user.p_their()] wrist with the paper! It looks like [user.p_theyre()] trying to commit sudoku...") return (BRUTELOSS) /obj/item/paper/proc/clearpaper() @@ -176,12 +143,12 @@ /obj/item/paper/examine(mob/user) . = ..() if(!in_range(user, src) && !isobserver(user)) - . += span_warning("You're too far away to read it!") + . += "You're too far away to read it!" return if(user.can_read(src)) ui_interact(user) return - . += span_warning("You cannot read it!") + . += "You cannot read it!" /obj/item/paper/ui_status(mob/user,/datum/ui_state/state) // Are we on fire? Hard ot read if so @@ -202,7 +169,7 @@ /obj/item/paper/can_interact(mob/user) - if(in_contents_of(/obj/machinery/door/airlock) || in_contents_of(/obj/structure/noticeboard)) + if(in_contents_of(/obj/machinery/door/airlock)) return TRUE return ..() @@ -213,8 +180,8 @@ return . = TRUE if(!bypass_clumsy && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(10) && Adjacent(user)) - user.visible_message(span_warning("[user] accidentally ignites [user.p_them()]self!"), \ - span_userdanger("You miss [src] and accidentally light yourself on fire!")) + user.visible_message("[user] accidentally ignites [user.p_them()]self!", \ + "You miss [src] and accidentally light yourself on fire!") if(user.is_holding(I)) //checking if they're holding it in case TK is involved user.dropItemToGround(I) user.adjust_fire_stacks(1) @@ -234,12 +201,12 @@ if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) if(length(info) >= MAX_PAPER_LENGTH) // Sheet must have less than 1000 charaters - to_chat(user, span_warning("This sheet of paper is full!")) + to_chat(user, "This sheet of paper is full!") return ui_interact(user) return else if(istype(P, /obj/item/stamp)) - to_chat(user, span_notice("You ready your stamp over the paper! ")) + to_chat(user, "You ready your stamp over the paper! ") ui_interact(user) return /// Normaly you just stamp, you don't need to read the thing else @@ -343,7 +310,7 @@ LAZYADD(stamped, stamp_icon_state) update_static_data(usr,ui) - ui.user.visible_message(span_notice("[ui.user] stamps [src] with [stamp_class]!"), span_notice("You stamp [src] with [stamp_class]!")) + ui.user.visible_message("[ui.user] stamps [src] with [stamp_class]!", "You stamp [src] with [stamp_class]!") else to_chat(usr, pick("You try to stamp but you miss!", "There is no where else you can stamp!")) . = TRUE diff --git a/code/modules/paperwork/paper_cutter.dm b/code/modules/paperwork/paper_cutter.dm index 82c69f18698..a3b9b231412 100644 --- a/code/modules/paperwork/paper_cutter.dm +++ b/code/modules/paperwork/paper_cutter.dm @@ -20,7 +20,7 @@ /obj/item/papercutter/suicide_act(mob/user) if(storedcutter) - user.visible_message(span_suicide("[user] is beheading [user.p_them()]self with [src.name]! It looks like [user.p_theyre()] trying to commit suicide!")) + user.visible_message("[user] is beheading [user.p_them()]self with [src.name]! It looks like [user.p_theyre()] trying to commit suicide!") if(iscarbon(user)) var/mob/living/carbon/C = user var/obj/item/bodypart/BP = C.get_bodypart(BODY_ZONE_HEAD) @@ -29,7 +29,7 @@ playsound(loc, pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg'),50, TRUE, -1) return (BRUTELOSS) else - user.visible_message(span_suicide("[user] repeatedly bashes [src.name] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!")) + user.visible_message("[user] repeatedly bashes [src.name] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/items/gavel.ogg', 50, TRUE, -1) return (BRUTELOSS) @@ -48,21 +48,21 @@ if(!user.transferItemToLoc(P, src)) return playsound(loc, "pageturn", 60, TRUE) - to_chat(user, span_notice("You place [P] in [src].")) + to_chat(user, "You place [P] in [src].") storedpaper = P update_icon() return if(istype(P, /obj/item/hatchet/cutterblade) && !storedcutter) if(!user.transferItemToLoc(P, src)) return - to_chat(user, span_notice("You replace [src]'s [P].")) + to_chat(user, "You replace [src]'s [P].") P.forceMove(src) storedcutter = P update_icon() return if(P.tool_behaviour == TOOL_SCREWDRIVER && storedcutter) P.play_tool_sound(src) - to_chat(user, span_notice("[storedcutter] has been [cuttersecured ? "unsecured" : "secured"].")) + to_chat(user, "[storedcutter] has been [cuttersecured ? "unsecured" : "secured"].") cuttersecured = !cuttersecured return ..() @@ -70,18 +70,18 @@ /obj/item/papercutter/on_attack_hand(mob/user) add_fingerprint(user) if(!storedcutter) - to_chat(user, span_warning("The cutting blade is gone! You can't use [src] now.")) + to_chat(user, "The cutting blade is gone! You can't use [src] now.") return if(!cuttersecured) - to_chat(user, span_notice("You remove [src]'s [storedcutter].")) + to_chat(user, "You remove [src]'s [storedcutter].") user.put_in_hands(storedcutter) storedcutter = null update_icon() if(storedpaper) playsound(src.loc, 'sound/weapons/slash.ogg', 50, TRUE) - to_chat(user, span_notice("You neatly cut [storedpaper].")) + to_chat(user, "You neatly cut [storedpaper].") storedpaper = null qdel(storedpaper) new /obj/item/paperslip(get_turf(src)) diff --git a/code/modules/paperwork/paper_premade.dm b/code/modules/paperwork/paper_premade.dm index 73557db0745..001243935a4 100644 --- a/code/modules/paperwork/paper_premade.dm +++ b/code/modules/paperwork/paper_premade.dm @@ -244,18 +244,14 @@
Step 1
- Aquire Xander root,broc flowers,barrel cactii, bloodleaf and bottles of Sarsaparilla. + Aquire Xander root,broc flowers,barrel cactii and empty beakers
Step 2
- Ferment Xander root,barrel cactii, broc flowers and blood leaf seperate. + Ferment Xander root,barrel cactii and broc flowers seperate.
Step 3
- Mix Bloodtea with water and heat with a lighter -
- Step 4 -
- Mix the fermented results of Xander root, barrel cactii,broc flowers, bloodleaf tea and Sarsaparilla together in a large glass beaker. Heat it up when its all mixed together.
+ Mix the fermented results of Xander root, barrel cactii, broc flowers together in equal parts.

Bitter drink should be the result which can then be bottled by crafting. It is a very potent drink, so more than two should not be consumed."} diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 1e282f9b5d9..a2e2b9fd2c1 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -1,10 +1,10 @@ -#define PAPERS_PER_OVERLAY 8 -#define PAPER_OVERLAY_PIXEL_SHIFT 2 /obj/item/paper_bin name = "paper bin" desc = "Contains all the paper you'll never need." icon = 'icons/obj/bureaucracy.dmi' - icon_state = "paper_bin0" + icon_state = "paper_bin1" + item_state = "sheet-metal" + // inhand_icon_state = "sheet-metal" lefthand_file = 'icons/mob/inhands/misc/sheets_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/sheets_righthand.dmi' throwforce = 0 @@ -12,224 +12,172 @@ throw_speed = 3 throw_range = 7 pressure_resistance = 8 + attack_hand_speed = CLICK_CD_RAPID + attack_hand_is_action = TRUE var/papertype = /obj/item/paper var/total_paper = 30 var/list/papers = list() var/obj/item/pen/bin_pen - ///Overlay of the pen on top of the bin. - var/mutable_appearance/pen_overlay - ///Name of icon that goes over the paper overlays. - var/bin_overlay_string = "paper_bin_overlay" - ///Overlay that goes over the paper overlays. - var/mutable_appearance/bin_overlay /obj/item/paper_bin/Initialize(mapload) . = ..() interaction_flags_item &= ~INTERACT_ITEM_ATTACK_HAND_PICKUP - AddElement(/datum/element/drag_pickup) - if(mapload) - var/obj/item/pen/pen = locate(/obj/item/pen) in loc - if(pen && !bin_pen) - pen.forceMove(src) - bin_pen = pen - for(var/i in 1 to total_paper) - papers.Add(generate_paper()) - update_icon() - -/obj/item/paper_bin/proc/generate_paper() - var/obj/item/paper/paper = new papertype(src) - if(SSevents.holidays && SSevents.holidays[APRIL_FOOLS]) - if(prob(30)) - paper.info = "HONK HONK HONK HONK HONK HONK HONK
HOOOOOOOOOOOOOOOOOOOOOONK
APRIL FOOLS
" -// paper.AddElement(/datum/element/honkspam) - return paper + if(!mapload) + return + var/obj/item/pen/P = locate(/obj/item/pen) in src.loc + if(P && !bin_pen) + P.forceMove(src) + bin_pen = P + update_icon() /obj/item/paper_bin/Destroy() - QDEL_LIST(papers) + if(papers) + for(var/i in papers) + qdel(i) + papers = null . = ..() -/obj/item/paper_bin/proc/dump_contents(atom/droppoint, collapse = FALSE) - if(!droppoint) - droppoint = drop_location() - if(collapse) - visible_message(span_warning("The stack of paper collapses!")) - for(var/atom/movable/movable_atom in contents) - movable_atom.forceMove(droppoint) - if(!movable_atom.pixel_y) - movable_atom.pixel_y = rand(-3,3) - if(!movable_atom.pixel_x) - movable_atom.pixel_x = rand(-3,3) - LAZYNULL(papers) - update_icon() - /obj/item/paper_bin/fire_act(exposed_temperature, exposed_volume) - if(LAZYLEN(papers)) - LAZYNULL(papers) + if(total_paper) + total_paper = 0 update_icon() ..() -/obj/item/paper_bin/attack_paw(mob/user, list/modifiers) - return attack_hand(user, modifiers) +/obj/item/paper_bin/MouseDrop(atom/over_object) + . = ..() + var/mob/living/M = usr + if(!istype(M) || M.incapacitated() || !Adjacent(M)) + return + + if(over_object == M) + M.put_in_hands(src) + + else if(istype(over_object, /obj/screen/inventory/hand)) + var/obj/screen/inventory/hand/H = over_object + M.putItemFromInventoryInHandIfPossible(src, H.held_index) + + add_fingerprint(M) + +/obj/item/paper_bin/attack_paw(mob/user) + return attack_hand(user) //ATTACK HAND IGNORING PARENT RETURN VALUE -/obj/item/paper_bin/attack_hand(mob/user, list/modifiers) +/obj/item/paper_bin/on_attack_hand(mob/user) if(isliving(user)) - var/mob/living/living_mob = user - if(!(living_mob.mobility_flags & MOBILITY_PICKUP)) + var/mob/living/L = user + if(!(L.mobility_flags & MOBILITY_PICKUP)) return - user.DelayNextAction(CLICK_CD_RAPID) - if(at_overlay_limit()) - dump_contents(drop_location(), TRUE) - return + // user.changeNext_move(CLICK_CD_MELEE) if(bin_pen) - var/obj/item/pen/pen = bin_pen - pen.add_fingerprint(user) - pen.forceMove(user.loc) - user.put_in_hands(pen) - to_chat(user, span_notice("You take [pen] out of [src].")) + var/obj/item/pen/P = bin_pen + P.add_fingerprint(user) + P.forceMove(user.loc) + user.put_in_hands(P) + to_chat(user, "You take [P] out of \the [src].") bin_pen = null update_icon() - else if(LAZYLEN(papers)) - var/obj/item/paper/top_paper = papers[papers.len] - LAZYREMOVE(papers, top_paper) - top_paper.add_fingerprint(user) - top_paper.forceMove(user.loc) - user.put_in_hands(top_paper) - to_chat(user, span_notice("You take [top_paper] out of [src].")) + else if(total_paper >= 1) + total_paper-- update_icon() + // If there's any custom paper on the stack, use that instead of creating a new paper. + var/obj/item/paper/P + if(papers.len > 0) + P = papers[papers.len] + papers.Remove(P) + else + P = new papertype(src) +/* if(SSevents.holidays && SSevents.holidays[APRIL_FOOLS]) + if(prob(30)) + P.info = "HONK HONK HONK HONK HONK HONK HONK
HOOOOOOOOOOOOOOOOOOOOOONK
APRIL FOOLS
" + P.AddComponent(/datum/component/honkspam)*/ + + P.add_fingerprint(user) + P.forceMove(user.loc) + user.put_in_hands(P) + to_chat(user, "You take [P] out of \the [src].") else - to_chat(user, span_warning("[src] is empty!")) + to_chat(user, "[src] is empty!") add_fingerprint(user) return ..() /obj/item/paper_bin/attackby(obj/item/I, mob/user, params) - if(at_overlay_limit()) - dump_contents(drop_location(), TRUE) - return if(istype(I, /obj/item/paper)) - var/obj/item/paper/paper = I - if(!user.transferItemToLoc(paper, src)) + var/obj/item/paper/P = I + if(!user.transferItemToLoc(P, src)) return - to_chat(user, span_notice("You put [paper] in [src].")) - LAZYADD(papers, paper) + to_chat(user, "You put [P] in [src].") + papers.Add(P) + total_paper++ update_icon() else if(istype(I, /obj/item/pen) && !bin_pen) - var/obj/item/pen/pen = I - if(!user.transferItemToLoc(pen, src)) + var/obj/item/pen/P = I + if(!user.transferItemToLoc(P, src)) return - to_chat(user, span_notice("You put [pen] in [src].")) - bin_pen = pen + to_chat(user, "You put [P] in [src].") + bin_pen = P update_icon() else return ..() -/obj/item/paper_bin/proc/at_overlay_limit() - return overlays.len >= MAX_ATOM_OVERLAYS - 1 - /obj/item/paper_bin/examine(mob/user) . = ..() if(total_paper) - . += "It contains [total_paper > 1 ? "[total_paper] papers" : "one paper"]." + . += "It contains [total_paper > 1 ? "[total_paper] papers" : " one paper"]." else . += "It doesn't contain anything." + /obj/item/paper_bin/update_icon_state() if(total_paper < 1) icon_state = "paper_bin0" else icon_state = "[initial(icon_state)]" - return ..() /obj/item/paper_bin/update_overlays() . = ..() - - total_paper = LAZYLEN(papers) - - if(bin_pen) - pen_overlay = mutable_appearance(bin_pen.icon, bin_pen.icon_state) - - if(!bin_overlay) - bin_overlay = mutable_appearance(icon, bin_overlay_string) - - if(LAZYLEN(papers)) - for(var/paper_number in 1 to papers.len) - if(paper_number != papers.len && paper_number % PAPERS_PER_OVERLAY != 0) //only top paper and every nth paper get overlays - continue - var/obj/item/paper/current_paper = papers[paper_number] - var/mutable_appearance/paper_overlay = mutable_appearance(current_paper.icon, current_paper.icon_state) - paper_overlay.color = current_paper.color - paper_overlay.pixel_y = paper_number/PAPERS_PER_OVERLAY - PAPER_OVERLAY_PIXEL_SHIFT //gives the illusion of stacking - . += paper_overlay - if(paper_number == papers.len) //this is our top paper - . += current_paper.overlays //add overlays only for top paper - if(istype(src, /obj/item/paper_bin/bundlenatural)) - bin_overlay.pixel_y = paper_overlay.pixel_y //keeps binding centred on stack - if(bin_pen) - pen_overlay.pixel_y = paper_overlay.pixel_y //keeps pen on top of stack - . += bin_overlay - if(bin_pen) - . += pen_overlay + . += mutable_appearance(bin_pen.icon, bin_pen.icon_state) /obj/item/paper_bin/construction name = "construction paper bin" desc = "Contains all the paper you'll never need, IN COLOR!" + icon_state = "paper_binc" papertype = /obj/item/paper/construction /obj/item/paper_bin/bundlenatural name = "natural paper bundle" desc = "A bundle of paper created using traditional methods." - icon_state = null + icon_state = "paper_bundle" papertype = /obj/item/paper/natural resistance_flags = FLAMMABLE - bin_overlay_string = "paper_bundle_overlay" - ///Cable this bundle is held together with. - var/obj/item/stack/cable_coil/binding_cable - -/obj/item/paper_bin/bundlenatural/Initialize(mapload) - binding_cable = new /obj/item/stack/cable_coil(src, 2) - binding_cable.color = "Orange" - binding_cable.desc += " Non-natural." - return ..() -/obj/item/paper_bin/bundlenatural/dump_contents(atom/droppoint) - . = ..() - qdel(src) - -/obj/item/paper_bin/bundlenatural/update_overlays() - bin_overlay = mutable_appearance(icon, bin_overlay_string) - bin_overlay.color = binding_cable.color - return ..() - -/obj/item/paper_bin/bundlenatural/attack_hand(mob/user, list/modifiers) - . = ..() - if(!LAZYLEN(papers)) - deconstruct(FALSE) - -/obj/item/paper_bin/bundlenatural/deconstruct(disassembled) - dump_contents() - return ..() +/obj/item/paper_bin/bundlenatural/on_attack_hand(mob/user) + if(total_paper < 1) + qdel(src) /obj/item/paper_bin/bundlenatural/fire_act(exposed_temperature, exposed_volume) qdel(src) /obj/item/paper_bin/bundlenatural/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/paper/carbon)) - to_chat(user, span_warning("[W] won't fit into [src].")) - return if(W.get_sharpness()) - if(W.use_tool(src, user, 1 SECONDS)) - to_chat(user, span_notice("You slice the cable from [src].")) - deconstruct(TRUE) + to_chat(user, "You snip \the [src], spilling paper everywhere.") + var/turf/T = get_turf(src.loc) + while(total_paper > 0) + total_paper-- + var/obj/item/paper/P + if(papers.len > 0) + P = papers[papers.len] + papers -= P + else + P = new papertype() + P.forceMove(T) + CHECK_TICK + qdel(src) else ..() /obj/item/paper_bin/carbon name = "carbon paper bin" desc = "Contains all the paper you'll ever need, in duplicate!" - icon_state = "paper_bin_carbon0" + icon_state = "paper_bin_carbon" papertype = /obj/item/paper/carbon - bin_overlay_string = "paper_bin_carbon_overlay" - -#undef PAPERS_PER_OVERLAY -#undef PAPER_OVERLAY_PIXEL_SHIFT diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 00ad0a61d36..53fe886d654 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -55,7 +55,7 @@ /obj/item/paperplane/suicide_act(mob/living/user) var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES) user.Stun(200) - user.visible_message(span_suicide("[user] jams [src] in [user.p_their()] nose. It looks like [user.p_theyre()] trying to commit suicide!")) + user.visible_message("[user] jams [src] in [user.p_their()] nose. It looks like [user.p_theyre()] trying to commit suicide!") user.adjust_blurriness(6) if(eyes) eyes.applyOrganDamage(rand(6,8)) @@ -70,7 +70,7 @@ . += "paperplane_[S]" /obj/item/paperplane/attack_self(mob/user) - to_chat(user, span_notice("You unfold [src].")) + to_chat(user, "You unfold [src].") var/obj/item/paper/internal_paper_tmp = internalPaper internal_paper_tmp.forceMove(loc) internalPaper = null @@ -81,7 +81,7 @@ if(burn_paper_product_attackby_check(P, user)) return if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) - to_chat(user, span_warning("You should unfold [src] before changing it!")) + to_chat(user, "You should unfold [src] before changing it!") return else if(istype(P, /obj/item/stamp)) //we don't randomize stamps on a paperplane @@ -111,7 +111,7 @@ if(prob(hit_probability)) if(H.is_eyes_covered()) return - visible_message(span_danger("\The [src] hits [H] in the eye[eyes ? "" : " socket"]!")) + visible_message("\The [src] hits [H] in the eye[eyes ? "" : " socket"]!") H.adjust_blurriness(6) eyes?.applyOrganDamage(rand(6,8)) H.DefaultCombatKnockdown(40) @@ -119,7 +119,7 @@ /obj/item/paper/examine(mob/user) . = ..() - . += span_notice("Alt-click [src] to fold it into a paper plane.") + . += "Alt-click [src] to fold it into a paper plane." /obj/item/paper/AltClick(mob/living/carbon/user, obj/item/I) if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) @@ -127,9 +127,9 @@ if(istype(src, /obj/item/paper/carbon)) var/obj/item/paper/carbon/Carbon = src if(!Carbon.iscopy && !Carbon.copied) - to_chat(user, span_notice("Take off the carbon copy first.")) + to_chat(user, "Take off the carbon copy first.") return - to_chat(user, span_notice("You fold [src] into the shape of a plane!")) + to_chat(user, "You fold [src] into the shape of a plane!") user.temporarilyRemoveItemFromInventory(src) var/obj/item/paperplane/plane_type = /obj/item/paperplane //Origami Master diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 08aa8db36b9..37bb0dfaeed 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -11,7 +11,7 @@ * Pens */ /obj/item/pen - desc = "It's a normal black ink pen." + desc = "It's a normal black ink pen. Alt-click to change your grip on the pen." name = "pen" icon = 'icons/obj/bureaucracy.dmi' icon_state = "pen" @@ -33,8 +33,9 @@ sharpness = SHARP_POINTY var/naming = FALSE + /obj/item/pen/suicide_act(mob/user) - user.visible_message(span_suicide("[user] is scribbling numbers all over [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit sudoku...")) + user.visible_message("[user] is scribbling numbers all over [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit sudoku...") return(BRUTELOSS) /obj/item/pen/blue @@ -70,7 +71,7 @@ colour = "blue" else colour = "black" - to_chat(user, span_notice("\The [src] will now write in [colour].")) + to_chat(user, "\The [src] will now write in [colour].") desc = "It's a fancy four-color ink pen, set to [colour]." /obj/item/pen/fountain @@ -127,7 +128,7 @@ var/deg = input(user, "What angle would you like to rotate the pen head to? (1-360)", "Rotate Pen Head") as null|num if(deg && (deg > 0 && deg <= 360)) degrees = deg - to_chat(user, span_notice("You rotate the top of the pen to [degrees] degrees.")) + to_chat(user, "You rotate the top of the pen to [degrees] degrees.") SEND_SIGNAL(src, COMSIG_PEN_ROTATED, deg, user) /obj/item/pen/attack(mob/living/M, mob/user,stealth) @@ -136,9 +137,9 @@ if(!force) if(M.can_inject(user, 1)) - to_chat(user, span_warning("You stab [M] with the pen.")) + to_chat(user, "You stab [M] with the pen.") if(!stealth) - to_chat(M, span_danger("You feel a tiny prick!")) + to_chat(M, "You feel a tiny prick!") . = 1 log_combat(user, M, "stabbed", src) @@ -189,7 +190,7 @@ return O.desc = input to_chat(user, "You have successfully changed \the [O.name]'s description.") - else + else return /* * Sleepypens @@ -234,9 +235,9 @@ /obj/item/pen/edagger/suicide_act(mob/user) . = BRUTELOSS if(on) - user.visible_message(span_suicide("[user] forcefully rams the pen into their mouth!")) + user.visible_message("[user] forcefully rams the pen into their mouth!") else - user.visible_message(span_suicide("[user] is holding a pen up to their mouth! It looks like [user.p_theyre()] trying to commit suicide!")) + user.visible_message("[user] is holding a pen up to their mouth! It looks like [user.p_theyre()] trying to commit suicide!") attack_self(user) /obj/item/pen/edagger/attack_self(mob/living/user) @@ -250,18 +251,18 @@ embedding = list(embed_chance = EMBED_CHANCE) throwforce = initial(throwforce) playsound(user, 'sound/weapons/saberoff.ogg', 5, TRUE) - to_chat(user, span_warning("[src] can now be concealed.")) + to_chat(user, "[src] can now be concealed.") else on = TRUE - force = 30 + force = 18 throw_speed = 4 w_class = WEIGHT_CLASS_NORMAL name = "energy dagger" hitsound = 'sound/weapons/blade1.ogg' embedding = list(embed_chance = 100) //rule of cool - throwforce = 45 + throwforce = 35 playsound(user, 'sound/weapons/saberon.ogg', 5, TRUE) - to_chat(user, span_warning("[src] is now active.")) + to_chat(user, "[src] is now active.") updateEmbedding() update_icon() diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 1102ce339ed..19f7e00eaf6 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -89,27 +89,27 @@ // Copying paper, photos, documents and asses. if("make_copy") if(busy) - to_chat(usr, span_warning("[src] is currently busy copying something. Please wait until it is finished.")) + to_chat(usr, "[src] is currently busy copying something. Please wait until it is finished.") return FALSE if(paper_copy) if(!length(paper_copy.info)) - to_chat(usr, span_warning("An error message flashes across [src]'s screen: \"The supplied paper is blank. Aborting.\"")) + to_chat(usr, "An error message flashes across [src]'s screen: \"The supplied paper is blank. Aborting.\"") return FALSE // Basic paper if(istype(paper_copy, /obj/item/paper)) - do_copy_loop(CALLBACK(src, PROC_REF(make_paper_copy)), usr) + do_copy_loop(CALLBACK(src, .proc/make_paper_copy), usr) return TRUE // Devil contract paper. if(istype(paper_copy, /obj/item/paper/contract/employment)) - do_copy_loop(CALLBACK(src, PROC_REF(make_devil_paper_copy)), usr) + do_copy_loop(CALLBACK(src, .proc/make_devil_paper_copy), usr) return TRUE // Copying photo. if(photo_copy) - do_copy_loop(CALLBACK(src, PROC_REF(make_photo_copy)), usr) + do_copy_loop(CALLBACK(src, .proc/make_photo_copy), usr) return TRUE // Copying Documents. if(document_copy) - do_copy_loop(CALLBACK(src, PROC_REF(make_document_copy)), usr) + do_copy_loop(CALLBACK(src, .proc/make_document_copy), usr) return TRUE // Remove the paper/photo/document from the photocopier. @@ -124,17 +124,17 @@ remove_photocopy(document_copy, usr) document_copy = null else if(check_ass()) - to_chat(ass, span_notice("You feel a slight pressure on your ass.")) + to_chat(ass, "You feel a slight pressure on your ass.") return TRUE // AI printing photos from their saved images. if("ai_photo") if(busy) - to_chat(usr, span_warning("[src] is currently busy copying something. Please wait until it is finished.")) + to_chat(usr, "[src] is currently busy copying something. Please wait until it is finished.") return FALSE var/mob/living/silicon/ai/tempAI = usr if(!length(tempAI.aicamera.stored)) - to_chat(usr, span_boldannounce("No images saved.")) + to_chat(usr, "No images saved.") return var/datum/picture/selection = tempAI.aicamera.selectpicture(usr) var/obj/item/photo/photo = new(loc, selection) // AI prints color photos only. @@ -189,7 +189,7 @@ // break addtimer(copy_cb, i SECONDS) num_loops++ - addtimer(CALLBACK(src, PROC_REF(reset_busy)), num_loops SECONDS) + addtimer(CALLBACK(src, .proc/reset_busy), num_loops SECONDS) /** * Sets busy to `FALSE`. Created as a proc so it can be used in callbacks. @@ -284,7 +284,7 @@ */ /obj/machinery/photocopier/proc/do_insertion(obj/item/object, mob/user) object.forceMove(src) - to_chat(user, span_notice("You insert [object] into [src].")) + to_chat(user, "You insert [object] into [src].") flick("photocopier1", src) /** @@ -303,7 +303,7 @@ user.put_in_hands(object) else object.forceMove(drop_location()) - to_chat(user, span_notice("You take [object] out of [src]. [busy ? "The [src] comes to a halt." : ""]")) + to_chat(user, "You take [object] out of [src]. [busy ? "The [src] comes to a halt." : ""]") /obj/machinery/photocopier/attackby(obj/item/O, mob/user, params) if(default_unfasten_wrench(user, O)) @@ -312,7 +312,7 @@ else if(istype(O, /obj/item/paper)) if(copier_empty()) if(istype(O, /obj/item/paper/contract/infernal)) - to_chat(user, span_warning("[src] smokes, smelling of brimstone!")) + to_chat(user, "[src] smokes, smelling of brimstone!") resistance_flags |= FLAMMABLE fire_act() else @@ -321,7 +321,7 @@ paper_copy = O do_insertion(O, user) else - to_chat(user, span_warning("There is already something in [src]!")) + to_chat(user, "There is already something in [src]!") else if(istype(O, /obj/item/photo)) if(copier_empty()) @@ -330,7 +330,7 @@ photo_copy = O do_insertion(O, user) else - to_chat(user, span_warning("There is already something in [src]!")) + to_chat(user, "There is already something in [src]!") else if(istype(O, /obj/item/documents)) if(copier_empty()) @@ -339,18 +339,18 @@ document_copy = O do_insertion(O, user) else - to_chat(user, span_warning("There is already something in [src]!")) + to_chat(user, "There is already something in [src]!") else if(istype(O, /obj/item/toner)) if(toner_cartridge) - to_chat(user, span_warning("[src] already has a toner cartridge inserted. Remove that one first.")) + to_chat(user, "[src] already has a toner cartridge inserted. Remove that one first.") return O.forceMove(src) toner_cartridge = O - to_chat(user, span_notice("You insert [O] into [src].")) + to_chat(user, "You insert [O] into [src].") else if(istype(O, /obj/item/areaeditor/blueprints)) - to_chat(user, span_warning("The Blueprint is too large to put into the copier. You need to find something else to record the document.")) + to_chat(user, "The Blueprint is too large to put into the copier. You need to find something else to record the document.") else return ..() @@ -366,35 +366,35 @@ return add_fingerprint(user) if(target == user) - user.visible_message(span_notice("[user] starts climbing onto the photocopier!"), span_notice("You start climbing onto the photocopier...")) + user.visible_message("[user] starts climbing onto the photocopier!", "You start climbing onto the photocopier...") else - user.visible_message(span_warning("[user] starts putting [target] onto the photocopier!"), span_notice("You start putting [target] onto the photocopier...")) + user.visible_message("[user] starts putting [target] onto the photocopier!", "You start putting [target] onto the photocopier...") if(do_after(user, 20, target = src)) if(!target || QDELETED(target) || QDELETED(src) || !Adjacent(target)) //check if the photocopier/target still exists. return if(target == user) - user.visible_message(span_notice("[user] climbs onto the photocopier!"), span_notice("You climb onto the photocopier.")) + user.visible_message("[user] climbs onto the photocopier!", "You climb onto the photocopier.") else - user.visible_message(span_warning("[user] puts [target] onto the photocopier!"), span_notice("You put [target] onto the photocopier.")) + user.visible_message("[user] puts [target] onto the photocopier!", "You put [target] onto the photocopier.") target.forceMove(drop_location()) ass = target if(photo_copy) photo_copy.forceMove(drop_location()) - visible_message(span_warning("[photo_copy] is shoved out of the way by [ass]!")) + visible_message("[photo_copy] is shoved out of the way by [ass]!") photo_copy = null else if(paper_copy) paper_copy.forceMove(drop_location()) - visible_message(span_warning("[paper_copy] is shoved out of the way by [ass]!")) + visible_message("[paper_copy] is shoved out of the way by [ass]!") paper_copy = null else if(document_copy) document_copy.forceMove(drop_location()) - visible_message(span_warning("[document_copy] is shoved out of the way by [ass]!")) + visible_message("[document_copy] is shoved out of the way by [ass]!") document_copy = null /obj/machinery/photocopier/Exited(atom/movable/AM, atom/newloc) diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 5796005153a..58e3adab7eb 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -16,7 +16,7 @@ // attack_verb_simple = list("stamp") /obj/item/stamp/suicide_act(mob/user) - user.visible_message(span_suicide("[user] stamps 'VOID' on [user.p_their()] forehead, then promptly falls over, dead.")) + user.visible_message("[user] stamps 'VOID' on [user.p_their()] forehead, then promptly falls over, dead.") return (OXYLOSS) /obj/item/stamp/qm diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm index e685423bdd0..0e553ced352 100644 --- a/code/modules/paperwork/ticketmachine.dm +++ b/code/modules/paperwork/ticketmachine.dm @@ -26,19 +26,19 @@ return var/obj/item/multitool/M = I M.buffer = src - to_chat(user, span_notice("You store linkage information in [I]'s buffer.")) + to_chat(user, "You store linkage information in [I]'s buffer.") return TRUE /obj/machinery/ticket_machine/emag_act(mob/user) //Emag the ticket machine to dispense burning tickets, as well as randomize its number to destroy the HoP's mind. if(obj_flags & EMAGGED) return - to_chat(user, span_warning("You overload [src]'s bureaucratic logic circuitry to its MAXIMUM setting.")) + to_chat(user, "You overload [src]'s bureaucratic logic circuitry to its MAXIMUM setting.") ticket_number = rand(0,max_number) current_number = ticket_number obj_flags |= EMAGGED if(tickets.len) for(var/obj/item/ticket_machine_ticket/ticket in tickets) - ticket.audible_message(span_notice("\the [ticket] disperses!")) + ticket.audible_message("\the [ticket] disperses!") qdel(ticket) tickets.Cut() update_icon() @@ -51,14 +51,14 @@ if(current_number > ticket_number) return if(current_number && !(obj_flags & EMAGGED) && tickets[current_number]) - tickets[current_number].audible_message(span_notice("\the [tickets[current_number]] disperses!")) + tickets[current_number].audible_message("\the [tickets[current_number]] disperses!") qdel(tickets[current_number]) if(current_number < ticket_number) current_number ++ //Increment the one we're serving. playsound(src, 'sound/misc/announce_dig.ogg', 50, FALSE) say("Now serving ticket #[current_number]!") if(!(obj_flags & EMAGGED) && tickets[current_number]) - tickets[current_number].audible_message(span_notice("\the [tickets[current_number]] vibrates!")) + tickets[current_number].audible_message("\the [tickets[current_number]] vibrates!") update_icon() //Update our icon here rather than when they take a ticket to show the current ticket number being served /obj/machinery/button/ticket_machine @@ -84,7 +84,7 @@ controller.linked = M.buffer id = null controller.id = null - to_chat(user, span_warning("You've linked [src] to [controller.linked].")) + to_chat(user, "You've linked [src] to [controller.linked].") /obj/item/assembly/control/ticket_machine name = "ticket machine controller" @@ -140,17 +140,17 @@ ..() if(istype(I, /obj/item/hand_labeler_refill)) if(!(ticket_number >= max_number)) - to_chat(user, span_notice("[src] refuses [I]! There [max_number-ticket_number==1 ? "is" : "are"] still [max_number-ticket_number] ticket\s left!")) + to_chat(user, "[src] refuses [I]! There [max_number-ticket_number==1 ? "is" : "are"] still [max_number-ticket_number] ticket\s left!") return - to_chat(user, span_notice("You start to refill [src]'s ticket holder (doing this will reset its ticket count!).")) + to_chat(user, "You start to refill [src]'s ticket holder (doing this will reset its ticket count!).") if(do_after(user, 30, target = src)) - to_chat(user, span_notice("You insert [I] into [src] as it whirs nondescriptly.")) + to_chat(user, "You insert [I] into [src] as it whirs nondescriptly.") qdel(I) ticket_number = 0 current_number = 0 if(tickets.len) for(var/obj/item/ticket_machine_ticket/ticket in tickets) - ticket.audible_message(span_notice("\the [ticket] disperses!")) + ticket.audible_message("\the [ticket] disperses!") qdel(ticket) tickets.Cut() max_number = initial(max_number) @@ -162,21 +162,21 @@ /obj/machinery/ticket_machine/attack_hand(mob/living/carbon/user) . = ..() - INVOKE_ASYNC(src, PROC_REF(attempt_ticket), user) + INVOKE_ASYNC(src, .proc/attempt_ticket, user) /obj/machinery/ticket_machine/proc/attempt_ticket(mob/living/carbon/user) if(!ready) - to_chat(user,span_warning("You press the button, but nothing happens...")) + to_chat(user,"You press the button, but nothing happens...") return if(ticket_number >= max_number) - to_chat(user,span_warning("Ticket supply depleted, please refill this unit with a hand labeller refill cartridge!")) + to_chat(user,"Ticket supply depleted, please refill this unit with a hand labeller refill cartridge!") return if((user in ticket_holders) && !(obj_flags & EMAGGED)) - to_chat(user, span_warning("You already have a ticket!")) + to_chat(user, "You already have a ticket!") return playsound(src, 'sound/machines/terminal_insert_disc.ogg', 100, FALSE) ticket_number ++ - to_chat(user, span_notice("You take a ticket from [src], looks like you're ticket number #[ticket_number]...")) + to_chat(user, "You take a ticket from [src], looks like you're ticket number #[ticket_number]...") var/obj/item/ticket_machine_ticket/theirticket = new /obj/item/ticket_machine_ticket(get_turf(src)) theirticket.name = "Ticket #[ticket_number]" theirticket.maptext = "[ticket_number]" @@ -189,7 +189,7 @@ tickets += theirticket if(obj_flags & EMAGGED) //Emag the machine to destroy the HOP's life. ready = FALSE - addtimer(CALLBACK(src, PROC_REF(reset_cooldown)), cooldown)//Small cooldown to prevent piles of flaming tickets + addtimer(CALLBACK(src, .proc/reset_cooldown), cooldown)//Small cooldown to prevent piles of flaming tickets theirticket.fire_act() user.dropItemToGround(theirticket) user.adjust_fire_stacks(1) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index da5fc403d85..8865f03c61b 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -163,8 +163,8 @@ reagent_state = SOLID color = "#FFFFFF" // rgb: 255, 255, 255 taste_mult = 1.5 // stop sugar drowning out other flavours - nutriment_factor = 3 * REAGENTS_METABOLISM - metabolization_rate = 2 * REAGENTS_METABOLISM + nutriment_factor = 2 * REAGENTS_METABOLISM + metabolization_rate = 5 * REAGENTS_METABOLISM overdose_threshold = 200 // Hyperglycaemic shock taste_description = "sweetness" value = REAGENT_VALUE_NONE @@ -179,13 +179,13 @@ /datum/reagent/consumable/sugar/overdose_start(mob/living/M) to_chat(M, span_userdanger("You go into hyperglycaemic shock! Lay off the twinkies!")) - M.AdjustSleeping(600, FALSE) - . = 1 + M.AdjustSleeping(20 SECONDS) + . = TRUE -/datum/reagent/consumable/sugar/overdose_process(mob/living/M) - M.AdjustSleeping(40, FALSE) +/datum/reagent/consumable/sugar/overdose_process(mob/living/M, seconds_per_tick, times_fired) + M.drowsyness = max((5 SECONDS * REM * seconds_per_tick), 60 SECONDS) ..() - . = 1 + . = TRUE /datum/reagent/consumable/virus_food name = "Virus Food" diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 99f79d31d5e..2c3811e81f9 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -27,6 +27,9 @@ /datum/language/dwarf, /datum/language/tribal, /datum/language/signlanguage, + /datum/language/spanish, + /datum/language/chinese, + /datum/language/japanese, )) healing_factor = STANDARD_ORGAN_HEALING*5 //Fast!! decay_factor = STANDARD_ORGAN_DECAY/2 diff --git a/code/modules/vehicles/rubbish.dm b/code/modules/vehicles/rubbish.dm index b412dcdeb59..91502081985 100644 --- a/code/modules/vehicles/rubbish.dm +++ b/code/modules/vehicles/rubbish.dm @@ -94,7 +94,7 @@ /obj/structure/car/rubbish3 name = "pre-War rubbish" - desc = "A rusty pre-War automobile carcass.
This car is damaged beyond repair." + desc = "A rusty pre-War automobile carcass.
This car might be repairable." icon = 'icons/fallout/objects/structures/rubish.dmi' icon_state = "car_rubish3" anchored = 1 diff --git a/code/modules/vehicles/wasteland/vehicle_fuel.dm b/code/modules/vehicles/wasteland/vehicle_fuel.dm index 2ea703f33c1..900b6a492ee 100644 --- a/code/modules/vehicles/wasteland/vehicle_fuel.dm +++ b/code/modules/vehicles/wasteland/vehicle_fuel.dm @@ -90,6 +90,86 @@ icon = 'icons/mecha/mech_bay.dmi' icon_state = "jerrycan" reagent_flags = OPENCONTAINER + var/open_tap = FALSE + var/raggeted = FALSE + var/active = FALSE + +/obj/item/reagent_containers/jerrycan/bullet_act(obj/item/projectile/P) + . = ..() + make_boom() + qdel(src) + +/obj/item/reagent_containers/jerrycan/ex_act() + make_boom() + . = ..() + +/obj/item/reagent_containers/jerrycan/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + if(open_tap) + SplashReagents(hit_atom) + . = ..() + + +/obj/item/reagent_containers/jerrycan/attackby(obj/item/I, mob/user, params) + if(I.get_temperature() && !active && raggeted) + active = TRUE + var/message = "[ADMIN_LOOKUP(user)] has primed a [name] for detonation at [ADMIN_VERBOSEJMP(user)]." + GLOB.bombers += message + message_admins(message) + log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(user)].") + to_chat(user, span_info("You light [src] on fire.")) + icon_state = initial(icon_state) + "_active" + addtimer(CALLBACK(src, PROC_REF(splash_and_boom)), 5 SECONDS) + if(istype(I, /obj/item/stack/sheet/cloth)) + if(open_tap) + raggeted = TRUE + icon_state = initial(icon_state) + "_raggeted" + to_chat(usr, span_notice("You insert a cloth rag into the jerrycan.")) + I.use(1) + +/obj/item/reagent_containers/jerrycan/proc/make_boom() + var/boomsize + var/extra_boom = 1 + for(var/datum/reagent/reagent_in_bottle as anything in reagents.reagent_list) + if(reagent_in_bottle.volume < 1) + continue + if(!(istype(reagent_in_bottle, /datum/reagent/fuel))) + continue + boomsize = 5 * (reagent_in_bottle.volume / volume) + if(boomsize >= 1 || extra_boom) + explosion(get_turf(src),-1, -1, extra_boom, flame_range = (boomsize + extra_boom)) + reagents.remove_all(reagents.total_volume) + + +/obj/item/reagent_containers/jerrycan/proc/splash_and_boom() + if(QDELETED(src) || !active || isnull(loc)) + return + var/atom/target = loc + if(!isturf(target) && !isturf(target.loc)) + for(var/i in 1 to 3) + target = target.loc + if(isturf(target.loc)) + break + if(!isturf(target)) + target = get_turf(target) // Too deep, let's just bypass to the end. + make_boom() + if(!QDELETED(src)) + SplashReagents(target) + +/obj/item/reagent_containers/jerrycan/attack_self(mob/user) + if(active) + to_chat(user, span_info("You snuff out the flame on [src].")) + icon_state = initial(icon_state) + "_raggeted" + active = FALSE + else if (raggeted) + raggeted = FALSE + icon_state = initial(icon_state) + to_chat(user, span_info("You take out the ruined cloth rag from the [src].")) + else + open_tap = !open_tap + spillable = open_tap + to_chat(user, span_info("You [(open_tap)?"remove":"put"] the tap on [src].")) + + /obj/item/reagent_containers/fuel_tank name = "fuel tank" diff --git a/fallout/code/modules/client/loadout/hands.dm b/fallout/code/modules/client/loadout/hands.dm index 7863e4b4f68..97412ba488f 100644 --- a/fallout/code/modules/client/loadout/hands.dm +++ b/fallout/code/modules/client/loadout/hands.dm @@ -260,8 +260,3 @@ name = "headset" path = /obj/item/radio/headset cost = 1 - -/datum/gear/storage/box/chinaman - name = "Chinese Stealth Suit Costume" - path = /obj/item/storage/box/large/custom_kit/mrmannstealthsuit - cost = 3 diff --git a/hailmary.dme b/hailmary.dme index 9d0266db418..9c84f298fb0 100644 --- a/hailmary.dme +++ b/hailmary.dme @@ -559,6 +559,7 @@ #include "code\datums\components\crafting\recipes\recipes_tribal.dm" #include "code\datums\components\crafting\recipes\recipes_weapon_and_ammo.dm" #include "code\datums\components\crafting\recipes\vehicle_parts.dm" +#include "code\datums\components\crafting\recipes\vehicle_crafts.dm" #include "code\datums\components\fantasy\_fantasy.dm" #include "code\datums\components\fantasy\affix.dm" #include "code\datums\components\fantasy\prefixes.dm" @@ -582,6 +583,7 @@ #include "code\datums\components\storage\concrete\necks.dm" #include "code\datums\components\storage\concrete\pockets.dm" #include "code\datums\components\storage\concrete\rped.dm" +#include "code\datums\components\storage\concrete\trunk.dm" #include "code\datums\components\storage\concrete\special.dm" #include "code\datums\components\storage\concrete\stack.dm" #include "code\datums\diseases\_disease.dm" @@ -998,6 +1000,7 @@ #include "code\game\mecha\combat\marauder.dm" #include "code\game\mecha\combat\neovgre.dm" #include "code\game\mecha\combat\phazon.dm" +#include "code\game\mecha\combat\combatvehicle.dm" #include "code\game\mecha\equipment\mecha_equipment.dm" #include "code\game\mecha\equipment\tools\medical_tools.dm" #include "code\game\mecha\equipment\tools\mining_tools.dm" @@ -1010,6 +1013,7 @@ #include "code\game\mecha\medical\odysseus.dm" #include "code\game\mecha\working\ripley.dm" #include "code\game\mecha\working\working.dm" +#include "code\game\mecha\working\normalvehicle.dm" #include "code\game\objects\buckling.dm" #include "code\game\objects\empulse.dm" #include "code\game\objects\hand_items.dm" @@ -2407,28 +2411,11 @@ #include "code\modules\keybindings\keybind\movement.dm" #include "code\modules\keybindings\keybind\robot.dm" #include "code\modules\keybindings\keybind\targeting.dm" -#include "code\modules\language\aphasia.dm" -#include "code\modules\language\beachbum.dm" -#include "code\modules\language\codespeak.dm" -#include "code\modules\language\common.dm" -#include "code\modules\language\draconic.dm" -#include "code\modules\language\drone.dm" -#include "code\modules\language\dwarven.dm" +#include "code\modules\language\f13languages.dm" #include "code\modules\language\language.dm" #include "code\modules\language\language_holder.dm" #include "code\modules\language\language_menu.dm" -#include "code\modules\language\machine.dm" -#include "code\modules\language\monkey.dm" -#include "code\modules\language\mushroom.dm" -#include "code\modules\language\narsian.dm" -#include "code\modules\language\ratvarian.dm" -#include "code\modules\language\slime.dm" -#include "code\modules\language\swarmer.dm" -#include "code\modules\language\sylvan.dm" -#include "code\modules\language\vampiric.dm" -#include "code\modules\language\voltaic.dm" -#include "code\modules\language\wayfarer.dm" -#include "code\modules\language\xenocommon.dm" +#include "code\modules\language\ss13languages.dm" #include "code\modules\library\lib_codex_gigas.dm" #include "code\modules\library\lib_items.dm" #include "code\modules\library\lib_machines.dm" diff --git a/icons/fallout/clothing/armored_medium.dmi b/icons/fallout/clothing/armored_medium.dmi index a5406771fb4..461fd34c2aa 100644 Binary files a/icons/fallout/clothing/armored_medium.dmi and b/icons/fallout/clothing/armored_medium.dmi differ diff --git a/icons/fallout/clothing/hats.dmi b/icons/fallout/clothing/hats.dmi index 4615fbe6227..ebe8a8fbb3f 100644 Binary files a/icons/fallout/clothing/hats.dmi and b/icons/fallout/clothing/hats.dmi differ diff --git a/icons/fallout/onmob/clothes/armor_medium.dmi b/icons/fallout/onmob/clothes/armor_medium.dmi index fa11332458c..1b9f4a7c47d 100644 Binary files a/icons/fallout/onmob/clothes/armor_medium.dmi and b/icons/fallout/onmob/clothes/armor_medium.dmi differ diff --git a/icons/fallout/onmob/clothes/head.dmi b/icons/fallout/onmob/clothes/head.dmi index 6b5aa213aa9..32634b76192 100644 Binary files a/icons/fallout/onmob/clothes/head.dmi and b/icons/fallout/onmob/clothes/head.dmi differ diff --git a/icons/fallout/vehicles/medium_vehicles.dmi b/icons/fallout/vehicles/medium_vehicles.dmi index 8f4f9c12a25..daea1c039f2 100644 Binary files a/icons/fallout/vehicles/medium_vehicles.dmi and b/icons/fallout/vehicles/medium_vehicles.dmi differ diff --git a/icons/mecha/mech_bay.dmi b/icons/mecha/mech_bay.dmi index e328208da8a..7c9e9f1a718 100644 Binary files a/icons/mecha/mech_bay.dmi and b/icons/mecha/mech_bay.dmi differ diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index 05069f90e38..5d363c42658 100644 Binary files a/icons/misc/language.dmi and b/icons/misc/language.dmi differ diff --git a/modular_BD2/blacksmith/code/anvil.dm b/modular_BD2/blacksmith/code/anvil.dm index 35ecf36000c..c29d47d5e05 100644 --- a/modular_BD2/blacksmith/code/anvil.dm +++ b/modular_BD2/blacksmith/code/anvil.dm @@ -29,6 +29,8 @@ #define RECIPE_KATANA "fffff" //fold fold fold fold fold #define RECIPE_WAKI "fffs" //fold fold fold shrink +#define RECIPE_ZWEIHANDER "fffdu" //fold fold fold draw upset + #define RECIPE_MACE "upu" //upset punch upset #define RECIPE_SCRAP "udpp" //upset draw shrink punch #define RECIPE_AXE "udsp" //upset draw shrink punch @@ -36,6 +38,7 @@ #define RECIPE_SPEAR "dddf" //draw draw draw fold #define RECIPE_TRIDENT "ddbf" //draw draw bend fold +#define RECIPE_PIKE "dduf" //draw draw upset fold #define RECIPE_JAVELIN "sdu" //shrink draw upset #define RECIPE_THROWING "sdd" //shrink draw draw @@ -71,10 +74,12 @@ GLOBAL_LIST_INIT(anvil_recipes, list( RECIPE_SCRAPSAW = /obj/item/smithing/scrapsaw, RECIPE_MACE = /obj/item/smithing/macehead, RECIPE_SCRAP = /obj/item/smithing/scrapblade, + RECIPE_ZWEIHANDER = /obj/item/smithing/zweiblade, RECIPE_AXE = /obj/item/smithing/axehead, RECIPE_CRUSHER = /obj/item/smithing/crusherhead, RECIPE_SPEAR = /obj/item/smithing/spearhead, RECIPE_TRIDENT = /obj/item/smithing/tridenthead, + RECIPE_PIKE = /obj/item/smithing/pikehead, RECIPE_JAVELIN = /obj/item/smithing/javelinhead, RECIPE_THROWING = /obj/item/smithing/throwingknife, RECIPE_BOLA = /obj/item/smithing/bola, diff --git a/modular_BD2/blacksmith/code/finished_items.dm b/modular_BD2/blacksmith/code/finished_items.dm index ce3aa5395cb..76d8128cd3d 100644 --- a/modular_BD2/blacksmith/code/finished_items.dm +++ b/modular_BD2/blacksmith/code/finished_items.dm @@ -630,6 +630,46 @@ overlay_state = "hilt_longsword" + + // ------------ ZWEIHANDER ------------ // SCHEISSE, DAS IST DER GROSS BLADEN +/obj/item/twohanded/smithed/zweihander + name = "zweihander" + desc = "Scheiße, das ist ein groß fucking sword!" + icon_state = "zwei_smith" + icon_prefix = "zwei_smith" + wielded_icon = "zwei_smith" + icon_prefix = "zwei_smith" + overlay_state = "hilt_zwei" + attack_speed = MELEE_SPEED_SLOWEST + force = FORCE_SMITH_HIGH + armour_penetration = PIERCING_MODERATE + throwforce = THROWING_POOR + wound_bonus = WOUNDING_BONUS_HUGE + sharpness = SHARP_EDGED + wielded_mult = 1.4 + slot_flags = ITEM_SLOT_BACK + item_flags = ITEM_CAN_PARRY + total_mass = TOTAL_MASS_MEDIEVAL_WEAPON * 3 + hitsound = 'sound/weapons/zweihander.ogg' + block_chance = 20 + block_parry_data = /datum/block_parry_data/smithzweihander + +/datum/block_parry_data/smithzweihander + parry_stamina_cost = 50 + parry_time_active = 10 + parry_time_perfect = 3 + parry_time_perfect_leeway = 3 + parry_failed_stagger_duration = 4 SECONDS + parry_failed_clickcd_duration = 4 SECONDS + parry_time_windup = 1 + parry_time_spindown = 1 + parry_imperfect_falloff_percent = 0 + parry_efficiency_to_counterattack = 100 + parry_efficiency_considered_successful = 120 + parry_efficiency_perfect = 120 + parry_data = list(PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN = 1) + + // ------------ SCRAP BLADE ------------ // [AP 0.2 Parry] /obj/item/twohanded/smithed/katana/scrapblade name = "scrap blade" @@ -753,6 +793,29 @@ inhand_y_dimension = 64 +// ------------ PIKE ------------ // [Reach+1, armor pen] +/obj/item/twohanded/smithed/spear/pike + name = "pike" + desc = "A spear, but more. This very long weapon has even more reach than a normal spear but is a bit unwieldy to use, downright impossible up close." + icon_state = "pike_smith" + overlay_state = "shaft_pike" + wielded_icon = "pike_smith_wield" + icon_prefix = "pike_smith" + force = (FORCE_SMITH_REACH-2) + wielded_mult = 1.5 + throwforce = THROWING_POOR + wound_bonus = WOUNDING_BONUS_BIG + bare_wound_bonus = WOUNDING_BONUS_SMALL + armour_penetration = PIERCING_MINOR + min_reach = 2 + max_reach = 3 + sharpness = SHARP_POINTY + attack_verb = list("impaled", "gored", "stabbed") + hitsound = 'sound/weapons/pike.ogg' + attack_speed = MELEE_SPEED_SLOWEST + total_mass = TOTAL_MASS_MEDIEVAL_WEAPON * 2 + + // ------------ TRIDENT ------------ // [Reach Embed] /obj/item/twohanded/smithed/spear/trident name = "trident" diff --git a/modular_BD2/blacksmith/code/smithed_items.dm b/modular_BD2/blacksmith/code/smithed_items.dm index 6d407ca1072..5654072dff0 100644 --- a/modular_BD2/blacksmith/code/smithed_items.dm +++ b/modular_BD2/blacksmith/code/smithed_items.dm @@ -353,7 +353,7 @@ if(quality > 0) finalforreal.toolspeed = max(0.05,(1-(quality/10))) else - finalforreal.toolspeed *= max(1, (quality * -1)) + finalforreal.toolspeed *= max(1, (quality * -1)) finalitem = finalforreal ..() @@ -655,6 +655,25 @@ finalitem = finalforreal ..() + +// ------------ ZWEIHANDER ------------ // +/obj/item/smithing/zweiblade + name = "smithed zweihander blade" + desc = "Attach a sword handle." + icon_state = "zwei_smith" + finishingitem = SWORD_HANDLE + finalitem = /obj/item/twohanded/smithed/zweihander + +/obj/item/smithing/zweiblade/startfinish() + var/obj/item/twohanded/smithed/zweihander/finalforreal = new /obj/item/twohanded/smithed/zweihander(src) + finalforreal.force += QUALITY_MODIFIER + finalforreal.force_wielded = finalforreal.force*finalforreal.wielded_mult + finalforreal.force_unwielded = finalforreal.force + finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force_unwielded, force_wielded=finalforreal.force_wielded, icon_wielded="[icon_state]_wield") + finalitem = finalforreal + ..() + + // ------------ SCRAP BLADE ------------ // /obj/item/smithing/scrapblade name = "smithed scrap blade" @@ -752,6 +771,24 @@ finalitem = finalforreal ..() + +// ------------ PIKE ------------ // +/obj/item/smithing/pikehead + name = "smithed pikehead" + finalitem = /obj/item/twohanded/smithed/spear/pike + icon_state = "pike_smith" + +/obj/item/smithing/pikehead/startfinish() + var/obj/item/twohanded/smithed/spear/pike/finalforreal = new /obj/item/twohanded/smithed/spear/pike(src) + finalforreal.force += QUALITY_MODIFIER + finalforreal.force_wielded = finalforreal.force*finalforreal.wielded_mult + finalforreal.force_unwielded = finalforreal.force + finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force_unwielded, force_wielded=finalforreal.force_wielded, icon_wielded="[icon_state]_wield") + finalforreal.throwforce = finalforreal.force + finalitem = finalforreal + ..() + + // ------------ LEGION LANCE ------------ // /obj/item/smithing/lancehead name = "smithed lancehead" diff --git a/modular_BD2/blacksmith/icons/blacksmith.dmi b/modular_BD2/blacksmith/icons/blacksmith.dmi index 855e49b704d..5680ade3aac 100644 Binary files a/modular_BD2/blacksmith/icons/blacksmith.dmi and b/modular_BD2/blacksmith/icons/blacksmith.dmi differ diff --git a/modular_BD2/blacksmith/icons/onmob/64x64_lefthand.dmi b/modular_BD2/blacksmith/icons/onmob/64x64_lefthand.dmi index bddbae1582c..23768d9258e 100644 Binary files a/modular_BD2/blacksmith/icons/onmob/64x64_lefthand.dmi and b/modular_BD2/blacksmith/icons/onmob/64x64_lefthand.dmi differ diff --git a/modular_BD2/blacksmith/icons/onmob/64x64_righthand.dmi b/modular_BD2/blacksmith/icons/onmob/64x64_righthand.dmi index cb9c824a3df..c8203a3f497 100644 Binary files a/modular_BD2/blacksmith/icons/onmob/64x64_righthand.dmi and b/modular_BD2/blacksmith/icons/onmob/64x64_righthand.dmi differ diff --git a/modular_BD2/blacksmith/icons/onmob/lefthand.dmi b/modular_BD2/blacksmith/icons/onmob/lefthand.dmi index 0f4a0224612..9e031803727 100644 Binary files a/modular_BD2/blacksmith/icons/onmob/lefthand.dmi and b/modular_BD2/blacksmith/icons/onmob/lefthand.dmi differ diff --git a/modular_BD2/blacksmith/icons/onmob/righthand.dmi b/modular_BD2/blacksmith/icons/onmob/righthand.dmi index e588e230f49..baef37519ab 100644 Binary files a/modular_BD2/blacksmith/icons/onmob/righthand.dmi and b/modular_BD2/blacksmith/icons/onmob/righthand.dmi differ diff --git a/modular_BD2/blacksmith/icons/onmob/slot.dmi b/modular_BD2/blacksmith/icons/onmob/slot.dmi index fc2072e6ce1..876b51e4153 100644 Binary files a/modular_BD2/blacksmith/icons/onmob/slot.dmi and b/modular_BD2/blacksmith/icons/onmob/slot.dmi differ diff --git a/sound/weapons/pike.ogg b/sound/weapons/pike.ogg new file mode 100644 index 00000000000..6b2d6a950d0 Binary files /dev/null and b/sound/weapons/pike.ogg differ diff --git a/sound/weapons/zweihander.ogg b/sound/weapons/zweihander.ogg new file mode 100644 index 00000000000..852b806ced3 Binary files /dev/null and b/sound/weapons/zweihander.ogg differ