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